Fixes #3234 - Renaming a Group should trigger reindexing.
This commit is contained in:
parent
d0b5cbfe4b
commit
0eac6f0fd9
5 changed files with 75 additions and 3 deletions
|
@ -63,14 +63,23 @@ returns
|
||||||
=end
|
=end
|
||||||
|
|
||||||
def search_index_update_associations_full
|
def search_index_update_associations_full
|
||||||
return if self.class.to_s != 'Organization'
|
update_class = {
|
||||||
|
'Organization' => :organization_id,
|
||||||
|
'Group' => :group_id,
|
||||||
|
'Ticket::State' => :state_id,
|
||||||
|
'Ticket::Priority' => :priority_id,
|
||||||
|
}
|
||||||
|
update_column = update_class[self.class.to_s]
|
||||||
|
return if update_column.blank?
|
||||||
|
|
||||||
# reindex all organization tickets for the given organization id
|
# reindex all object related tickets for the given object id
|
||||||
# we can not use the delta function for this because of the excluded
|
# we can not use the delta function for this because of the excluded
|
||||||
# ticket article attachments. see explain in delta function
|
# ticket article attachments. see explain in delta function
|
||||||
Ticket.select('id').where(organization_id: id).order(id: :desc).limit(10_000).pluck(:id).each do |ticket_id|
|
Ticket.select('id').where(update_column => id).order(id: :desc).limit(10_000).pluck(:id).each do |ticket_id|
|
||||||
SearchIndexJob.perform_later('Ticket', ticket_id)
|
SearchIndexJob.perform_later('Ticket', ticket_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
=begin
|
=begin
|
||||||
|
|
|
@ -9,6 +9,7 @@ class Group < ApplicationModel
|
||||||
include HasObjectManagerAttributesValidation
|
include HasObjectManagerAttributesValidation
|
||||||
include HasCollectionUpdate
|
include HasCollectionUpdate
|
||||||
include HasTicketCreateScreenImpact
|
include HasTicketCreateScreenImpact
|
||||||
|
include HasSearchIndexBackend
|
||||||
|
|
||||||
belongs_to :email_address, optional: true
|
belongs_to :email_address, optional: true
|
||||||
belongs_to :signature, optional: true
|
belongs_to :signature, optional: true
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
class Ticket::Priority < ApplicationModel
|
class Ticket::Priority < ApplicationModel
|
||||||
include CanBeImported
|
include CanBeImported
|
||||||
include HasCollectionUpdate
|
include HasCollectionUpdate
|
||||||
|
include HasSearchIndexBackend
|
||||||
|
|
||||||
self.table_name = 'ticket_priorities'
|
self.table_name = 'ticket_priorities'
|
||||||
validates :name, presence: true
|
validates :name, presence: true
|
||||||
|
|
|
@ -3,6 +3,7 @@ class Ticket::State < ApplicationModel
|
||||||
include CanBeImported
|
include CanBeImported
|
||||||
include ChecksLatestChangeObserved
|
include ChecksLatestChangeObserved
|
||||||
include HasCollectionUpdate
|
include HasCollectionUpdate
|
||||||
|
include HasSearchIndexBackend
|
||||||
|
|
||||||
belongs_to :state_type, class_name: 'Ticket::StateType', inverse_of: :states, optional: true
|
belongs_to :state_type, class_name: 'Ticket::StateType', inverse_of: :states, optional: true
|
||||||
belongs_to :next_state, class_name: 'Ticket::State', optional: true
|
belongs_to :next_state, class_name: 'Ticket::State', optional: true
|
||||||
|
|
|
@ -426,6 +426,66 @@ RSpec.describe 'Search', type: :request, searchindex: true do
|
||||||
expect(json_response['assets']['Ticket'][ticket_nested.id.to_s]).to be_truthy
|
expect(json_response['assets']['Ticket'][ticket_nested.id.to_s]).to be_truthy
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'does find the ticket by group name even if the group name changes' do
|
||||||
|
authenticated_as(agent)
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && group.name:ultrasupport" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket']).to be_falsey
|
||||||
|
expect(group).not_to eq('ultrasupport')
|
||||||
|
|
||||||
|
group.update(name: 'ultrasupport')
|
||||||
|
Scheduler.worker(true)
|
||||||
|
SearchIndexBackend.refresh
|
||||||
|
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && group.name:ultrasupport" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket'][ticket1.id.to_s]).to be_truthy
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does find the ticket by state name even if the state name changes' do
|
||||||
|
authenticated_as(agent)
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && state.name:ultrastate" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket']).to be_falsey
|
||||||
|
expect(ticket1.state.name).not_to eq('ultrastate')
|
||||||
|
|
||||||
|
ticket1.state.update(name: 'ultrastate')
|
||||||
|
Scheduler.worker(true)
|
||||||
|
SearchIndexBackend.refresh
|
||||||
|
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && state.name:ultrastate" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket'][ticket1.id.to_s]).to be_truthy
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does find the ticket by priority name even if the priority name changes' do
|
||||||
|
authenticated_as(agent)
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && priority.name:ultrapriority" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket']).to be_falsey
|
||||||
|
expect(ticket1.priority.name).not_to eq('ultrapriority')
|
||||||
|
|
||||||
|
ticket1.priority.update(name: 'ultrapriority')
|
||||||
|
Scheduler.worker(true)
|
||||||
|
SearchIndexBackend.refresh
|
||||||
|
|
||||||
|
post '/api/v1/search/Ticket', params: { query: "number:#{ticket1.number} && priority.name:ultrapriority" }, as: :json
|
||||||
|
expect(response).to have_http_status(:ok)
|
||||||
|
expect(json_response).to be_a_kind_of(Hash)
|
||||||
|
expect(json_response).to be_truthy
|
||||||
|
expect(json_response['assets']['Ticket'][ticket1.id.to_s]).to be_truthy
|
||||||
|
end
|
||||||
|
|
||||||
it 'does find the ticket by attachment even after ticket reindex' do
|
it 'does find the ticket by attachment even after ticket reindex' do
|
||||||
params = {
|
params = {
|
||||||
query: 'text66',
|
query: 'text66',
|
||||||
|
|
Loading…
Reference in a new issue