Refactoring search index backend.

This commit is contained in:
Martin Edenhofer 2016-07-06 08:13:44 +02:00
parent f6d0fb3596
commit 7f1ecaa67e
10 changed files with 473 additions and 375 deletions

View file

@ -17,27 +17,8 @@ returns
def search_index_update_backend def search_index_update_backend
return if !self.class.search_index_support_config return if !self.class.search_index_support_config
# default ignored attributes
ignore_attributes = {}
if self.class.search_index_support_config[:ignore_attributes]
self.class.search_index_support_config[:ignore_attributes].each { |key, value|
ignore_attributes[key] = value
}
end
# for performance reasons, Model.search_index_reload will only collect if of object
# get whole data here
data = self.class.find(id)
# remove ignored attributes
attributes = data.attributes
ignore_attributes.each { |key, value|
next if value != true
attributes.delete(key.to_s)
}
# fill up with search data # fill up with search data
attributes = search_index_attribute_lookup(attributes, data) attributes = search_index_attribute_lookup
return if !attributes return if !attributes
# update backend # update backend
@ -53,16 +34,20 @@ get data to store in search index
returns returns
result = true # false result = {
attribute1: 'some value',
attribute2: ['value 1', 'value 2'],
...
}
=end =end
def search_index_data def search_index_data
attributes = {} attributes = {}
%w(name note).each { |key| %w(name note).each { |key|
if self[key] && !self[key].empty? next if !self[key]
next if self[key].respond_to?('empty?') && self[key].empty?
attributes[key] = self[key] attributes[key] = self[key]
end
} }
return if attributes.empty? return if attributes.empty?
attributes attributes
@ -74,8 +59,8 @@ returns
lookup name of ref. objects lookup name of ref. objects
ticket = Ticket.find(123) ticket = Ticket.find(3)
attributes = ticket.search_index_attribute_lookup(attributes, Ticket) attributes = ticket.search_index_attribute_lookup
returns returns
@ -83,10 +68,10 @@ returns
=end =end
def search_index_attribute_lookup(attributes, ref_object) def search_index_attribute_lookup
attributes_new = {} attributes = self.attributes
attributes.each { |key, value| self.attributes.each { |key, value|
next if !value next if !value
# get attribute name # get attribute name
@ -96,10 +81,10 @@ returns
attribute_name = attribute_name[ 0, attribute_name.length - 3 ] attribute_name = attribute_name[ 0, attribute_name.length - 3 ]
# check if attribute method exists # check if attribute method exists
next if !ref_object.respond_to?(attribute_name) next if !respond_to?(attribute_name)
# check if method has own class # check if method has own class
relation_class = ref_object.send(attribute_name).class relation_class = send(attribute_name).class
next if !relation_class next if !relation_class
# lookup ref object # lookup ref object
@ -111,11 +96,34 @@ returns
if relation_model.respond_to?('search_index_data') if relation_model.respond_to?('search_index_data')
value = relation_model.send('search_index_data') value = relation_model.send('search_index_data')
end end
if relation_model.respond_to?('name')
value = relation_model.send('name')
end
next if !value next if !value
# save name of ref object # save name of ref object
attributes_new[ attribute_name ] = value attributes[ attribute_name ] = value
} }
attributes_new.merge(attributes)
# default ignored attributes
config = self.class.search_index_support_config
if config
ignore_attributes = {}
if config[:ignore_attributes]
config[:ignore_attributes].each { |key, value|
ignore_attributes[key] = value
}
end
# remove ignored attributes
ignore_attributes.each { |key, value|
next if value != true
attributes.delete(key.to_s)
}
end
attributes
end end
end end

View file

@ -1,7 +1,7 @@
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/ # Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class Observer::Transaction < ActiveRecord::Observer class Observer::Transaction < ActiveRecord::Observer
observe :ticket, 'ticket::_article', :user, :organization observe :ticket, 'ticket::_article', :user, :organization, :tag
def self.commit(params = {}) def self.commit(params = {})
@ -206,13 +206,20 @@ class Observer::Transaction < ActiveRecord::Observer
# do not send anything if nothing has changed # do not send anything if nothing has changed
return if real_changes.empty? return if real_changes.empty?
changed_by_id = nil
if record.respond_to?('updated_by_id')
changed_by_id = record.updated_by_id
else
changed_by_id = record.created_by_id
end
e = { e = {
object: record.class.name, object: record.class.name,
type: 'update', type: 'update',
data: record, data: record,
changes: real_changes, changes: real_changes,
id: record.id, id: record.id,
user_id: record.updated_by_id, user_id: changed_by_id,
} }
EventBuffer.add('transaction', e) EventBuffer.add('transaction', e)
end end

View file

@ -5,6 +5,7 @@ class Organization < ApplicationModel
load 'organization/assets.rb' load 'organization/assets.rb'
include Organization::Assets include Organization::Assets
extend Organization::Search extend Organization::Search
load 'organization/search_index.rb'
include Organization::SearchIndex include Organization::SearchIndex
has_and_belongs_to_many :users has_and_belongs_to_many :users

View file

