Fixes #3095 - Not all attributes if chats are indexed by elasticsearch (chat.name and tags are missing)
This commit is contained in:
parent
5d9ecee99c
commit
71dcde5876
5 changed files with 48 additions and 21 deletions
|
@ -8,6 +8,8 @@ class Chat::Session < ApplicationModel
|
|||
|
||||
# rubocop:disable Rails/InverseOf
|
||||
has_many :messages, class_name: 'Chat::Message', foreign_key: 'chat_session_id'
|
||||
belongs_to :user, class_name: 'User', optional: true
|
||||
belongs_to :chat, class_name: 'Chat'
|
||||
# rubocop:enable Rails/InverseOf
|
||||
|
||||
before_create :generate_session_id
|
||||
|
|
|
@ -2,9 +2,6 @@
|
|||
module Chat::Session::SearchIndex
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
# methods defined here are going to extend the class, not the instance of it
|
||||
class_methods do
|
||||
|
||||
=begin
|
||||
|
||||
lookup name of ref. objects
|
||||
|
@ -22,7 +19,7 @@ returns
|
|||
attributes = super
|
||||
return if !attributes
|
||||
|
||||
attributes[:tags] = tag_list
|
||||
attributes['tags'] = tag_list
|
||||
|
||||
messages = Chat::Message.where(chat_session_id: id)
|
||||
attributes['messages'] = []
|
||||
|
@ -36,6 +33,5 @@ returns
|
|||
|
||||
attributes
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
5
spec/factories/chat/session.rb
Normal file
5
spec/factories/chat/session.rb
Normal file
|
@ -0,0 +1,5 @@
|
|||
FactoryBot.define do
|
||||
factory :'chat/session' do
|
||||
chat_id { Chat.pluck(:id).sample }
|
||||
end
|
||||
end
|
24
spec/models/chat/session_spec.rb
Normal file
24
spec/models/chat/session_spec.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Chat::Session, type: :model do
|
||||
|
||||
describe '.search_index_attribute_lookup' do
|
||||
subject(:chat_session) { create(:'chat/session', user: chat_user, chat: chat) }
|
||||
|
||||
let(:chat) { create(:chat) }
|
||||
let(:chat_user) { create(:agent) }
|
||||
|
||||
it 'verify message attribute' do
|
||||
expect(chat_session.search_index_attribute_lookup['messages']).to eq []
|
||||
end
|
||||
|
||||
it 'verify user attribute' do
|
||||
expect(chat_session.search_index_attribute_lookup['user']['id']).to eq chat_user.id
|
||||
end
|
||||
|
||||
it 'verify chat attribute' do
|
||||
expect(chat_session.search_index_attribute_lookup['chat']).to eq chat.name
|
||||
end
|
||||
|
||||
end
|
||||
end
|
|
@ -595,7 +595,7 @@ RSpec.describe 'Monitoring', type: :request do
|
|||
expect(json_response['message']).to be_truthy
|
||||
expect(json_response['issues']).to be_truthy
|
||||
expect(json_response['healthy']).to eq(false)
|
||||
expect( json_response['message']).to eq("Failed to run background job #1 'SearchIndexJob' 1 time(s) with 1 attempt(s).")
|
||||
expect( json_response['message']).to eq("Failed to run background job #1 'SearchIndexAssociationsJob' 1 time(s) with 1 attempt(s).;Failed to run background job #2 'SearchIndexJob' 1 time(s) with 1 attempt(s).")
|
||||
|
||||
# add another job
|
||||
manual_added = SearchIndexJob.perform_later('Ticket', 1)
|
||||
|
@ -609,7 +609,7 @@ RSpec.describe 'Monitoring', type: :request do
|
|||
expect(json_response['message']).to be_truthy
|
||||
expect(json_response['issues']).to be_truthy
|
||||
expect(json_response['healthy']).to eq(false)
|
||||
expect( json_response['message']).to eq("Failed to run background job #1 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
expect( json_response['message']).to eq("Failed to run background job #1 'SearchIndexAssociationsJob' 1 time(s) with 1 attempt(s).;Failed to run background job #2 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
|
||||
# add another job
|
||||
dummy_class = Class.new(ApplicationJob) do
|
||||
|
@ -630,7 +630,7 @@ RSpec.describe 'Monitoring', type: :request do
|
|||
expect(json_response['message']).to be_truthy
|
||||
expect(json_response['issues']).to be_truthy
|
||||
expect(json_response['healthy']).to eq(false)
|
||||
expect( json_response['message']).to eq("Failed to run background job #1 'Object' 1 time(s) with 5 attempt(s).;Failed to run background job #2 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
expect(json_response['message']).to eq("Failed to run background job #1 'Object' 1 time(s) with 5 attempt(s).;Failed to run background job #2 'SearchIndexAssociationsJob' 1 time(s) with 1 attempt(s).;Failed to run background job #3 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
|
||||
# reset settings
|
||||
Setting.set('es_url', prev_es_config)
|
||||
|
@ -649,7 +649,7 @@ RSpec.describe 'Monitoring', type: :request do
|
|||
expect(json_response['message']).to be_truthy
|
||||
expect(json_response['issues']).to be_truthy
|
||||
expect(json_response['healthy']).to eq(false)
|
||||
expect(json_response['message']).to eq("13 failing background jobs;Failed to run background job #1 'Object' 8 time(s) with 40 attempt(s).;Failed to run background job #2 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
expect(json_response['message']).to eq("14 failing background jobs;Failed to run background job #1 'Object' 7 time(s) with 35 attempt(s).;Failed to run background job #2 'SearchIndexAssociationsJob' 1 time(s) with 1 attempt(s).;Failed to run background job #3 'SearchIndexJob' 2 time(s) with 11 attempt(s).")
|
||||
|
||||
# cleanup
|
||||
Delayed::Job.delete_all
|
||||
|
|
Loading…
Reference in a new issue