Fixed issue #904 - Merged Ticket escalated.
This commit is contained in:
parent
9cc1f8b564
commit
55a31084bc
2 changed files with 111 additions and 9 deletions
|
@ -18,8 +18,10 @@ class Ticket < ApplicationModel
|
||||||
extend Ticket::Search
|
extend Ticket::Search
|
||||||
|
|
||||||
store :preferences
|
store :preferences
|
||||||
before_create :check_generate, :check_defaults, :check_title, :check_escalation_update, :set_default_state, :set_default_priority
|
before_create :check_generate, :check_defaults, :check_title, :set_default_state, :set_default_priority
|
||||||
before_update :check_defaults, :check_title, :reset_pending_time, :check_escalation_update
|
after_create :check_escalation_update
|
||||||
|
before_update :check_defaults, :check_title, :reset_pending_time
|
||||||
|
after_update :check_escalation_update
|
||||||
before_destroy :destroy_dependencies
|
before_destroy :destroy_dependencies
|
||||||
|
|
||||||
validates :group_id, presence: true
|
validates :group_id, presence: true
|
||||||
|
@ -929,7 +931,7 @@ result
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_escalation_update
|
def check_escalation_update
|
||||||
escalation_calculation_int
|
escalation_calculation
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,6 @@ class TicketSlaTest < ActiveSupport::TestCase
|
||||||
test 'ticket sla' do
|
test 'ticket sla' do
|
||||||
|
|
||||||
# cleanup
|
# cleanup
|
||||||
delete = Sla.destroy_all
|
|
||||||
assert(delete, 'sla destroy_all')
|
|
||||||
delete = Ticket.destroy_all
|
delete = Ticket.destroy_all
|
||||||
assert(delete, 'ticket destroy_all')
|
assert(delete, 'ticket destroy_all')
|
||||||
|
|
||||||
|
@ -499,12 +497,114 @@ class TicketSlaTest < ActiveSupport::TestCase
|
||||||
assert_equal(ticket.last_contact_agent_at.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent_at verify - inbound')
|
assert_equal(ticket.last_contact_agent_at.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent_at verify - inbound')
|
||||||
assert_equal(ticket.first_response_at.to_s, article_outbound.created_at.to_s, 'ticket.first_response_at verify - inbound')
|
assert_equal(ticket.first_response_at.to_s, article_outbound.created_at.to_s, 'ticket.first_response_at verify - inbound')
|
||||||
assert_nil(ticket.close_at, 'ticket.close_at verify - inbound')
|
assert_nil(ticket.close_at, 'ticket.close_at verify - inbound')
|
||||||
|
end
|
||||||
|
|
||||||
delete = sla.destroy
|
test 'ticket sla + selector' do
|
||||||
assert(delete, 'sla destroy')
|
|
||||||
|
# cleanup
|
||||||
|
delete = Ticket.destroy_all
|
||||||
|
assert(delete, 'ticket destroy_all')
|
||||||
|
|
||||||
|
calendar1 = Calendar.create_or_update(
|
||||||
|
name: 'EU 1',
|
||||||
|
timezone: 'Europe/Berlin',
|
||||||
|
business_hours: {
|
||||||
|
mon: {
|
||||||
|
active: true,
|
||||||
|
timeframes: [ ['09:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
tue: {
|
||||||
|
active: true,
|
||||||
|
timeframes: [ ['09:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
wed: {
|
||||||
|
active: true,
|
||||||
|
timeframes: [ ['09:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
thu: {
|
||||||
|
active: true,
|
||||||
|
timeframes: [ ['09:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
fri: {
|
||||||
|
active: true,
|
||||||
|
timeframes: [ ['09:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
sat: {
|
||||||
|
active: false,
|
||||||
|
timeframes: [ ['08:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
sun: {
|
||||||
|
active: false,
|
||||||
|
timeframes: [ ['08:00', '17:00'] ]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
default: true,
|
||||||
|
ical_url: nil,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
sla = Sla.create_or_update(
|
||||||
|
name: 'test sla 1',
|
||||||
|
condition: {
|
||||||
|
'ticket.priority_id' => {
|
||||||
|
operator: 'is',
|
||||||
|
value: %w(2),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
first_response_time: 60,
|
||||||
|
update_time: 180,
|
||||||
|
solution_time: 240,
|
||||||
|
calendar_id: calendar1.id,
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
ticket = Ticket.create!(
|
||||||
|
title: 'some title äöüß',
|
||||||
|
group: Group.lookup(name: 'Users'),
|
||||||
|
customer_id: 2,
|
||||||
|
state: Ticket::State.lookup(name: 'new'),
|
||||||
|
priority: Ticket::Priority.lookup(name: '2 normal'),
|
||||||
|
created_at: '2013-03-21 09:30:00 UTC',
|
||||||
|
updated_at: '2013-03-21 09:30:00 UTC',
|
||||||
|
updated_by_id: 1,
|
||||||
|
created_by_id: 1,
|
||||||
|
)
|
||||||
|
ticket.reload
|
||||||
|
|
||||||
|
assert_equal(ticket.escalation_at.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.escalation_at')
|
||||||
|
assert_equal(ticket.first_response_escalation_at.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escalation_at')
|
||||||
|
assert_nil(ticket.first_response_at, 'ticket.first_response_at')
|
||||||
|
assert_nil(ticket.first_response_in_min, 'ticket.first_response_in_min')
|
||||||
|
assert_nil(ticket.first_response_diff_in_min, 'ticket.first_response_diff_in_min')
|
||||||
|
|
||||||
|
assert_equal(ticket.update_escalation_at.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_escalation_at')
|
||||||
|
assert_nil(ticket.update_in_min, 'ticket.update_in_min')
|
||||||
|
assert_nil(ticket.update_diff_in_min, 'ticket.update_diff_in_min')
|
||||||
|
|
||||||
|
assert_equal(ticket.close_escalation_at.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_escalation_at')
|
||||||
|
assert_nil(ticket.close_in_min, 'ticket.close_in_min')
|
||||||
|
assert_nil(ticket.close_diff_in_min, 'ticket.close_diff_in_min')
|
||||||
|
|
||||||
|
ticket.priority = Ticket::Priority.lookup(name: '1 low')
|
||||||
|
ticket.save!
|
||||||
|
ticket.reload
|
||||||
|
|
||||||
|
assert_nil(ticket.escalation_at, 'ticket.escalation_at')
|
||||||
|
assert_nil(ticket.first_response_escalation_at, 'ticket.first_response_escalation_at')
|
||||||
|
assert_nil(ticket.first_response_at, 'ticket.first_response_at')
|
||||||
|
assert_nil(ticket.first_response_in_min, 'ticket.first_response_in_min')
|
||||||
|
assert_nil(ticket.first_response_diff_in_min, 'ticket.first_response_diff_in_min')
|
||||||
|
|
||||||
|
assert_nil(ticket.update_escalation_at, 'ticket.update_escalation_at')
|
||||||
|
assert_nil(ticket.update_in_min, 'ticket.update_in_min')
|
||||||
|
assert_nil(ticket.update_diff_in_min, 'ticket.update_diff_in_min')
|
||||||
|
|
||||||
|
assert_nil(ticket.close_escalation_at, 'ticket.close_escalation_at')
|
||||||
|
assert_nil(ticket.close_in_min, 'ticket.close_in_min')
|
||||||
|
assert_nil(ticket.close_diff_in_min, 'ticket.close_diff_in_min')
|
||||||
|
|
||||||
delete = sla.destroy
|
|
||||||
assert(delete, 'sla destroy')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test 'ticket sla + timezone + holiday' do
|
test 'ticket sla + timezone + holiday' do
|
||||||
|
|
Loading…
Reference in a new issue