@ -8,7 +8,7 @@ class Organization
lookup name of ref. objects lookup name of ref. objects
organization = Organization.find(123) organization = Organization.find(123)
attributes = organization.search_index_attribute_lookup(attributes, Organization) attributes = organization.search_index_attribute_lookup
returns returns
@ -16,47 +16,17 @@ returns
=end =end
def search_index_attribute_lookup(attributes, ref_object) def search_index_attribute_lookup
attributes_new = {} attributes = super
attributes.each { |key, value|
next if !value
# get attribute name # add org members for search index data
attribute_name = key.to_s attributes['members'] = []
next if attribute_name[-3, 3] != '_id'
attribute_name = attribute_name[ 0, attribute_name.length - 3 ]
# check if attribute method exists
next if !ref_object.respond_to?(attribute_name)
# check if method has own class
relation_class = ref_object.send(attribute_name).class
next if !relation_class
# lookup ref object
relation_model = relation_class.lookup(id: value)
next if !relation_model
# get name of ref object
value = nil
if relation_model.respond_to?('search_index_data')
value = relation_model.send('search_index_data')
end
next if !value
# save name of ref object
attributes_new[ attribute_name ] = value
attributes.delete(key)
}
# add org member for search index data
attributes['member'] = []
users = User.where(organization_id: id) users = User.where(organization_id: id)
users.each { |user| users.each { |user|
attributes['member'].push user.search_index_data attributes['members'].push user.search_index_data
} }
attributes_new.merge(attributes) attributes
end end
end end
end end

View file

@ -108,10 +108,10 @@ returns
.where('groups.active = ?', true) .where('groups.active = ?', true)
group_condition = [] group_condition = []
groups.each { |group| groups.each { |group|
group_condition.push group.name group_condition.push group.id
} }
access_condition = { access_condition = {
'query_string' => { 'default_field' => 'Ticket.group.name', 'query' => "\"#{group_condition.join('" OR "')}\"" } 'query_string' => { 'default_field' => 'Ticket.group_id', 'query' => "\"#{group_condition.join('" OR "')}\"" }
} }
else else
access_condition = if !current_user.organization || ( !current_user.organization.shared || current_user.organization.shared == false ) access_condition = if !current_user.organization || ( !current_user.organization.shared || current_user.organization.shared == false )

View file

@ -3,48 +3,28 @@ module Ticket::SearchIndex
=begin =begin
build and send data for search index to backend lookup name of ref. objects
ticket = Ticket.find(123) ticket = Ticket.find(123)
result = ticket.search_index_update_backend result = ticket.search_index_attribute_lookup
returns returns
result = true # false attributes # object with lookup data
=end =end
def search_index_update_backend def search_index_attribute_lookup
return if !self.class.search_index_support_config attributes = super
return if !attributes
# default ignored attributes
ignore_attributes = {}
if self.class.search_index_support_config[:ignore_attributes]
self.class.search_index_support_config[:ignore_attributes].each { |key, value|
ignore_attributes[key] = value
}
end
# for performance reasons, Model.search_index_reload will only collect if of object
# get whole data here
ticket = self.class.find(id)
# remove ignored attributes
attributes = ticket.attributes
ignore_attributes.each { |key, value|
next if value != true
attributes.delete( key.to_s )
}
# collect article data
# add tags # add tags
tags = Tag.tag_list( object: 'Ticket', o_id: id ) tags = Tag.tag_list(object: 'Ticket', o_id: id)
if tags && !tags.empty? if tags && !tags.empty?
attributes[:tag] = tags attributes[:tag] = tags
end end
# lookup attributes of ref. objects (normally name and note)
attributes = search_index_attribute_lookup( attributes, ticket )
# list ignored file extentions # list ignored file extentions
attachments_ignore = Setting.get('es_attachment_ignore') || [ '.png', '.jpg', '.jpeg', '.mpeg', '.mpg', '.mov', '.bin', '.exe' ] attachments_ignore = Setting.get('es_attachment_ignore') || [ '.png', '.jpg', '.jpeg', '.mpeg', '.mpg', '.mov', '.bin', '.exe' ]
@ -52,7 +32,7 @@ returns
attachment_max_size_in_mb = Setting.get('es_attachment_max_size_in_mb') || 40 attachment_max_size_in_mb = Setting.get('es_attachment_max_size_in_mb') || 40
# collect article data # collect article data
articles = Ticket::Article.where( ticket_id: id ) articles = Ticket::Article.where(ticket_id: id)
attributes['articles'] = [] attributes['articles'] = []
articles.each { |article| articles.each { |article|
article_attributes = article.attributes article_attributes = article.attributes
@ -60,11 +40,11 @@ returns
# remove note needed attributes # remove note needed attributes
ignore = %w(message_id_md5) ignore = %w(message_id_md5)
ignore.each { |attribute| ignore.each { |attribute|
article_attributes.delete( attribute ) article_attributes.delete(attribute)
} }
# lookup attributes of ref. objects (normally name and note) # lookup attributes of ref. objects (normally name and note)
article_attributes = search_index_attribute_lookup( article_attributes, article ) article_attributes = article.search_index_attribute_lookup
# index raw text body # index raw text body
if article_attributes['content_type'] && article_attributes['content_type'] == 'text/html' && article_attributes['body'] if article_attributes['content_type'] && article_attributes['content_type'] == 'text/html' && article_attributes['body']
@ -87,18 +67,18 @@ returns
filename_extention = attachment.filename.downcase filename_extention = attachment.filename.downcase
filename_extention.gsub!(/^.*(\..+?)$/, '\\1') filename_extention.gsub!(/^.*(\..+?)$/, '\\1')
next if attachments_ignore.include?( filename_extention.downcase ) next if attachments_ignore.include?(filename_extention.downcase)
data = { data = {
'_name' => attachment.filename, '_name' => attachment.filename,
'_content' => Base64.encode64( attachment.content ) '_content' => Base64.encode64(attachment.content)
} }
article_attributes['attachments'].push data article_attributes['attachments'].push data
} }
attributes['articles'].push article_attributes attributes['articles'].push article_attributes
} }
return if !attributes attributes
SearchIndexBackend.add(self.class.to_s, attributes)
end end
end end

