Skip to content

Commit

Permalink
Fixes #4902 - OTRS import fails when default closed states at the OTR…
Browse files Browse the repository at this point in the history
…S side not exist.
  • Loading branch information
dominikklein committed Oct 24, 2023
1 parent a1de05d commit c4a2d02
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/import/otrs/state_factory.rb
Expand Up @@ -39,7 +39,7 @@ def update_state_with_next_state_id(state, close_state_name)
state.next_state_id = ::Ticket::State.find_by(name: close_state_name)&.id

if state.next_state_id.blank?
state.next_state_id = ::Ticket::StateType.find_by(name: 'closed')&.first&.id
state.next_state_id = ::Ticket::State.by_category(:closed)&.first&.id
end

state.save
Expand Down
10 changes: 10 additions & 0 deletions spec/fixtures/files/import/otrs/state/closed_other.json
@@ -0,0 +1,10 @@
{
"ChangeTime": "2014-04-28 10:53:18",
"ID": "2",
"ValidID": "1",
"TypeID": "3",
"CreateTime": "2014-04-28 10:53:18",
"TypeName": "closed",
"Comment": "Ticket is closed other.",
"Name": "closed other"
}
22 changes: 22 additions & 0 deletions spec/lib/import/otrs/state_factory_spec.rb
Expand Up @@ -119,6 +119,28 @@ def load_state_json(file)
expect(state_pending_auto_close_p.next_state_id).to eq(Ticket::State.find_by(name: 'closed successful').id)
end

context 'when some default otrs states not exists' do
let(:state_backend_param) do
states = %w[new open merged pending_reminder pending_auto_close_p pending_auto_close_n pending_auto_close_p removed closed_other]

state_backend_param = []
states.each do |state|
state_backend_param.push(load_state_json(state))
end
state_backend_param
end

it 'use fallback for next state for pending auto states' do
described_class.import(state_backend_param)

state_pending_auto_close_n = Ticket::State.find_by(name: 'pending auto close-')
state_pending_auto_close_p = Ticket::State.find_by(name: 'pending auto close+')

expect(state_pending_auto_close_n.next_state_id).to eq(Ticket::State.find_by(name: 'closed other').id)
expect(state_pending_auto_close_p.next_state_id).to eq(Ticket::State.find_by(name: 'closed other').id)
end
end

context 'changing Ticket::State IDs' do
it 'updates Overviews' do
name = 'My Pending Reached Tickets'
Expand Down

0 comments on commit c4a2d02

Please sign in to comment.