From 9169d70e11228d0f34f783174bbf838a9d95f921 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Tue, 2 Apr 2013 15:03:01 +0200 Subject: [PATCH] Check first response time on phone tickets. --- app/models/observer/ticket/first_response.rb | 8 +++- test/unit/ticket_test.rb | 41 +++++++++++++++++++- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/app/models/observer/ticket/first_response.rb b/app/models/observer/ticket/first_response.rb index a5a6f25fa..8e291273b 100644 --- a/app/models/observer/ticket/first_response.rb +++ b/app/models/observer/ticket/first_response.rb @@ -11,10 +11,14 @@ class Observer::Ticket::FirstResponse < ActiveRecord::Observer return true if record.internal # if sender is not agent - return true if Ticket::Article::Sender.lookup( :id => record.ticket_article_sender_id ).name != 'Agent' + sender = Ticket::Article::Sender.lookup( :id => record.ticket_article_sender_id ) + type = Ticket::Article::Type.lookup( :id => record.ticket_article_type_id ) + if sender.name != 'Agent' && type.name !~ /^phone/ + return true + end # if article is a message to customer - return true if !Ticket::Article::Type.lookup( :id => record.ticket_article_type_id ).communication + return true if !type.communication # check if first_response is already set return true if record.ticket.first_response diff --git a/test/unit/ticket_test.rb b/test/unit/ticket_test.rb index da3baff53..28c183704 100644 --- a/test/unit/ticket_test.rb +++ b/test/unit/ticket_test.rb @@ -382,11 +382,50 @@ class TicketTest < ActiveSupport::TestCase assert_equal( ticket.first_response_diff_in_min, 60, 'ticket.first_response_diff_in_min verify - outbound' ) assert_equal( ticket.close_time, nil, 'ticket.close_time verify - outbound' ) - delete = ticket.destroy assert( delete, "ticket destroy" ) + ticket = Ticket.create( + :title => 'some title äöüß', + :group => Group.lookup( :name => 'Users'), + :customer_id => 2, + :ticket_state => Ticket::State.lookup( :name => 'new' ), + :ticket_priority => Ticket::Priority.lookup( :name => '2 normal' ), + :updated_by_id => 1, + :created_by_id => 1, + :created_at => '2013-03-28 23:49:00 UTC', + :updated_at => '2013-03-28 23:49:00 UTC', + ) + assert( ticket, "ticket created" ) + + assert_equal( ticket.title, 'some title äöüß', 'ticket.title verify' ) + assert_equal( ticket.group.name, 'Users', 'ticket.group verify' ) + assert_equal( ticket.ticket_state.name, 'new', 'ticket.state verify' ) + + # create inbound article + article_inbound = Ticket::Article.create( + :ticket_id => ticket.id, + :from => 'some_sender@example.com', + :subject => 'some subject', + :message_id => 'some@id', + :body => 'some message', + :internal => false, + :ticket_article_sender => Ticket::Article::Sender.where(:name => 'Customer').first, + :ticket_article_type => Ticket::Article::Type.where(:name => 'phone').first, + :updated_by_id => 1, + :created_by_id => 1, + :created_at => '2013-03-28 23:49:00 UTC', + :updated_at => '2013-03-28 23:49:00 UTC', + ) + ticket = Ticket.find(ticket.id) + assert_equal( ticket.article_count, 1, 'ticket.article_count verify - inbound' ) + assert_equal( ticket.last_contact.to_s, article_inbound.created_at.to_s, 'ticket.last_contact verify - inbound' ) + assert_equal( ticket.last_contact_customer.to_s, article_inbound.created_at.to_s, 'ticket.last_contact_customer verify - inbound' ) + assert_equal( ticket.last_contact_agent, nil, 'ticket.last_contact_agent verify - inbound' ) + assert_equal( ticket.first_response.to_s, article_inbound.created_at.to_s, 'ticket.first_response verify - inbound' ) + assert_equal( ticket.close_time, nil, 'ticket.close_time verify - inbound' ) + delete = sla.destroy assert( delete, "sla destroy" )