View file

@ -28,6 +28,8 @@ class User < ApplicationModel
load 'user/assets.rb' load 'user/assets.rb'
include User::Assets include User::Assets
extend User::Search extend User::Search
load 'user/search_index.rb'
include User::SearchIndex
before_create :check_name, :check_email, :check_login, :check_password, :check_preferences_default before_create :check_name, :check_email, :check_login, :check_password, :check_preferences_default
before_update :check_password, :check_email, :check_login, :check_preferences_default before_update :check_password, :check_email, :check_login, :check_preferences_default

View file

@ -0,0 +1,50 @@
# Copyright (C) 2012-2014 Zammad Foundation, http://zammad-foundation.org/
class User
module SearchIndex
=begin
get data to store in search index
user = User.find(2)
result = user.search_index_data
returns
result = {
attribute1: 'some value',
attribute2: ['value 1', 'value 2'],
...
}
=end
def search_index_data
attributes = {}
self.attributes.each { |key, value|
next if key == 'created_at'
next if key == 'updated_at'
next if key == 'created_by_id'
next if key == 'updated_by_id'
next if key == 'preferences'
next if key == 'password'
next if !value
next if value.respond_to?('empty?') && value.empty?
attributes[key] = value
}
return if attributes.empty?
if attributes['organization_id']
organization = Organization.lookup(id: attributes['organization_id'])
if organization
attributes['organization'] = organization.name
attributes['organization_ref'] = organization.search_index_data
end
end
attributes
end
end
end

View file

@ -52,6 +52,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
roles = Role.where(name: 'Customer') roles = Role.where(name: 'Customer')
organization1 = Organization.create_if_not_exists( organization1 = Organization.create_if_not_exists(
name: 'Customer Organization Update', name: 'Customer Organization Update',
note: 'some note',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
@ -93,8 +94,87 @@ class ElasticsearchTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
# check search attributes
test 'a - objects' do
# user
attributes = agent.search_index_data
assert_equal('E', attributes['firstname'])
assert_equal('S', attributes['lastname'])
assert_equal('es-agent@example.com', attributes['email'])
assert_not(attributes['password'])
assert_not(attributes['organization'])
attributes = agent.search_index_attribute_lookup
assert_equal('E', attributes['firstname'])
assert_equal('S', attributes['lastname'])
assert_equal('es-agent@example.com', attributes['email'])
assert_not(attributes['password'])
assert_not(attributes['organization'])
# organization
attributes = organization1.search_index_data
assert_equal('Customer Organization Update', attributes['name'])
assert_equal('some note', attributes['note'])
assert_not(attributes['members'])
attributes = organization1.search_index_attribute_lookup
assert_equal('Customer Organization Update', attributes['name'])
assert_equal('some note', attributes['note'])
assert(attributes['members'])
# ticket/article
ticket1 = Ticket.create(
title: 'some title äöüß',
group: Group.lookup(name: 'Users'),
customer_id: customer1.id,
state: Ticket::State.lookup(name: 'new'),
priority: Ticket::Priority.lookup(name: '2 normal'),
updated_by_id: 1,
created_by_id: 1,
)
article1 = Ticket::Article.create(
ticket_id: ticket1.id,
from: 'some_sender@example.com',
to: 'some_recipient@example.com',
subject: 'some subject',
message_id: 'some@id',
body: 'some message',
internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first,
type: Ticket::Article::Type.where(name: 'email').first,
updated_by_id: 1,
created_by_id: 1,
)
attributes = ticket1.search_index_attribute_lookup
assert_equal('Users', attributes['group'])
assert_equal('new', attributes['state'])
assert_equal('2 normal', attributes['priority'])
assert_equal('ES', attributes['customer']['firstname'])
assert_equal('Customer1', attributes['customer']['lastname'])
assert_equal('es-customer1@example.com', attributes['customer']['email'])
assert_not(attributes['customer']['password'])
assert_equal('Customer Organization Update', attributes['customer']['organization'])
assert_equal('-', attributes['owner']['login'])
assert_equal('-', attributes['owner']['firstname'])
assert_not(attributes['owner']['password'])
assert_not(attributes['owner']['organization'])
ticket1.destroy
# execute background jobs
Scheduler.worker(true)
end
# check tickets and search it # check tickets and search it
test 'a - tickets' do test 'b - tickets' do
system('rake searchindex:rebuild')
ticket1 = Ticket.create( ticket1 = Ticket.create(
title: "some title\n äöüß", title: "some title\n äöüß",
@ -398,7 +478,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
end end
# check users and search it # check users and search it
test 'b - users' do test 'c - users' do
# search as agent # search as agent
result = User.search( result = User.search(

View file

@ -7,23 +7,23 @@ class TicketSlaTest < ActiveSupport::TestCase
# cleanup # cleanup
delete = Sla.destroy_all delete = Sla.destroy_all
assert( 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')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-03-21 09:30:00 UTC', created_at: '2013-03-21 09:30:00 UTC',
updated_at: '2013-03-21 09:30:00 UTC', updated_at: '2013-03-21 09:30:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify')
calendar1 = Calendar.create_or_update( calendar1 = Calendar.create_or_update(
name: 'EU 1', name: 'EU 1',
@ -76,10 +76,10 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1')
sla = Sla.create_or_update( sla = Sla.create_or_update(
name: 'test sla 1', name: 'test sla 1',
@ -93,12 +93,12 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy 1' ) assert(delete, 'sla destroy 1')
calendar2 = Calendar.create_or_update( calendar2 = Calendar.create_or_update(
name: 'EU 2', name: 'EU 2',
@ -155,210 +155,210 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.escalation_time verify 2' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.escalation_time verify 2')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 2' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 2')
assert_equal( ticket.first_response, nil, 'ticket.first_response verify 2' ) assert_equal(ticket.first_response, nil, 'ticket.first_response verify 2')
assert_equal( ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 2' ) assert_equal(ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 2')
assert_equal( ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 2' ) assert_equal(ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 2')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 2' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 2')
assert_equal( ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 2' ) assert_equal(ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 2')
assert_equal( ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 2' ) assert_equal(ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 2')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 2' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 2')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 2' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 2')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 2' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 2')
# set first response in time # set first response in time
ticket.update_attributes( ticket.update_attributes(
first_response: '2013-03-21 10:00:00 UTC', first_response: '2013-03-21 10:00:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 3' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 3')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 3' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 3')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 10:00:00 UTC', 'ticket.first_response verify 3' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 10:00:00 UTC', 'ticket.first_response verify 3')
assert_equal( ticket.first_response_in_min, 30, 'ticket.first_response_in_min verify 3' ) assert_equal(ticket.first_response_in_min, 30, 'ticket.first_response_in_min verify 3')
assert_equal( ticket.first_response_diff_in_min, 30, 'ticket.first_response_diff_in_min verify 3' ) assert_equal(ticket.first_response_diff_in_min, 30, 'ticket.first_response_diff_in_min verify 3')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 3' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 3')
assert_equal( ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 3' ) assert_equal(ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 3')
assert_equal( ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 3' ) assert_equal(ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 3')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 3' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 3')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 3' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 3')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 3' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 3')
# set first reponse over time # set first reponse over time
ticket.update_attributes( ticket.update_attributes(
first_response: '2013-03-21 14:00:00 UTC', first_response: '2013-03-21 14:00:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 4' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 4')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 4' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 4')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 4' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 4')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 4' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 4')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 4' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 4')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 4' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.update_time_escal_date verify 4')
assert_equal( ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 4' ) assert_equal(ticket.update_time_in_min, nil, 'ticket.update_time_in_min verify 4')
assert_equal( ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 4' ) assert_equal(ticket.update_time_diff_in_min, nil, 'ticket.update_time_diff_in_min verify 4')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 4' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 4')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 4' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 4')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 4' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 4')
# set update time in time # set update time in time
ticket.update_attributes( ticket.update_attributes(
last_contact_agent: '2013-03-21 11:00:00 UTC', last_contact_agent: '2013-03-21 11:00:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 5' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 5')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 5' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 5')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 5' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 5')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 5' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 5')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 5' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 5')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 13:00:00 UTC', 'ticket.update_time_escal_date verify 5' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 13:00:00 UTC', 'ticket.update_time_escal_date verify 5')
assert_equal( ticket.update_time_in_min, 90, 'ticket.update_time_in_min verify 5' ) assert_equal(ticket.update_time_in_min, 90, 'ticket.update_time_in_min verify 5')
assert_equal( ticket.update_time_diff_in_min, 30, 'ticket.update_time_diff_in_min verify 5' ) assert_equal(ticket.update_time_diff_in_min, 30, 'ticket.update_time_diff_in_min verify 5')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 5' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 5')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 5' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 5')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 5' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 5')
# set update time over time # set update time over time
ticket.update_attributes( ticket.update_attributes(
last_contact_agent: '2013-03-21 12:00:00 UTC', last_contact_agent: '2013-03-21 12:00:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.update_time_escal_date verify 6' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.update_time_escal_date verify 6')
assert_equal( ticket.update_time_in_min, 150, 'ticket.update_time_in_min verify 6' ) assert_equal(ticket.update_time_in_min, 150, 'ticket.update_time_in_min verify 6')
assert_equal( ticket.update_time_diff_in_min, -30, 'ticket.update_time_diff_in_min verify 6' ) assert_equal(ticket.update_time_diff_in_min, -30, 'ticket.update_time_diff_in_min verify 6')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6')
# set update time over time # set update time over time
ticket.update_attributes( ticket.update_attributes(
last_contact_customer: '2013-03-21 12:05:00 UTC', last_contact_customer: '2013-03-21 12:05:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:05:00 UTC', 'ticket.update_time_escal_date verify 6' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:05:00 UTC', 'ticket.update_time_escal_date verify 6')
assert_equal( ticket.update_time_in_min, 155, 'ticket.update_time_in_min verify 6' ) assert_equal(ticket.update_time_in_min, 155, 'ticket.update_time_in_min verify 6')
assert_equal( ticket.update_time_diff_in_min, -35, 'ticket.update_time_diff_in_min verify 6' ) assert_equal(ticket.update_time_diff_in_min, -35, 'ticket.update_time_diff_in_min verify 6')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6')
# set update time over time # set update time over time
ticket.update_attributes( ticket.update_attributes(
last_contact_agent: '2013-03-21 12:10:00 UTC', last_contact_agent: '2013-03-21 12:10:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.escalation_time verify 6')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 6')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 6')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 6')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 6')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 6' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 6')
assert_equal( ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 6' ) assert_equal(ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 6')
assert_equal( ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 6' ) assert_equal(ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 6')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 6')
assert_equal( ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6' ) assert_equal(ticket.close_time_in_min, nil, 'ticket.close_time_in_min verify 6')
assert_equal( ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6' ) assert_equal(ticket.close_time_diff_in_min, nil, 'ticket.close_time_diff_in_min verify 6')
# set close time in time # set close time in time
ticket.update_attributes( ticket.update_attributes(
close_time: '2013-03-21 11:30:00 UTC', close_time: '2013-03-21 11:30:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.escalation_time verify 7' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.escalation_time verify 7')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 7' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 7')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 7' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 7')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 7' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 7')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 7' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 7')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 7' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 7')
assert_equal( ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 7' ) assert_equal(ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 7')
assert_equal( ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 7' ) assert_equal(ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 7')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 7' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 7')
assert_equal( ticket.close_time_in_min, 120, 'ticket.close_time_in_min verify 7' ) assert_equal(ticket.close_time_in_min, 120, 'ticket.close_time_in_min verify 7')
assert_equal( ticket.close_time_diff_in_min, 60, 'ticket.close_time_diff_in_min verify 7' ) assert_equal(ticket.close_time_diff_in_min, 60, 'ticket.close_time_diff_in_min verify 7')
# set close time over time # set close time over time
ticket.update_attributes( ticket.update_attributes(
close_time: '2013-03-21 13:00:00 UTC', close_time: '2013-03-21 13:00:00 UTC',
) )
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.escalation_time verify 8' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.escalation_time verify 8')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 8' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 8')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 8' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 8')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 8' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 8')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 8' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 8')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 8' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 8')
assert_equal( ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 8' ) assert_equal(ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 8')
assert_equal( ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 8' ) assert_equal(ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 8')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 8' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 8')
assert_equal( ticket.close_time_in_min, 210, 'ticket.close_time_in_min verify 8' ) assert_equal(ticket.close_time_in_min, 210, 'ticket.close_time_in_min verify 8')
assert_equal( ticket.close_time_diff_in_min, -30, 'ticket.close_time_diff_in_min verify 8' ) assert_equal(ticket.close_time_diff_in_min, -30, 'ticket.close_time_diff_in_min verify 8')
# set close time over time # set close time over time
ticket.update_attributes( ticket.update_attributes(
state: Ticket::State.lookup( name: 'closed' ) state: Ticket::State.lookup( name: 'closed')
) )
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify 9' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify 9')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 9' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 10:30:00 UTC', 'ticket.first_response_escal_date verify 9')
assert_equal( ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 9' ) assert_equal(ticket.first_response.gmtime.to_s, '2013-03-21 14:00:00 UTC', 'ticket.first_response verify 9')
assert_equal( ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 9' ) assert_equal(ticket.first_response_in_min, 270, 'ticket.first_response_in_min verify 9')
assert_equal( ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 9' ) assert_equal(ticket.first_response_diff_in_min, -210, 'ticket.first_response_diff_in_min verify 9')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 9' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 14:10:00 UTC', 'ticket.update_time_escal_date verify 9')
assert_equal( ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 9' ) assert_equal(ticket.update_time_in_min, 160, 'ticket.update_time_in_min verify 9')
assert_equal( ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 9' ) assert_equal(ticket.update_time_diff_in_min, -40, 'ticket.update_time_diff_in_min verify 9')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 9' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.close_time_escal_date verify 9')
assert_equal( ticket.close_time_in_min, 210, 'ticket.close_time_in_min verify 9' ) assert_equal(ticket.close_time_in_min, 210, 'ticket.close_time_in_min verify 9')
assert_equal( ticket.close_time_diff_in_min, -30, 'ticket.close_time_diff_in_min verify 9' ) assert_equal(ticket.close_time_diff_in_min, -30, 'ticket.close_time_diff_in_min verify 9')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
created_at: '2013-03-28 23:49:00 UTC', created_at: '2013-03-28 23:49:00 UTC',
updated_at: '2013-03-28 23:49:00 UTC', updated_at: '2013-03-28 23:49:00 UTC',
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.title, 'some title äöüß', 'ticket.title verify' ) assert_equal(ticket.title, 'some title äöüß', 'ticket.title verify')
assert_equal( ticket.group.name, 'Users', 'ticket.group verify' ) assert_equal(ticket.group.name, 'Users', 'ticket.group verify')
assert_equal( ticket.state.name, 'new', 'ticket.state verify' ) assert_equal(ticket.state.name, 'new', 'ticket.state verify')
# create inbound article # create inbound article
article_inbound = Ticket::Article.create( article_inbound = Ticket::Article.create(
@ -377,12 +377,12 @@ class TicketSlaTest < ActiveSupport::TestCase
updated_at: '2013-03-28 23:49:00 UTC', updated_at: '2013-03-28 23:49:00 UTC',
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.article_count, 1, 'ticket.article_count verify - inbound' ) 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.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_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.last_contact_agent, nil, 'ticket.last_contact_agent verify - inbound')
assert_equal( ticket.first_response, nil, 'ticket.first_response verify - inbound' ) assert_equal(ticket.first_response, nil, 'ticket.first_response verify - inbound')
assert_equal( ticket.close_time, nil, 'ticket.close_time verify - inbound' ) assert_equal(ticket.close_time, nil, 'ticket.close_time verify - inbound')
# create outbound article # create outbound article
article_outbound = Ticket::Article.create( article_outbound = Ticket::Article.create(
@ -402,34 +402,34 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.article_count, 2, 'ticket.article_count verify - outbound' ) assert_equal(ticket.article_count, 2, 'ticket.article_count verify - outbound')
assert_equal( ticket.last_contact.to_s, article_outbound.created_at.to_s, 'ticket.last_contact verify - outbound' ) assert_equal(ticket.last_contact.to_s, article_outbound.created_at.to_s, 'ticket.last_contact verify - outbound')
assert_equal( ticket.last_contact_customer.to_s, article_inbound.created_at.to_s, 'ticket.last_contact_customer verify - outbound' ) assert_equal(ticket.last_contact_customer.to_s, article_inbound.created_at.to_s, 'ticket.last_contact_customer verify - outbound')
assert_equal( ticket.last_contact_agent.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent verify - outbound' ) assert_equal(ticket.last_contact_agent.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent verify - outbound')
assert_equal( ticket.first_response.to_s, article_outbound.created_at.to_s, 'ticket.first_response verify - outbound' ) assert_equal(ticket.first_response.to_s, article_outbound.created_at.to_s, 'ticket.first_response verify - outbound')
assert_equal( ticket.first_response_in_min, 0, 'ticket.first_response_in_min verify - outbound' ) assert_equal(ticket.first_response_in_min, 0, 'ticket.first_response_in_min verify - outbound')
assert_equal( ticket.first_response_diff_in_min, 60, 'ticket.first_response_diff_in_min verify - outbound' ) 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' ) assert_equal(ticket.close_time, nil, 'ticket.close_time verify - outbound')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
created_at: '2013-03-28 23:49:00 UTC', created_at: '2013-03-28 23:49:00 UTC',
updated_at: '2013-03-28 23:49:00 UTC', updated_at: '2013-03-28 23:49:00 UTC',
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.title, 'some title äöüß', 'ticket.title verify' ) assert_equal(ticket.title, 'some title äöüß', 'ticket.title verify')
assert_equal( ticket.group.name, 'Users', 'ticket.group verify' ) assert_equal(ticket.group.name, 'Users', 'ticket.group verify')
assert_equal( ticket.state.name, 'new', 'ticket.state verify' ) assert_equal(ticket.state.name, 'new', 'ticket.state verify')
# create inbound article # create inbound article
article_inbound = Ticket::Article.create( article_inbound = Ticket::Article.create(
@ -447,12 +447,12 @@ class TicketSlaTest < ActiveSupport::TestCase
updated_at: '2013-03-28 23:49:00 UTC', updated_at: '2013-03-28 23:49:00 UTC',
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.article_count, 1, 'ticket.article_count verify - inbound' ) 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.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_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.last_contact_agent, nil, 'ticket.last_contact_agent verify - inbound')
assert_equal( ticket.first_response, nil, 'ticket.first_response verify - inbound' ) assert_equal(ticket.first_response, nil, 'ticket.first_response verify - inbound')
assert_equal( ticket.close_time, nil, 'ticket.close_time verify - inbound' ) assert_equal(ticket.close_time, nil, 'ticket.close_time verify - inbound')
# create note article # create note article
article_note = Ticket::Article.create( article_note = Ticket::Article.create(
@ -470,12 +470,12 @@ class TicketSlaTest < ActiveSupport::TestCase
updated_at: '2013-03-28 23:52:00 UTC', updated_at: '2013-03-28 23:52:00 UTC',
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.article_count, 2, 'ticket.article_count verify - inbound' ) assert_equal(ticket.article_count, 2, '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.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_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.last_contact_agent, nil, 'ticket.last_contact_agent verify - inbound')
assert_equal( ticket.first_response, nil, 'ticket.first_response verify - inbound' ) assert_equal(ticket.first_response, nil, 'ticket.first_response verify - inbound')
assert_equal( ticket.close_time, nil, 'ticket.close_time verify - inbound' ) assert_equal(ticket.close_time, nil, 'ticket.close_time verify - inbound')
# create outbound article # create outbound article
article_outbound = Ticket::Article.create( article_outbound = Ticket::Article.create(
@ -493,41 +493,41 @@ class TicketSlaTest < ActiveSupport::TestCase
updated_at: '2013-03-28 23:55:00 UTC', updated_at: '2013-03-28 23:55:00 UTC',
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.article_count, 3, 'ticket.article_count verify - inbound' ) assert_equal(ticket.article_count, 3, 'ticket.article_count verify - inbound')
assert_equal( ticket.last_contact.to_s, article_outbound.created_at.to_s, 'ticket.last_contact verify - inbound' ) assert_equal(ticket.last_contact.to_s, article_outbound.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_customer.to_s, article_inbound.created_at.to_s, 'ticket.last_contact_customer verify - inbound')
assert_equal( ticket.last_contact_agent.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent verify - inbound' ) assert_equal(ticket.last_contact_agent.to_s, article_outbound.created_at.to_s, 'ticket.last_contact_agent verify - inbound')
assert_equal( ticket.first_response.to_s, article_outbound.created_at.to_s, 'ticket.first_response verify - inbound' ) assert_equal(ticket.first_response.to_s, article_outbound.created_at.to_s, 'ticket.first_response verify - inbound')
assert_equal( ticket.close_time, nil, 'ticket.close_time verify - inbound' ) assert_equal(ticket.close_time, nil, 'ticket.close_time verify - inbound')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
end end
test 'ticket sla + timezone + holiday' do test 'ticket sla + timezone + holiday' do
# cleanup # cleanup
delete = Sla.destroy_all delete = Sla.destroy_all
assert( 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')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-03-21 09:30:00 UTC', created_at: '2013-03-21 09:30:00 UTC',
updated_at: '2013-03-21 09:30:00 UTC', updated_at: '2013-03-21 09:30:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify')
# set sla's for timezone "Europe/Berlin" wintertime (+1), so UTC times are 7:00-16:00 # set sla's for timezone "Europe/Berlin" wintertime (+1), so UTC times are 7:00-16:00
calendar = Calendar.create_or_update( calendar = Calendar.create_or_update(
@ -600,29 +600,29 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-03-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-03-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-03-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-10-21 09:30:00 UTC', created_at: '2013-10-21 09:30:00 UTC',
updated_at: '2013-10-21 09:30:00 UTC', updated_at: '2013-10-21 09:30:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify')
# set sla's for timezone "Europe/Berlin" summertime (+2), so UTC times are 6:00-15:00 # set sla's for timezone "Europe/Berlin" summertime (+2), so UTC times are 6:00-15:00
calendar = Calendar.create_or_update( calendar = Calendar.create_or_update(
@ -689,30 +689,30 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-10-21 11:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-10-21 11:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-10-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-10-21 11:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-10-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-10-21 12:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-10-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-10-21 13:30:00 UTC', 'ticket.close_time_escal_date verify 1')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-10-21 05:30:00 UTC', created_at: '2013-10-21 05:30:00 UTC',
updated_at: '2013-10-21 05:30:00 UTC', updated_at: '2013-10-21 05:30:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify')
# set sla's for timezone "Europe/Berlin" summertime (+2), so UTC times are 6:00-15:00 # set sla's for timezone "Europe/Berlin" summertime (+2), so UTC times are 6:00-15:00
sla = Sla.create_or_update( sla = Sla.create_or_update(
@ -727,33 +727,33 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-10-21 08:00:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-10-21 08:00:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-10-21 08:00:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-10-21 08:00:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-10-21 09:00:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-10-21 09:00:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-10-21 10:00:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-10-21 10:00:00 UTC', 'ticket.close_time_escal_date verify 1')
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title holiday test', title: 'some title holiday test',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2015-09-21 14:30:00 UTC', created_at: '2015-09-21 14:30:00 UTC',
updated_at: '2015-09-21 14:30:00 UTC', updated_at: '2015-09-21 14:30:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2015-09-23 07:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2015-09-23 07:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2015-09-23 07:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2015-09-23 07:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2015-09-23 08:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2015-09-23 08:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2015-09-23 09:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2015-09-23 09:30:00 UTC', 'ticket.close_time_escal_date verify 1')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
end end
@ -762,14 +762,14 @@ class TicketSlaTest < ActiveSupport::TestCase
title: 'some title äöüß3', title: 'some title äöüß3',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'new' ), state: Ticket::State.lookup( name: 'new'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-06-04 09:00:00 UTC', created_at: '2013-06-04 09:00:00 UTC',
updated_at: '2013-06-04 09:00:00 UTC', updated_at: '2013-06-04 09:00:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
# set ticket at 10:00 to pending # set ticket at 10:00 to pending
History.add( History.add(
@ -881,33 +881,33 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time.gmtime.to_s, '2013-06-04 13:30:00 UTC', 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time.gmtime.to_s, '2013-06-04 13:30:00 UTC', 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 11:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 11:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.first_response_in_min, 75, 'ticket.first_response_in_min verify 3' ) assert_equal(ticket.first_response_in_min, 75, 'ticket.first_response_in_min verify 3')
assert_equal( ticket.first_response_diff_in_min, 45, 'ticket.first_response_diff_in_min verify 3' ) assert_equal(ticket.first_response_diff_in_min, 45, 'ticket.first_response_diff_in_min verify 3')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 13:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 13:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 13:40:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 13:40:00 UTC', 'ticket.close_time_escal_date verify 1')
assert_equal( ticket.close_time_in_min, 150, 'ticket.close_time_in_min verify 3' ) assert_equal(ticket.close_time_in_min, 150, 'ticket.close_time_in_min verify 3')
assert_equal( ticket.close_time_diff_in_min, 100, 'ticket.close_time_diff_in_min# verify 3' ) assert_equal(ticket.close_time_diff_in_min, 100, 'ticket.close_time_diff_in_min# verify 3')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
# test Ticket created in state pending and closed without reopen or state change # test Ticket created in state pending and closed without reopen or state change
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß3', title: 'some title äöüß3',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'pending reminder' ), state: Ticket::State.lookup( name: 'pending reminder'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-06-04 09:00:00 UTC', created_at: '2013-06-04 09:00:00 UTC',
updated_at: '2013-06-04 09:00:00 UTC', updated_at: '2013-06-04 09:00:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
# set ticket from 11:30 to closed # set ticket from 11:30 to closed
History.add( History.add(
@ -977,34 +977,34 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 13:00:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 13:00:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3' ) assert_equal(ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3')
assert_equal( ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3' ) assert_equal(ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 15:00:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 15:00:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 16:00:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 16:00:00 UTC', 'ticket.close_time_escal_date verify 1')
assert_equal( ticket.close_time_in_min, 0, 'ticket.close_time_in_min verify 3' ) assert_equal(ticket.close_time_in_min, 0, 'ticket.close_time_in_min verify 3')
assert_equal( ticket.close_time_diff_in_min, 240, 'ticket.close_time_diff_in_min# verify 3' ) assert_equal(ticket.close_time_diff_in_min, 240, 'ticket.close_time_diff_in_min# verify 3')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
# test Ticket created in state pending, changed state to openen, back to pending and closed # test Ticket created in state pending, changed state to openen, back to pending and closed
ticket = Ticket.create( ticket = Ticket.create(
title: 'some title äöüß3', title: 'some title äöüß3',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'pending reminder' ), state: Ticket::State.lookup( name: 'pending reminder'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-06-04 09:00:00 UTC', created_at: '2013-06-04 09:00:00 UTC',
updated_at: '2013-06-04 09:00:00 UTC', updated_at: '2013-06-04 09:00:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
# state change to open 10:30 # state change to open 10:30
History.add( History.add(
@ -1104,20 +1104,20 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 12:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 12:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3' ) assert_equal(ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3')
assert_equal( ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3' ) assert_equal(ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 14:30:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 14:30:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 15:30:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 15:30:00 UTC', 'ticket.close_time_escal_date verify 1')
assert_equal( ticket.close_time_in_min, 30, 'ticket.close_time_in_min verify 3' ) assert_equal(ticket.close_time_in_min, 30, 'ticket.close_time_in_min verify 3')
assert_equal( ticket.close_time_diff_in_min, 210, 'ticket.close_time_diff_in_min# verify 3' ) assert_equal(ticket.close_time_diff_in_min, 210, 'ticket.close_time_diff_in_min# verify 3')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
### Test Ticket created in state pending, changed state to openen, back to pending and back to open then ### Test Ticket created in state pending, changed state to openen, back to pending and back to open then
### close ticket ### close ticket
@ -1125,14 +1125,14 @@ class TicketSlaTest < ActiveSupport::TestCase
title: 'some title äöüß3', title: 'some title äöüß3',
group: Group.lookup( name: 'Users'), group: Group.lookup( name: 'Users'),
customer_id: 2, customer_id: 2,
state: Ticket::State.lookup( name: 'pending reminder' ), state: Ticket::State.lookup( name: 'pending reminder'),
priority: Ticket::Priority.lookup( name: '2 normal' ), priority: Ticket::Priority.lookup( name: '2 normal'),
created_at: '2013-06-04 09:00:00 UTC', created_at: '2013-06-04 09:00:00 UTC',
updated_at: '2013-06-04 09:00:00 UTC', updated_at: '2013-06-04 09:00:00 UTC',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
assert( ticket, 'ticket created' ) assert(ticket, 'ticket created')
# state change to open from pending # state change to open from pending
History.add( History.add(
@ -1247,20 +1247,20 @@ class TicketSlaTest < ActiveSupport::TestCase
) )
Scheduler.worker(true) Scheduler.worker(true)
ticket = Ticket.find(ticket.id) ticket = Ticket.find(ticket.id)
assert_equal( ticket.escalation_time, nil, 'ticket.escalation_time verify 1' ) assert_equal(ticket.escalation_time, nil, 'ticket.escalation_time verify 1')
assert_equal( ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 12:30:00 UTC', 'ticket.first_response_escal_date verify 1' ) assert_equal(ticket.first_response_escal_date.gmtime.to_s, '2013-06-04 12:30:00 UTC', 'ticket.first_response_escal_date verify 1')
assert_equal( ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3' ) assert_equal(ticket.first_response_in_min, nil, 'ticket.first_response_in_min verify 3')
assert_equal( ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3' ) assert_equal(ticket.first_response_diff_in_min, nil, 'ticket.first_response_diff_in_min verify 3')
assert_equal( ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 14:00:00 UTC', 'ticket.update_time_escal_date verify 1' ) assert_equal(ticket.update_time_escal_date.gmtime.to_s, '2013-06-04 14:00:00 UTC', 'ticket.update_time_escal_date verify 1')
assert_equal( ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 15:00:00 UTC', 'ticket.close_time_escal_date verify 1' ) assert_equal(ticket.close_time_escal_date.gmtime.to_s, '2013-06-04 15:00:00 UTC', 'ticket.close_time_escal_date verify 1')
assert_equal( ticket.close_time_in_min, 60, 'ticket.close_time_in_min verify 3' ) assert_equal(ticket.close_time_in_min, 60, 'ticket.close_time_in_min verify 3')
assert_equal( ticket.close_time_diff_in_min, 180, 'ticket.close_time_diff_in_min# verify 3' ) assert_equal(ticket.close_time_diff_in_min, 180, 'ticket.close_time_diff_in_min# verify 3')
delete = sla.destroy delete = sla.destroy
assert( delete, 'sla destroy' ) assert(delete, 'sla destroy')
delete = ticket.destroy delete = ticket.destroy
assert( delete, 'ticket destroy' ) assert(delete, 'ticket destroy')
end end