Improved tests.

This commit is contained in:
Martin Edenhofer 2017-06-14 17:25:45 +02:00
parent 71980d6cf5
commit 1a43d9bd5c
20 changed files with 1481 additions and 1502 deletions

View file

@ -60,13 +60,16 @@ reset config setting to default
Setting.reset('some_config_name') Setting.reset('some_config_name')
Setting.reset('some_config_name', force) # true|false - force it false per default
=end =end
def self.reset(name) def self.reset(name, force = false)
setting = Setting.find_by(name: name) setting = Setting.find_by(name: name)
if !setting if !setting
raise "Can't find config setting '#{name}'" raise "Can't find config setting '#{name}'"
end end
return true if !force && setting.state_current == setting.state_initial
setting.state_current = setting.state_initial setting.state_current = setting.state_initial
setting.save! setting.save!
logger.info "Setting.reset(#{name}, #{setting.state_current.inspect})" logger.info "Setting.reset(#{name}, #{setting.state_current.inspect})"

View file

@ -746,7 +746,7 @@ returns
true true
end end
def check_notifications(o) def check_notifications(o, shouldSave = true)
default = Rails.configuration.preferences_default_by_permission default = Rails.configuration.preferences_default_by_permission
return if !default return if !default
default.deep_stringify_keys! default.deep_stringify_keys!
@ -762,7 +762,7 @@ returns
return true if !has_changed return true if !has_changed
if id if id && shouldSave
save! save!
return true return true
end end
@ -772,8 +772,14 @@ returns
end end
def check_preferences_default def check_preferences_default
if @preferences_default.blank?
if id
roles.each { |role|
check_notifications(role, false)
}
end
end
return if @preferences_default.blank? return if @preferences_default.blank?
preferences_tmp = @preferences_default.merge(preferences) preferences_tmp = @preferences_default.merge(preferences)
self.preferences = preferences_tmp self.preferences = preferences_tmp
@preferences_default = nil @preferences_default = nil
@ -945,7 +951,7 @@ raise 'Minimum one user need to have admin permissions'
# set the user's locale to the one of the "executing" user # set the user's locale to the one of the "executing" user
return if !UserInfo.current_user_id return if !UserInfo.current_user_id
user = User.find_by( id: UserInfo.current_user_id ) user = User.find_by(id: UserInfo.current_user_id)
return if !user return if !user
return if !user.preferences[:locale] return if !user.preferences[:locale]

View file

@ -16,12 +16,12 @@ user_community = User.create_or_update(
UserInfo.current_user_id = user_community.id UserInfo.current_user_id = user_community.id
ticket = Ticket.create( ticket = Ticket.create!(
group_id: Group.find_by(name: 'Users').id, group_id: Group.find_by(name: 'Users').id,
customer_id: User.find_by(login: 'nicole.braun@zammad.org').id, customer_id: User.find_by(login: 'nicole.braun@zammad.org').id,
title: 'Welcome to Zammad!', title: 'Welcome to Zammad!',
) )
Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket.id, ticket_id: ticket.id,
type_id: Ticket::Article::Type.find_by(name: 'phone').id, type_id: Ticket::Article::Type.find_by(name: 'phone').id,
sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id, sender_id: Ticket::Article::Sender.find_by(name: 'Customer').id,

View file

@ -1,14 +1,9 @@
# encoding: utf-8 # encoding: utf-8
require 'test_helper' require 'test_helper'
require 'rake'
class SearchControllerTest < ActionDispatch::IntegrationTest class SearchControllerTest < ActionDispatch::IntegrationTest
def base_data setup do
# clear cache
Cache.clear
# remove background jobs
Delayed::Job.destroy_all
# set current user # set current user
UserInfo.current_user_id = 1 UserInfo.current_user_id = 1
@ -92,16 +87,14 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
Ticket.all.destroy_all Ticket.all.destroy_all
@ticket1 = Ticket.create( @ticket1 = Ticket.create!(
title: 'test 1234-1', title: 'test 1234-1',
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: @customer_without_org.id, customer_id: @customer_without_org.id,
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,
created_by_id: 1,
) )
@article1 = Ticket::Article.create( @article1 = Ticket::Article.create!(
ticket_id: @ticket1.id, ticket_id: @ticket1.id,
from: 'some_sender1@example.com', from: 'some_sender1@example.com',
to: 'some_recipient1@example.com', to: 'some_recipient1@example.com',
@ -111,20 +104,16 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
internal: false, internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first, sender: Ticket::Article::Sender.where(name: 'Customer').first,
type: Ticket::Article::Type.where(name: 'email').first, type: Ticket::Article::Type.where(name: 'email').first,
updated_by_id: 1,
created_by_id: 1,
) )
sleep 1 sleep 1
@ticket2 = Ticket.create( @ticket2 = Ticket.create!(
title: 'test 1234-2', title: 'test 1234-2',
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: @customer_with_org2.id, customer_id: @customer_with_org2.id,
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,
created_by_id: 1,
) )
@article2 = Ticket::Article.create( @article2 = Ticket::Article.create!(
ticket_id: @ticket2.id, ticket_id: @ticket2.id,
from: 'some_sender2@example.com', from: 'some_sender2@example.com',
to: 'some_recipient2@example.com', to: 'some_recipient2@example.com',
@ -134,20 +123,16 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
internal: false, internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first, sender: Ticket::Article::Sender.where(name: 'Customer').first,
type: Ticket::Article::Type.where(name: 'email').first, type: Ticket::Article::Type.where(name: 'email').first,
updated_by_id: 1,
created_by_id: 1,
) )
sleep 1 sleep 1
@ticket3 = Ticket.create( @ticket3 = Ticket.create!(
title: 'test 1234-2', title: 'test 1234-2',
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: @customer_with_org3.id, customer_id: @customer_with_org3.id,
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,
created_by_id: 1,
) )
@article3 = Ticket::Article.create( @article3 = Ticket::Article.create!(
ticket_id: @ticket3.id, ticket_id: @ticket3.id,
from: 'some_sender3@example.com', from: 'some_sender3@example.com',
to: 'some_recipient3@example.com', to: 'some_recipient3@example.com',
@ -157,12 +142,10 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
internal: false, internal: false,
sender: Ticket::Article::Sender.where(name: 'Customer').first, sender: Ticket::Article::Sender.where(name: 'Customer').first,
type: Ticket::Article::Type.where(name: 'email').first, type: Ticket::Article::Type.where(name: 'email').first,
updated_by_id: 1,
created_by_id: 1,
) )
# configure es # configure es
if ENV['ES_URL'] if ENV['ES_URL'].present?
#fail "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'" #fail "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'"
Setting.set('es_url', ENV['ES_URL']) Setting.set('es_url', ENV['ES_URL'])
@ -174,15 +157,17 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
# set max attachment size in mb # set max attachment size in mb
Setting.set('es_attachment_max_size_in_mb', 1) Setting.set('es_attachment_max_size_in_mb', 1)
if ENV['ES_INDEX'] if ENV['ES_INDEX'].present?
#fail "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'" #fail "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
Setting.set('es_index', ENV['ES_INDEX']) Setting.set('es_index', ENV['ES_INDEX'])
end end
# drop/create indexes # drop/create indexes
Rake::Task.clear
Zammad::Application.load_tasks
#Rake::Task["searchindex:drop"].execute #Rake::Task["searchindex:drop"].execute
#Rake::Task["searchindex:create"].execute #Rake::Task["searchindex:create"].execute
system('rake searchindex:rebuild') Rake::Task['searchindex:rebuild'].execute
# execute background jobs # execute background jobs
Scheduler.worker(true) Scheduler.worker(true)
@ -192,8 +177,6 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
end end
test 'settings index with nobody' do test 'settings index with nobody' do
base_data
params = { params = {
query: 'test 1234', query: 'test 1234',
limit: 2, limit: 2,
@ -219,19 +202,15 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
assert_equal(Hash, result.class) assert_equal(Hash, result.class)
assert_not(result.empty?) assert_not(result.empty?)
assert_equal('authentication failed', result['error']) assert_equal('authentication failed', result['error'])
end end
test 'settings index with admin' do test 'settings index with admin' do
base_data
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-admin@example.com', 'adminpw') credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-admin@example.com', 'adminpw')
params = { params = {
query: '1234*', query: '1234*',
limit: 1, limit: 1,
} }
post '/api/v1/search', params.to_json, @headers.merge('Authorization' => credentials) post '/api/v1/search', params.to_json, @headers.merge('Authorization' => credentials)
assert_response(200) assert_response(200)
result = JSON.parse(@response.body) result = JSON.parse(@response.body)
@ -293,12 +272,9 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
assert_equal('User', result['result'][0]['type']) assert_equal('User', result['result'][0]['type'])
assert_equal(@agent.id, result['result'][0]['id']) assert_equal(@agent.id, result['result'][0]['id'])
assert_not(result['result'][1]) assert_not(result['result'][1])
end end
test 'settings index with agent' do test 'settings index with agent' do
base_data
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-agent@example.com', 'agentpw') credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-agent@example.com', 'agentpw')
params = { params = {
@ -367,12 +343,9 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
assert_equal('User', result['result'][0]['type']) assert_equal('User', result['result'][0]['type'])
assert_equal(@agent.id, result['result'][0]['id']) assert_equal(@agent.id, result['result'][0]['id'])
assert_not(result['result'][1]) assert_not(result['result'][1])
end end
test 'settings index with customer 1' do test 'settings index with customer 1' do
base_data
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-customer1@example.com', 'customer1pw') credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-customer1@example.com', 'customer1pw')
params = { params = {
@ -413,12 +386,9 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
result = JSON.parse(@response.body) result = JSON.parse(@response.body)
assert_equal(Hash, result.class) assert_equal(Hash, result.class)
assert_not(result['result'][0]) assert_not(result['result'][0])
end end
test 'settings index with customer 2' do test 'settings index with customer 2' do
base_data
credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-customer2@example.com', 'customer2pw') credentials = ActionController::HttpAuthentication::Basic.encode_credentials('search-customer2@example.com', 'customer2pw')
params = { params = {
@ -463,7 +433,6 @@ class SearchControllerTest < ActionDispatch::IntegrationTest
result = JSON.parse(@response.body) result = JSON.parse(@response.body)
assert_equal(Hash, result.class) assert_equal(Hash, result.class)
assert_not(result['result'][0]) assert_not(result['result'][0])
end end
end end

View file

@ -1,19 +1,22 @@
# encoding: utf-8 # encoding: utf-8
require 'integration_test_helper' require 'integration_test_helper'
require 'rake'
class ElasticsearchTest < ActiveSupport::TestCase class ElasticsearchTest < ActiveSupport::TestCase
setup do
# set config # set config
if !ENV['ES_URL'] if ENV['ES_URL'].blank?
raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'" raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'"
end end
Setting.set('es_url', ENV['ES_URL']) Setting.set('es_url', ENV['ES_URL'])
if !ENV['ES_INDEX'] && !ENV['ES_INDEX_RAND'] if ENV['ES_INDEX_RAND'].present?
raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
end
if ENV['ES_INDEX_RAND']
ENV['ES_INDEX'] = "es_index_#{rand(999_999_999)}" ENV['ES_INDEX'] = "es_index_#{rand(999_999_999)}"
end end
if ENV['ES_INDEX'].blank?
raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
end
Setting.set('es_index', ENV['ES_INDEX']) Setting.set('es_index', ENV['ES_INDEX'])
# Setting.set('es_url', 'http://127.0.0.1:9200') # Setting.set('es_url', 'http://127.0.0.1:9200')
@ -25,13 +28,15 @@ class ElasticsearchTest < ActiveSupport::TestCase
Setting.set('es_attachment_max_size_in_mb', 1) Setting.set('es_attachment_max_size_in_mb', 1)
# drop/create indexes # drop/create indexes
Rake::Task.clear
Zammad::Application.load_tasks
#Rake::Task["searchindex:drop"].execute #Rake::Task["searchindex:drop"].execute
#Rake::Task["searchindex:create"].execute #Rake::Task["searchindex:create"].execute
system('rake searchindex:rebuild') Rake::Task['searchindex:rebuild'].execute
groups = Group.where(name: 'Users') groups = Group.where(name: 'Users')
roles = Role.where(name: 'Agent') roles = Role.where(name: 'Agent')
agent = User.create_or_update( @agent = User.create_or_update(
login: 'es-agent@example.com', login: 'es-agent@example.com',
firstname: 'E', firstname: 'E',
lastname: 'S', lastname: 'S',
@ -50,39 +55,39 @@ class ElasticsearchTest < ActiveSupport::TestCase
created_by_id: 1 created_by_id: 1
) )
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', note: 'some note',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer1 = User.create_or_update( @customer1 = User.create_or_update(
login: 'es-customer1@example.com', login: 'es-customer1@example.com',
firstname: 'ES', firstname: 'ES',
lastname: 'Customer1', lastname: 'Customer1',
email: 'es-customer1@example.com', email: 'es-customer1@example.com',
password: 'customerpw', password: 'customerpw',
active: true, active: true,
organization_id: organization1.id, organization_id: @organization1.id,
roles: roles, roles: roles,
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
sleep 1 sleep 1
customer2 = User.create_or_update( @customer2 = User.create_or_update(
login: 'es-customer2@example.com', login: 'es-customer2@example.com',
firstname: 'ES', firstname: 'ES',
lastname: 'Customer2', lastname: 'Customer2',
email: 'es-customer2@example.com', email: 'es-customer2@example.com',
password: 'customerpw', password: 'customerpw',
active: true, active: true,
organization_id: organization1.id, organization_id: @organization1.id,
roles: roles, roles: roles,
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
sleep 1 sleep 1
customer3 = User.create_or_update( @customer3 = User.create_or_update(
login: 'es-customer3@example.com', login: 'es-customer3@example.com',
firstname: 'ES', firstname: 'ES',
lastname: 'Customer3', lastname: 'Customer3',
@ -93,19 +98,20 @@ class ElasticsearchTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
end
# check search attributes # check search attributes
test 'a - objects' do test 'a - objects' do
# user # user
attributes = agent.search_index_data attributes = @agent.search_index_data
assert_equal('E', attributes['firstname']) assert_equal('E', attributes['firstname'])
assert_equal('S', attributes['lastname']) assert_equal('S', attributes['lastname'])
assert_equal('es-agent@example.com', attributes['email']) assert_equal('es-agent@example.com', attributes['email'])
assert_not(attributes['password']) assert_not(attributes['password'])
assert_not(attributes['organization']) assert_not(attributes['organization'])
attributes = agent.search_index_attribute_lookup attributes = @agent.search_index_attribute_lookup
assert_equal('E', attributes['firstname']) assert_equal('E', attributes['firstname'])
assert_equal('S', attributes['lastname']) assert_equal('S', attributes['lastname'])
assert_equal('es-agent@example.com', attributes['email']) assert_equal('es-agent@example.com', attributes['email'])
@ -113,27 +119,27 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_not(attributes['organization']) assert_not(attributes['organization'])
# organization # organization
attributes = organization1.search_index_data attributes = @organization1.search_index_data
assert_equal('Customer Organization Update', attributes['name']) assert_equal('Customer Organization Update', attributes['name'])
assert_equal('some note', attributes['note']) assert_equal('some note', attributes['note'])
assert_not(attributes['members']) assert_not(attributes['members'])
attributes = organization1.search_index_attribute_lookup attributes = @organization1.search_index_attribute_lookup
assert_equal('Customer Organization Update', attributes['name']) assert_equal('Customer Organization Update', attributes['name'])
assert_equal('some note', attributes['note']) assert_equal('some note', attributes['note'])
assert(attributes['members']) assert(attributes['members'])
# ticket/article # ticket/article
ticket1 = Ticket.create( ticket1 = Ticket.create!(
title: 'some title äöüß', title: 'some title äöüß',
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer1.id, customer_id: @customer1.id,
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,
) )
article1 = Ticket::Article.create( article1 = Ticket::Article.create!(
ticket_id: ticket1.id, ticket_id: ticket1.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
@ -146,6 +152,14 @@ class ElasticsearchTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
Store.add(
object: 'Ticket::Article',
o_id: article1.id,
data: IO.binread("#{Rails.root}/test/fixtures/es-normal.txt"),
filename: 'es-normal.txt',
preferences: {},
created_by_id: 1,
)
attributes = ticket1.search_index_attribute_lookup attributes = ticket1.search_index_attribute_lookup
assert_equal('Users', attributes['group']) assert_equal('Users', attributes['group'])
@ -163,28 +177,27 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_not(attributes['owner']['password']) assert_not(attributes['owner']['password'])
assert_not(attributes['owner']['organization']) assert_not(attributes['owner']['organization'])
assert(attributes['article'][0]['attachment'])
assert(attributes['article'][0]['attachment'][0])
assert_not(attributes['article'][0]['attachment'][1])
assert_equal('es-normal.txt', attributes['article'][0]['attachment'][0]['_name'])
assert_equal("c29tZSBub3JtYWwgdGV4dDY2Cg==\n", attributes['article'][0]['attachment'][0]['_content'])
ticket1.destroy ticket1.destroy
# execute background jobs # execute background jobs
Scheduler.worker(true) Scheduler.worker(true)
end ticket1 = Ticket.create!(
# check tickets and search it
test 'b - tickets' do
system('rake searchindex:rebuild')
ticket1 = Ticket.create(
title: "some title\n äöüß", title: "some title\n äöüß",
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer1.id, customer_id: @customer1.id,
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,
) )
article1 = Ticket::Article.create( article1 = Ticket::Article.create!(
ticket_id: ticket1.id, ticket_id: ticket1.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
@ -199,7 +212,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
) )
# add attachments which should get index / .txt # add attachments which should get index / .txt
# "some normal text" # "some normal text66"
Store.add( Store.add(
object: 'Ticket::Article', object: 'Ticket::Article',
o_id: article1.id, o_id: article1.id,
@ -244,16 +257,16 @@ class ElasticsearchTest < ActiveSupport::TestCase
ticket1.tag_add('someTagA', 1) ticket1.tag_add('someTagA', 1)
sleep 1 sleep 1
ticket2 = Ticket.create( ticket2 = Ticket.create!(
title: 'something else', title: 'something else',
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer2.id, customer_id: @customer2.id,
state: Ticket::State.lookup(name: 'open'), state: Ticket::State.lookup(name: 'open'),
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,
) )
article2 = Ticket::Article.create( article2 = Ticket::Article.create!(
ticket_id: ticket2.id, ticket_id: ticket2.id,
from: 'some_sender@example.org', from: 'some_sender@example.org',
to: 'some_recipient@example.org', to: 'some_recipient@example.org',
@ -270,16 +283,16 @@ class ElasticsearchTest < ActiveSupport::TestCase
ticket2.tag_add('someTagB', 1) ticket2.tag_add('someTagB', 1)
sleep 1 sleep 1
ticket3 = Ticket.create( ticket3 = Ticket.create!(
title: 'something else', title: 'something else',
group: Group.lookup(name: 'WithoutAccess'), group: Group.lookup(name: 'WithoutAccess'),
customer_id: customer3.id, customer_id: @customer3.id,
state: Ticket::State.lookup(name: 'open'), state: Ticket::State.lookup(name: 'open'),
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,
) )
article3 = Ticket::Article.create( article3 = Ticket::Article.create!(
ticket_id: ticket3.id, ticket_id: ticket3.id,
from: 'some_sender@example.org', from: 'some_sender@example.org',
to: 'some_recipient@example.org', to: 'some_recipient@example.org',
@ -295,14 +308,13 @@ class ElasticsearchTest < ActiveSupport::TestCase
# execute background jobs # execute background jobs
Scheduler.worker(true) Scheduler.worker(true)
sleep 4 sleep 4
# search as agent # search as @agent
# search for article data # search for article data
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'autobahn', query: 'autobahn',
limit: 15, limit: 15,
) )
@ -314,7 +326,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for html content # search for html content
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'strong', query: 'strong',
limit: 15, limit: 15,
) )
@ -326,7 +338,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for indexed attachment # search for indexed attachment
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: '"some normal text66"', query: '"some normal text66"',
limit: 15, limit: 15,
) )
@ -334,7 +346,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket1.id) assert_equal(result[0].id, ticket1.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'test77', query: 'test77',
limit: 15, limit: 15,
) )
@ -343,14 +355,14 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for not indexed attachment # search for not indexed attachment
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'test88', query: 'test88',
limit: 15, limit: 15,
) )
assert(!result[0], 'record 1') assert(!result[0], 'record 1')
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'test99', query: 'test99',
limit: 15, limit: 15,
) )
@ -358,16 +370,16 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for ticket with no permissions # search for ticket with no permissions
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'kindergarden', query: 'kindergarden',
limit: 15, limit: 15,
) )
assert(result.empty?, 'result should be empty') assert(result.empty?, 'result should be empty')
assert(!result[0], 'record 1') assert(!result[0], 'record 1')
# search as customer1 # search as @customer1
result = Ticket.search( result = Ticket.search(
current_user: customer1, current_user: @customer1,
query: 'title OR else', query: 'title OR else',
limit: 15, limit: 15,
) )
@ -379,9 +391,9 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket2.id) assert_equal(result[0].id, ticket2.id)
assert_equal(result[1].id, ticket1.id) assert_equal(result[1].id, ticket1.id)
# search as customer2 # search as @customer2
result = Ticket.search( result = Ticket.search(
current_user: customer2, current_user: @customer2,
query: 'title OR else', query: 'title OR else',
limit: 15, limit: 15,
) )
@ -393,9 +405,9 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket2.id) assert_equal(result[0].id, ticket2.id)
assert_equal(result[1].id, ticket1.id) assert_equal(result[1].id, ticket1.id)
# search as customer3 # search as @customer3
result = Ticket.search( result = Ticket.search(
current_user: customer3, current_user: @customer3,
query: 'title OR else', query: 'title OR else',
limit: 15, limit: 15,
) )
@ -407,7 +419,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for tags # search for tags
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'tag:someTagA', query: 'tag:someTagA',
limit: 15, limit: 15,
) )
@ -416,7 +428,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket1.id) assert_equal(result[0].id, ticket1.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'tag:someTagB', query: 'tag:someTagB',
limit: 15, limit: 15,
) )
@ -439,7 +451,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
# search for tags # search for tags
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'tag:someTagA', query: 'tag:someTagA',
limit: 15, limit: 15,
) )
@ -447,7 +459,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert(!result[1], 'record 1') assert(!result[1], 'record 1')
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'tag:someTagB', query: 'tag:someTagB',
limit: 15, limit: 15,
) )
@ -456,7 +468,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket2.id) assert_equal(result[0].id, ticket2.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'tag:someTagC', query: 'tag:someTagC',
limit: 15, limit: 15,
) )
@ -465,7 +477,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket1.id) assert_equal(result[0].id, ticket1.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'state:open', query: 'state:open',
limit: 15, limit: 15,
) )
@ -474,7 +486,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket2.id) assert_equal(result[0].id, ticket2.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: '"some_sender@example.com"', query: '"some_sender@example.com"',
limit: 15, limit: 15,
) )
@ -483,7 +495,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert_equal(result[0].id, ticket1.id) assert_equal(result[0].id, ticket1.id)
result = Ticket.search( result = Ticket.search(
current_user: agent, current_user: @agent,
query: 'article.from:"some_sender@example.com"', query: 'article.from:"some_sender@example.com"',
limit: 15, limit: 15,
) )
@ -491,25 +503,21 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert(!result[1], 'record 2') assert(!result[1], 'record 2')
assert_equal(result[0].id, ticket1.id) assert_equal(result[0].id, ticket1.id)
end
# check users and search it # check users and search it
test 'c - users' do # search as @agent
# search as agent
result = User.search( result = User.search(
current_user: agent, current_user: @agent,
query: 'customer1', query: 'customer1',
limit: 15, limit: 15,
) )
assert(!result.empty?, 'result should not be empty') assert(!result.empty?, 'result should not be empty')
assert(result[0], 'record 1') assert(result[0], 'record 1')
assert(!result[1], 'record 2') assert(!result[1], 'record 2')
assert_equal(result[0].id, customer1.id) assert_equal(result[0].id, @customer1.id)
# search as customer1 # search as @customer1
result = User.search( result = User.search(
current_user: customer1, current_user: @customer1,
query: 'customer1', query: 'customer1',
limit: 15, limit: 15,
) )
@ -517,7 +525,7 @@ class ElasticsearchTest < ActiveSupport::TestCase
assert(!result[0], 'record 1') assert(!result[0], 'record 1')
# cleanup # cleanup
system('rake searchindex:drop') Rake::Task['searchindex:drop'].execute
end end
end end

View file

@ -1,20 +1,22 @@
# encoding: utf-8 # encoding: utf-8
require 'integration_test_helper' require 'integration_test_helper'
require 'rake'
class ReportTest < ActiveSupport::TestCase class ReportTest < ActiveSupport::TestCase
setup do
# set config # set config
if !ENV['ES_URL'] if !ENV['ES_URL']
raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'" raise "ERROR: Need ES_URL - hint ES_URL='http://127.0.0.1:9200'"
end end
Setting.set('es_url', ENV['ES_URL']) Setting.set('es_url', ENV['ES_URL'])
if !ENV['ES_INDEX'] && !ENV['ES_INDEX_RAND'] if ENV['ES_INDEX_RAND'].present?
raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
end
if ENV['ES_INDEX_RAND']
ENV['ES_INDEX'] = "es_index_#{rand(999_999_999)}" ENV['ES_INDEX'] = "es_index_#{rand(999_999_999)}"
end end
Setting.set('es_index', ENV['ES_INDEX']) if ENV['ES_INDEX'].blank?
raise "ERROR: Need ES_INDEX - hint ES_INDEX='estest.local_zammad'"
end
# Setting.set('es_url', 'http://127.0.0.1:9200') # Setting.set('es_url', 'http://127.0.0.1:9200')
# Setting.set('es_index', 'estest.local_zammad') # Setting.set('es_index', 'estest.local_zammad')
@ -22,18 +24,14 @@ class ReportTest < ActiveSupport::TestCase
# Setting.set('es_password', 'zammad') # Setting.set('es_password', 'zammad')
# Setting.set('es_attachment_max_size_in_mb', 1) # Setting.set('es_attachment_max_size_in_mb', 1)
# clear cache
Cache.clear
# remove background jobs
Delayed::Job.destroy_all
Ticket.destroy_all Ticket.destroy_all
# drop/create indexes # drop/create indexes
Rake::Task.clear
Zammad::Application.load_tasks
#Rake::Task["searchindex:drop"].execute #Rake::Task["searchindex:drop"].execute
#Rake::Task["searchindex:create"].execute #Rake::Task["searchindex:create"].execute
system('rake searchindex:rebuild') Rake::Task['searchindex:rebuild'].execute
group1 = Group.lookup(name: 'Users') group1 = Group.lookup(name: 'Users')
group2 = Group.create_if_not_exists( group2 = Group.create_if_not_exists(
@ -42,9 +40,7 @@ class ReportTest < ActiveSupport::TestCase
created_by_id: 1 created_by_id: 1
) )
load "#{Rails.root}/test/fixtures/seeds.rb" @ticket1 = Ticket.create!(
ticket1 = Ticket.create(
title: 'test 1', title: 'test 1',
group: group2, group: group2,
customer_id: 2, customer_id: 2,
@ -55,8 +51,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article1 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket1.id, ticket_id: @ticket1.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -70,12 +66,12 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
ticket1.update_attributes( @ticket1.update_attributes(
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
updated_at: '2015-10-28 14:30:00 UTC', updated_at: '2015-10-28 14:30:00 UTC',
) )
ticket2 = Ticket.create( @ticket2 = Ticket.create!(
title: 'test 2', title: 'test 2',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -86,8 +82,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article2 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket2.id, ticket_id: @ticket2.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -101,12 +97,12 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
ticket2.update_attributes( @ticket2.update_attributes(
group_id: group2.id, group_id: group2.id,
updated_at: '2015-10-28 14:30:00 UTC', updated_at: '2015-10-28 14:30:00 UTC',
) )
ticket3 = Ticket.create( @ticket3 = Ticket.create!(
title: 'test 3', title: 'test 3',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -117,8 +113,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article3 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket3.id, ticket_id: @ticket3.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -133,7 +129,7 @@ class ReportTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
ticket4 = Ticket.create( @ticket4 = Ticket.create!(
title: 'test 4', title: 'test 4',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -145,8 +141,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article4 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket4.id, ticket_id: @ticket4.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -161,7 +157,7 @@ class ReportTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
ticket5 = Ticket.create( @ticket5 = Ticket.create!(
title: 'test 5', title: 'test 5',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -173,8 +169,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article5 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket5.id, ticket_id: @ticket5.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -188,12 +184,12 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
ticket5.update_attributes( @ticket5.update_attributes(
state: Ticket::State.lookup(name: 'open'), state: Ticket::State.lookup(name: 'open'),
updated_at: '2015-10-28 14:30:00 UTC', updated_at: '2015-10-28 14:30:00 UTC',
) )
ticket6 = Ticket.create( @ticket6 = Ticket.create!(
title: 'test 6', title: 'test 6',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -205,8 +201,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article6 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket6.id, ticket_id: @ticket6.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -221,7 +217,7 @@ class ReportTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
ticket7 = Ticket.create( @ticket7 = Ticket.create!(
title: 'test 7', title: 'test 7',
group: group1, group: group1,
customer_id: 2, customer_id: 2,
@ -233,8 +229,8 @@ class ReportTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article7 = Ticket::Article.create( Ticket::Article.create!(
ticket_id: ticket7.id, ticket_id: @ticket7.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
subject: 'some subject', subject: 'some subject',
@ -252,11 +248,11 @@ class ReportTest < ActiveSupport::TestCase
# execute background jobs # execute background jobs
Scheduler.worker(true) Scheduler.worker(true)
sleep 6 end
test 'a - first solution' do test 'compare' do
# month # first solution
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
range_end: '2015-12-31T23:59:59Z', range_end: '2015-12-31T23:59:59Z',
@ -276,7 +272,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(2, result[9]) assert_equal(2, result[9])
assert_equal(1, result[10]) assert_equal(1, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -284,10 +280,10 @@ class ReportTest < ActiveSupport::TestCase
selector: {}, # ticket selector to get only a collection of tickets selector: {}, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(ticket6.id, result[:ticket_ids][1]) assert_equal(@ticket6.id, result[:ticket_ids][1])
assert_equal(ticket7.id, result[:ticket_ids][2]) assert_equal(@ticket7.id, result[:ticket_ids][2])
assert_equal(nil, result[:ticket_ids][3]) assert_nil(result[:ticket_ids][3])
# month - with selector #1 # month - with selector #1
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
@ -314,7 +310,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -327,8 +323,8 @@ class ReportTest < ActiveSupport::TestCase
}, # ticket selector to get only a collection of tickets }, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
# month - with selector #2 # month - with selector #2
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
@ -355,7 +351,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(1, result[10]) assert_equal(1, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -368,9 +364,9 @@ class ReportTest < ActiveSupport::TestCase
}, # ticket selector to get only a collection of tickets }, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket6.id, result[:ticket_ids][0]) assert_equal(@ticket6.id, result[:ticket_ids][0])
assert_equal(ticket7.id, result[:ticket_ids][1]) assert_equal(@ticket7.id, result[:ticket_ids][1])
assert_equal(nil, result[:ticket_ids][2]) assert_nil(result[:ticket_ids][2])
# week # week
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
@ -387,7 +383,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(0, result[4]) assert_equal(0, result[4])
assert_equal(1, result[5]) assert_equal(1, result[5])
assert_equal(1, result[6]) assert_equal(1, result[6])
assert_equal(nil, result[7]) assert_nil(result[7])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-10-26T00:00:00Z', range_start: '2015-10-26T00:00:00Z',
@ -396,10 +392,10 @@ class ReportTest < ActiveSupport::TestCase
selector: {}, # ticket selector to get only a collection of tickets selector: {}, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(ticket6.id, result[:ticket_ids][1]) assert_equal(@ticket6.id, result[:ticket_ids][1])
assert_equal(ticket7.id, result[:ticket_ids][2]) assert_equal(@ticket7.id, result[:ticket_ids][2])
assert_equal(nil, result[:ticket_ids][3]) assert_nil(result[:ticket_ids][3])
# day # day
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
@ -440,7 +436,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(0, result[28]) assert_equal(0, result[28])
assert_equal(0, result[29]) assert_equal(0, result[29])
assert_equal(1, result[30]) assert_equal(1, result[30])
assert_equal(nil, result[31]) assert_nil(result[31])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-10-01T00:00:00Z', range_start: '2015-10-01T00:00:00Z',
@ -449,9 +445,9 @@ class ReportTest < ActiveSupport::TestCase
selector: {}, # ticket selector to get only a collection of tickets selector: {}, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(ticket6.id, result[:ticket_ids][1]) assert_equal(@ticket6.id, result[:ticket_ids][1])
assert_equal(nil, result[:ticket_ids][2]) assert_nil(result[:ticket_ids][2])
# hour # hour
result = Report::TicketFirstSolution.aggs( result = Report::TicketFirstSolution.aggs(
@ -485,7 +481,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(0, result[21]) assert_equal(0, result[21])
assert_equal(0, result[22]) assert_equal(0, result[22])
assert_equal(0, result[23]) assert_equal(0, result[23])
assert_equal(nil, result[24]) assert_nil(result[24])
result = Report::TicketFirstSolution.items( result = Report::TicketFirstSolution.items(
range_start: '2015-10-28T00:00:00Z', range_start: '2015-10-28T00:00:00Z',
@ -494,15 +490,10 @@ class ReportTest < ActiveSupport::TestCase
selector: {}, # ticket selector to get only a collection of tickets selector: {}, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
# created by channel and direction # reopen
end
test 'b - reopen' do
# month
result = Report::TicketReopened.aggs( result = Report::TicketReopened.aggs(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
range_end: '2015-12-31T23:59:59Z', range_end: '2015-12-31T23:59:59Z',
@ -522,7 +513,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketReopened.items( result = Report::TicketReopened.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -530,8 +521,8 @@ class ReportTest < ActiveSupport::TestCase
selector: {}, # ticket selector to get only a collection of tickets selector: {}, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
# month - with selector #1 # month - with selector #1
result = Report::TicketReopened.aggs( result = Report::TicketReopened.aggs(
@ -558,7 +549,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketReopened.items( result = Report::TicketReopened.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -571,8 +562,8 @@ class ReportTest < ActiveSupport::TestCase
}, # ticket selector to get only a collection of tickets }, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(ticket5.id, result[:ticket_ids][0]) assert_equal(@ticket5.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
# month - with selector #2 # month - with selector #2
result = Report::TicketReopened.aggs( result = Report::TicketReopened.aggs(
@ -599,7 +590,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(0, result[9]) assert_equal(0, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketReopened.items( result = Report::TicketReopened.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -612,13 +603,9 @@ class ReportTest < ActiveSupport::TestCase
}, # ticket selector to get only a collection of tickets }, # ticket selector to get only a collection of tickets
) )
assert(result) assert(result)
assert_equal(nil, result[:ticket_ids][0]) assert_nil(result[:ticket_ids][0])
end # move in/out
test 'c - move in/out' do
# month
result = Report::TicketMoved.aggs( result = Report::TicketMoved.aggs(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
range_end: '2015-12-31T23:59:59Z', range_end: '2015-12-31T23:59:59Z',
@ -646,7 +633,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketMoved.items( result = Report::TicketMoved.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -662,8 +649,8 @@ class ReportTest < ActiveSupport::TestCase
}, },
) )
assert(result) assert(result)
assert_equal(ticket1.id, result[:ticket_ids][0]) assert_equal(@ticket1.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
# out # out
result = Report::TicketMoved.aggs( result = Report::TicketMoved.aggs(
@ -693,7 +680,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(1, result[9]) assert_equal(1, result[9])
assert_equal(0, result[10]) assert_equal(0, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketMoved.items( result = Report::TicketMoved.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -709,14 +696,10 @@ class ReportTest < ActiveSupport::TestCase
}, },
) )
assert(result) assert(result)
assert_equal(ticket2.id, result[:ticket_ids][0]) assert_equal(@ticket2.id, result[:ticket_ids][0])
assert_equal(nil, result[:ticket_ids][1]) assert_nil(result[:ticket_ids][1])
end # create at
test 'd - created at' do
# month
result = Report::TicketGenericTime.aggs( result = Report::TicketGenericTime.aggs(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
range_end: '2015-12-31T23:59:59Z', range_end: '2015-12-31T23:59:59Z',
@ -737,7 +720,7 @@ class ReportTest < ActiveSupport::TestCase
assert_equal(6, result[9]) assert_equal(6, result[9])
assert_equal(1, result[10]) assert_equal(1, result[10])
assert_equal(0, result[11]) assert_equal(0, result[11])
assert_equal(nil, result[12]) assert_nil(result[12])
result = Report::TicketGenericTime.items( result = Report::TicketGenericTime.items(
range_start: '2015-01-01T00:00:00Z', range_start: '2015-01-01T00:00:00Z',
@ -747,17 +730,17 @@ class ReportTest < ActiveSupport::TestCase
) )
assert(result) assert(result)
assert_equal(ticket7.id, result[:ticket_ids][0].to_i) assert_equal(@ticket7.id, result[:ticket_ids][0].to_i)
assert_equal(ticket6.id, result[:ticket_ids][1].to_i) assert_equal(@ticket6.id, result[:ticket_ids][1].to_i)
assert_equal(ticket5.id, result[:ticket_ids][2].to_i) assert_equal(@ticket5.id, result[:ticket_ids][2].to_i)
assert_equal(ticket3.id, result[:ticket_ids][3].to_i) assert_equal(@ticket3.id, result[:ticket_ids][3].to_i)
assert_equal(ticket4.id, result[:ticket_ids][4].to_i) assert_equal(@ticket4.id, result[:ticket_ids][4].to_i)
assert_equal(ticket2.id, result[:ticket_ids][5].to_i) assert_equal(@ticket2.id, result[:ticket_ids][5].to_i)
assert_equal(ticket1.id, result[:ticket_ids][6].to_i) assert_equal(@ticket1.id, result[:ticket_ids][6].to_i)
assert_equal(nil, result[:ticket_ids][7]) assert_nil(result[:ticket_ids][7])
# cleanup # cleanup
system('rake searchindex:drop') Rake::Task['searchindex:drop'].execute
end end
end end

View file

@ -7,6 +7,9 @@ class ActiveSupport::TestCase
# disable transactions # disable transactions
#self.use_transactional_fixtures = false #self.use_transactional_fixtures = false
ActiveRecord::Base.logger = Rails.logger.clone
ActiveRecord::Base.logger.level = Logger::INFO
# clear cache # clear cache
Cache.clear Cache.clear
@ -19,8 +22,14 @@ class ActiveSupport::TestCase
# clear cache # clear cache
Cache.clear Cache.clear
# remove all session messages
Sessions.cleanup
# remove background jobs # remove background jobs
Delayed::Job.destroy_all Delayed::Job.destroy_all
Trigger.destroy_all
ActivityStream.destroy_all
PostmasterFilter.destroy_all
# set current user # set current user
UserInfo.current_user_id = nil UserInfo.current_user_id = nil

View file

@ -12,6 +12,9 @@ Coveralls.wear!
class ActiveSupport::TestCase class ActiveSupport::TestCase
self.test_order = :sorted self.test_order = :sorted
ActiveRecord::Base.logger = Rails.logger.clone
ActiveRecord::Base.logger.level = Logger::INFO
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
# #
# Note: You'll currently still have to declare fixtures explicitly in integration tests # Note: You'll currently still have to declare fixtures explicitly in integration tests
@ -37,7 +40,14 @@ class ActiveSupport::TestCase
# set system mode to done / to activate # set system mode to done / to activate
Setting.set('system_init_done', true) Setting.set('system_init_done', true)
def setup setup do
# exit all threads
Thread.list.each do |thread|
next if thread == Thread.current
thread.exit
thread.join
end
# clear cache # clear cache
Cache.clear Cache.clear
@ -52,6 +62,14 @@ class ActiveSupport::TestCase
PostmasterFilter.destroy_all PostmasterFilter.destroy_all
Ticket.destroy_all Ticket.destroy_all
# reset settings
Setting.all.pluck(:name).each { |name|
next if name == 'models_searchable' # skip setting
Setting.reset(name, false)
}
Setting.set('system_init_done', true)
Setting.reload
# set current user # set current user
UserInfo.current_user_id = nil UserInfo.current_user_id = nil

View file

@ -2,12 +2,11 @@
require 'test_helper' require 'test_helper'
class ActivityStreamTest < ActiveSupport::TestCase class ActivityStreamTest < ActiveSupport::TestCase
admin_user = nil
current_user = nil setup do
test 'aaa - setup' do
roles = Role.where(name: %w(Admin Agent)) roles = Role.where(name: %w(Admin Agent))
group = Group.lookup(name: 'Users') groups = Group.where(name: 'Users')
admin_user = User.create_or_update( @admin_user = User.create_or_update(
login: 'admin', login: 'admin',
firstname: 'Bob', firstname: 'Bob',
lastname: 'Smith', lastname: 'Smith',
@ -15,30 +14,31 @@ class ActivityStreamTest < ActiveSupport::TestCase
password: 'some_pass', password: 'some_pass',
active: true, active: true,
roles: roles, roles: roles,
group_ids: [group.id], groups: groups,
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1 created_by_id: 1
) )
current_user = User.lookup(email: 'nicole.braun@zammad.org') @current_user = User.lookup(email: 'nicole.braun@zammad.org')
ActivityStream.delete_all
end end
test 'ticket+user' do test 'ticket+user' do
ticket = Ticket.create( ticket = Ticket.create(
group_id: Group.lookup(name: 'Users').id, group_id: Group.lookup(name: 'Users').id,
customer_id: current_user.id, customer_id: @current_user.id,
owner_id: User.lookup(login: '-').id, owner_id: User.lookup(login: '-').id,
title: 'Unit Test 1 (äöüß)!', title: 'Unit Test 1 (äöüß)!',
state_id: Ticket::State.lookup(name: 'new').id, state_id: Ticket::State.lookup(name: 'new').id,
priority_id: Ticket::Priority.lookup(name: '2 normal').id, priority_id: Ticket::Priority.lookup(name: '2 normal').id,
updated_by_id: current_user.id, updated_by_id: @current_user.id,
created_by_id: current_user.id, created_by_id: @current_user.id,
) )
travel 2.seconds travel 2.seconds
article = Ticket::Article.create( article = Ticket::Article.create(
ticket_id: ticket.id, ticket_id: ticket.id,
updated_by_id: current_user.id, updated_by_id: @current_user.id,
created_by_id: current_user.id, created_by_id: @current_user.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -61,28 +61,28 @@ class ActivityStreamTest < ActiveSupport::TestCase
) )
# check activity_stream # check activity_stream
stream = admin_user.activity_stream(4) stream = @admin_user.activity_stream(4)
assert_equal(stream[0]['group_id'], ticket.group_id) assert_equal(stream[0]['group_id'], ticket.group_id)
assert_equal(stream[0]['o_id'], ticket.id) assert_equal(stream[0]['o_id'], ticket.id)
assert_equal(stream[0]['created_by_id'], current_user.id) assert_equal(stream[0]['created_by_id'], @current_user.id)
assert_equal(stream[0]['created_at'].to_s, updated_at.to_s) assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
assert_equal(stream[0]['object'], 'Ticket') assert_equal(stream[0]['object'], 'Ticket')
assert_equal(stream[0]['type'], 'update') assert_equal(stream[0]['type'], 'update')
assert_equal(stream[1]['group_id'], ticket.group_id) assert_equal(stream[1]['group_id'], ticket.group_id)
assert_equal(stream[1]['o_id'], article.id) assert_equal(stream[1]['o_id'], article.id)
assert_equal(stream[1]['created_by_id'], current_user.id) assert_equal(stream[1]['created_by_id'], @current_user.id)
assert_equal(stream[1]['created_at'].to_s, article.created_at.to_s) assert_equal(stream[1]['created_at'].to_s, article.created_at.to_s)
assert_equal(stream[1]['object'], 'Ticket::Article') assert_equal(stream[1]['object'], 'Ticket::Article')
assert_equal(stream[1]['type'], 'create') assert_equal(stream[1]['type'], 'create')
assert_equal(stream[2]['group_id'], ticket.group_id) assert_equal(stream[2]['group_id'], ticket.group_id)
assert_equal(stream[2]['o_id'], ticket.id) assert_equal(stream[2]['o_id'], ticket.id)
assert_equal(stream[2]['created_by_id'], current_user.id) assert_equal(stream[2]['created_by_id'], @current_user.id)
assert_equal(stream[2]['created_at'].to_s, ticket.created_at.to_s) assert_equal(stream[2]['created_at'].to_s, ticket.created_at.to_s)
assert_equal(stream[2]['object'], 'Ticket') assert_equal(stream[2]['object'], 'Ticket')
assert_equal(stream[2]['type'], 'create') assert_equal(stream[2]['type'], 'create')
assert_not(stream[3]) assert_not(stream[3])
stream = current_user.activity_stream(4) stream = @current_user.activity_stream(4)
assert(stream.empty?) assert(stream.empty?)
# cleanup # cleanup
@ -91,11 +91,10 @@ class ActivityStreamTest < ActiveSupport::TestCase
end end
test 'organization' do test 'organization' do
organization = Organization.create( organization = Organization.create(
name: 'some name', name: 'some name',
updated_by_id: current_user.id, updated_by_id: @current_user.id,
created_by_id: current_user.id, created_by_id: @current_user.id,
) )
travel 100.seconds travel 100.seconds
assert_equal(organization.class, Organization) assert_equal(organization.class, Organization)
@ -107,22 +106,22 @@ class ActivityStreamTest < ActiveSupport::TestCase
organization.update_attributes(name: 'some name 2 (äöüß)') organization.update_attributes(name: 'some name 2 (äöüß)')
# check activity_stream # check activity_stream
stream = admin_user.activity_stream(3) stream = @admin_user.activity_stream(3)
assert_not(stream[0]['group_id']) assert_not(stream[0]['group_id'])
assert_equal(stream[0]['o_id'], organization.id) assert_equal(stream[0]['o_id'], organization.id)
assert_equal(stream[0]['created_by_id'], current_user.id) assert_equal(stream[0]['created_by_id'], @current_user.id)
assert_equal(stream[0]['created_at'].to_s, updated_at.to_s) assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
assert_equal(stream[0]['object'], 'Organization') assert_equal(stream[0]['object'], 'Organization')
assert_equal(stream[0]['type'], 'update') assert_equal(stream[0]['type'], 'update')
assert_not(stream[1]['group_id']) assert_not(stream[1]['group_id'])
assert_equal(stream[1]['o_id'], organization.id) assert_equal(stream[1]['o_id'], organization.id)
assert_equal(stream[1]['created_by_id'], current_user.id) assert_equal(stream[1]['created_by_id'], @current_user.id)
assert_equal(stream[1]['created_at'].to_s, organization.created_at.to_s) assert_equal(stream[1]['created_at'].to_s, organization.created_at.to_s)
assert_equal(stream[1]['object'], 'Organization') assert_equal(stream[1]['object'], 'Organization')
assert_equal(stream[1]['type'], 'create') assert_equal(stream[1]['type'], 'create')
assert_not(stream[2]) assert_not(stream[2])
stream = current_user.activity_stream(4) stream = @current_user.activity_stream(4)
assert(stream.empty?) assert(stream.empty?)
# cleanup # cleanup
@ -135,8 +134,8 @@ class ActivityStreamTest < ActiveSupport::TestCase
login: 'someemail@example.com', login: 'someemail@example.com',
email: 'someemail@example.com', email: 'someemail@example.com',
firstname: 'Bob Smith II', firstname: 'Bob Smith II',
updated_by_id: current_user.id, updated_by_id: @current_user.id,
created_by_id: current_user.id, created_by_id: @current_user.id,
) )
assert_equal(user.class, User) assert_equal(user.class, User)
user.update_attributes( user.update_attributes(
@ -145,16 +144,16 @@ class ActivityStreamTest < ActiveSupport::TestCase
) )
# check activity_stream # check activity_stream
stream = admin_user.activity_stream(3) stream = @admin_user.activity_stream(3)
assert_not(stream[0]['group_id']) assert_not(stream[0]['group_id'])
assert_equal(stream[0]['o_id'], user.id) assert_equal(stream[0]['o_id'], user.id)
assert_equal(stream[0]['created_by_id'], current_user.id) assert_equal(stream[0]['created_by_id'], @current_user.id)
assert_equal(stream[0]['created_at'].to_s, user.created_at.to_s) assert_equal(stream[0]['created_at'].to_s, user.created_at.to_s)
assert_equal(stream[0]['object'], 'User') assert_equal(stream[0]['object'], 'User')
assert_equal(stream[0]['type'], 'create') assert_equal(stream[0]['type'], 'create')
assert_not(stream[1]) assert_not(stream[1])
stream = current_user.activity_stream(4) stream = @current_user.activity_stream(4)
assert(stream.empty?) assert(stream.empty?)
# cleanup # cleanup
@ -163,13 +162,12 @@ class ActivityStreamTest < ActiveSupport::TestCase
end end
test 'user with update check true' do test 'user with update check true' do
user = User.create( user = User.create(
login: 'someemail@example.com', login: 'someemail@example.com',
email: 'someemail@example.com', email: 'someemail@example.com',
firstname: 'Bob Smith II', firstname: 'Bob Smith II',
updated_by_id: current_user.id, updated_by_id: @current_user.id,
created_by_id: current_user.id, created_by_id: @current_user.id,
) )
travel 100.seconds travel 100.seconds
assert_equal(user.class, User) assert_equal(user.class, User)
@ -187,22 +185,22 @@ class ActivityStreamTest < ActiveSupport::TestCase
) )
# check activity_stream # check activity_stream
stream = admin_user.activity_stream(3) stream = @admin_user.activity_stream(3)
assert_not(stream[0]['group_id']) assert_not(stream[0]['group_id'])
assert_equal(stream[0]['o_id'], user.id) assert_equal(stream[0]['o_id'], user.id)
assert_equal(stream[0]['created_by_id'], current_user.id) assert_equal(stream[0]['created_by_id'], @current_user.id)
assert_equal(stream[0]['created_at'].to_s, updated_at.to_s) assert_equal(stream[0]['created_at'].to_s, updated_at.to_s)
assert_equal(stream[0]['object'], 'User') assert_equal(stream[0]['object'], 'User')
assert_equal(stream[0]['type'], 'update') assert_equal(stream[0]['type'], 'update')
assert_not(stream[1]['group_id']) assert_not(stream[1]['group_id'])
assert_equal(stream[1]['o_id'], user.id) assert_equal(stream[1]['o_id'], user.id)
assert_equal(stream[1]['created_by_id'], current_user.id) assert_equal(stream[1]['created_by_id'], @current_user.id)
assert_equal(stream[1]['created_at'].to_s, user.created_at.to_s) assert_equal(stream[1]['created_at'].to_s, user.created_at.to_s)
assert_equal(stream[1]['object'], 'User') assert_equal(stream[1]['object'], 'User')
assert_equal(stream[1]['type'], 'create') assert_equal(stream[1]['type'], 'create')
assert_not(stream[2]) assert_not(stream[2])
stream = current_user.activity_stream(4) stream = @current_user.activity_stream(4)
assert(stream.empty?) assert(stream.empty?)
# cleanup # cleanup

View file

@ -43,7 +43,7 @@ class CacheTest < ActiveSupport::TestCase
# test 6 # test 6
Cache.write('123', { key: 'some valueöäüß2' }, expires_in: 3.seconds) Cache.write('123', { key: 'some valueöäüß2' }, expires_in: 3.seconds)
sleep 5 travel 5.seconds
cache = Cache.get('123') cache = Cache.get('123')
assert_nil(cache) assert_nil(cache)
end end

View file

@ -2,14 +2,11 @@
require 'test_helper' require 'test_helper'
class ChatTest < ActiveSupport::TestCase class ChatTest < ActiveSupport::TestCase
agent1 = nil
agent2 = nil
test 'aaa - setup' do
# create base setup do
groups = Group.all groups = Group.all
roles = Role.where( name: %w(Agent) ) roles = Role.where( name: %w(Agent) )
agent1 = User.create_or_update( @agent1 = User.create_or_update(
login: 'ticket-chat-agent1@example.com', login: 'ticket-chat-agent1@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Agent1', lastname: 'Agent1',
@ -22,7 +19,7 @@ class ChatTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
agent2 = User.create_or_update( @agent2 = User.create_or_update(
login: 'ticket-chat-agent2@example.com', login: 'ticket-chat-agent2@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Agent2', lastname: 'Agent2',
@ -35,15 +32,16 @@ class ChatTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
end
test 'default test' do
Chat.delete_all Chat.delete_all
Chat::Session.delete_all Chat::Session.delete_all
Chat::Message.delete_all Chat::Message.delete_all
Chat::Agent.delete_all Chat::Agent.delete_all
Setting.set('chat', false) Setting.set('chat', false)
end
test 'default test' do
chat = Chat.create_or_update( chat = Chat.create_or_update(
name: 'default', name: 'default',
max_queue: 5, max_queue: 5,
@ -55,14 +53,14 @@ class ChatTest < ActiveSupport::TestCase
# check if feature is disabled # check if feature is disabled
assert_equal('chat_disabled', chat.customer_state[:state]) assert_equal('chat_disabled', chat.customer_state[:state])
assert_equal('chat_disabled', Chat.agent_state(agent1.id)[:state]) assert_equal('chat_disabled', Chat.agent_state(@agent1.id)[:state])
Setting.set('chat', true) Setting.set('chat', true)
# check customer state # check customer state
assert_equal('offline', chat.customer_state[:state]) assert_equal('offline', chat.customer_state[:state])
# check agent state # check agent state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(0, agent_state[:waiting_chat_count]) assert_equal(0, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -74,15 +72,15 @@ class ChatTest < ActiveSupport::TestCase
chat_agent1 = Chat::Agent.create_or_update( chat_agent1 = Chat::Agent.create_or_update(
active: true, active: true,
concurrent: 4, concurrent: 4,
updated_by_id: agent1.id, updated_by_id: @agent1.id,
created_by_id: agent1.id, created_by_id: @agent1.id,
) )
# check customer state # check customer state
assert_equal('online', chat.customer_state[:state]) assert_equal('online', chat.customer_state[:state])
# check agent state # check agent state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(0, agent_state[:waiting_chat_count]) assert_equal(0, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -93,7 +91,7 @@ class ChatTest < ActiveSupport::TestCase
# start session # start session
chat_session1 = Chat::Session.create( chat_session1 = Chat::Session.create(
chat_id: chat.id, chat_id: chat.id,
user_id: agent1.id, user_id: @agent1.id,
) )
assert(chat_session1.session_id) assert(chat_session1.session_id)
@ -101,7 +99,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal('online', chat.customer_state[:state]) assert_equal('online', chat.customer_state[:state])
# check agent state # check agent state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(1, agent_state[:waiting_chat_count]) assert_equal(1, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -113,15 +111,15 @@ class ChatTest < ActiveSupport::TestCase
chat_agent2 = Chat::Agent.create_or_update( chat_agent2 = Chat::Agent.create_or_update(
active: true, active: true,
concurrent: 2, concurrent: 2,
updated_by_id: agent2.id, updated_by_id: @agent2.id,
created_by_id: agent2.id, created_by_id: @agent2.id,
) )
# check customer state # check customer state
assert_equal('online', chat.customer_state[:state]) assert_equal('online', chat.customer_state[:state])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(1, agent_state[:waiting_chat_count]) assert_equal(1, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -130,7 +128,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(1, agent_state[:waiting_chat_count]) assert_equal(1, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -147,7 +145,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal('online', chat.customer_state[:state]) assert_equal('online', chat.customer_state[:state])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(2, agent_state[:waiting_chat_count]) assert_equal(2, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -156,7 +154,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(2, agent_state[:waiting_chat_count]) assert_equal(2, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -182,7 +180,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal('no_seats_available', chat.customer_state[:state]) assert_equal('no_seats_available', chat.customer_state[:state])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(6, agent_state[:waiting_chat_count]) assert_equal(6, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -191,7 +189,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(6, agent_state[:waiting_chat_count]) assert_equal(6, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -199,26 +197,26 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(6, agent_state[:seads_total]) assert_equal(6, agent_state[:seads_total])
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
chat_session6.user_id = agent1.id chat_session6.user_id = @agent1.id
chat_session6.state = 'running' chat_session6.state = 'running'
chat_session6.save chat_session6.save
Chat::Message.create( Chat::Message.create(
chat_session_id: chat_session6.id, chat_session_id: chat_session6.id,
content: 'message 1', content: 'message 1',
created_by_id: agent1.id, created_by_id: @agent1.id,
) )
travel 1.second travel 1.second
Chat::Message.create( Chat::Message.create(
chat_session_id: chat_session6.id, chat_session_id: chat_session6.id,
content: 'message 2', content: 'message 2',
created_by_id: agent1.id, created_by_id: @agent1.id,
) )
travel 1.second travel 1.second
Chat::Message.create( Chat::Message.create(
chat_session_id: chat_session6.id, chat_session_id: chat_session6.id,
content: 'message 3', content: 'message 3',
created_by_id: agent1.id, created_by_id: @agent1.id,
) )
travel 1.second travel 1.second
Chat::Message.create( Chat::Message.create(
@ -245,12 +243,12 @@ class ChatTest < ActiveSupport::TestCase
assert_nil(customer_state[:agent][:avatar]) assert_nil(customer_state[:agent][:avatar])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(1, agent_state[:running_chat_count]) assert_equal(1, agent_state[:running_chat_count])
assert_equal(Array, agent_state[:active_sessions].class) assert_equal(Array, agent_state[:active_sessions].class)
assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id']) assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id'])
assert_equal(agent1.id, agent_state[:active_sessions][0]['user_id']) assert_equal(@agent1.id, agent_state[:active_sessions][0]['user_id'])
assert(agent_state[:active_sessions][0]['messages']) assert(agent_state[:active_sessions][0]['messages'])
assert_equal(Array, agent_state[:active_sessions][0]['messages'].class) assert_equal(Array, agent_state[:active_sessions][0]['messages'].class)
assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content']) assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content'])
@ -262,7 +260,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(1, agent_state[:running_chat_count]) assert_equal(1, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -278,12 +276,12 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(5, chat.customer_state[:queue]) assert_equal(5, chat.customer_state[:queue])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(1, agent_state[:running_chat_count]) assert_equal(1, agent_state[:running_chat_count])
assert_equal(Array, agent_state[:active_sessions].class) assert_equal(Array, agent_state[:active_sessions].class)
assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id']) assert_equal(chat.id, agent_state[:active_sessions][0]['chat_id'])
assert_equal(agent1.id, agent_state[:active_sessions][0]['user_id']) assert_equal(@agent1.id, agent_state[:active_sessions][0]['user_id'])
assert(agent_state[:active_sessions][0]['messages']) assert(agent_state[:active_sessions][0]['messages'])
assert_equal(Array, agent_state[:active_sessions][0]['messages'].class) assert_equal(Array, agent_state[:active_sessions][0]['messages'].class)
assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content']) assert_equal('message 1', agent_state[:active_sessions][0]['messages'][0]['content'])
@ -295,7 +293,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(1, agent_state[:running_chat_count]) assert_equal(1, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -311,7 +309,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(5, chat.customer_state[:queue]) assert_equal(5, chat.customer_state[:queue])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -320,7 +318,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(5, agent_state[:waiting_chat_count]) assert_equal(5, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -335,7 +333,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal('online', chat.customer_state[:state]) assert_equal('online', chat.customer_state[:state])
# check agent1 state # check agent1 state
agent_state = Chat.agent_state_with_sessions(agent1.id) agent_state = Chat.agent_state_with_sessions(@agent1.id)
assert_equal(3, agent_state[:waiting_chat_count]) assert_equal(3, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])
@ -344,7 +342,7 @@ class ChatTest < ActiveSupport::TestCase
assert_equal(true, agent_state[:active]) assert_equal(true, agent_state[:active])
# check agent2 state # check agent2 state
agent_state = Chat.agent_state_with_sessions(agent2.id) agent_state = Chat.agent_state_with_sessions(@agent2.id)
assert_equal(3, agent_state[:waiting_chat_count]) assert_equal(3, agent_state[:waiting_chat_count])
assert_equal(0, agent_state[:running_chat_count]) assert_equal(0, agent_state[:running_chat_count])
assert_equal([], agent_state[:active_sessions]) assert_equal([], agent_state[:active_sessions])

View file

@ -2,18 +2,15 @@
require 'test_helper' require 'test_helper'
class OnlineNotificationTest < ActiveSupport::TestCase class OnlineNotificationTest < ActiveSupport::TestCase
group = nil
agent_user1 = nil setup do
agent_user2 = nil
customer_user = nil
test 'aaa - setup' do
role = Role.lookup(name: 'Agent') role = Role.lookup(name: 'Agent')
group = Group.create_or_update( @group = Group.create_or_update(
name: 'OnlineNotificationTest', name: 'OnlineNotificationTest',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1 created_by_id: 1
) )
agent_user1 = User.create_or_update( @agent_user1 = User.create_or_update(
login: 'agent_online_notify1', login: 'agent_online_notify1',
firstname: 'Bob', firstname: 'Bob',
lastname: 'Smith', lastname: 'Smith',
@ -21,11 +18,11 @@ class OnlineNotificationTest < ActiveSupport::TestCase
password: 'some_pass', password: 'some_pass',
active: true, active: true,
role_ids: [role.id], role_ids: [role.id],
group_ids: [group.id], group_ids: [@group.id],
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1 created_by_id: 1
) )
agent_user2 = User.create_or_update( @agent_user2 = User.create_or_update(
login: 'agent_online_notify2', login: 'agent_online_notify2',
firstname: 'Bob', firstname: 'Bob',
lastname: 'Smith', lastname: 'Smith',
@ -33,11 +30,11 @@ class OnlineNotificationTest < ActiveSupport::TestCase
password: 'some_pass', password: 'some_pass',
active: true, active: true,
role_ids: [role.id], role_ids: [role.id],
group_ids: [group.id], group_ids: [@group.id],
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1 created_by_id: 1
) )
customer_user = User.lookup(email: 'nicole.braun@zammad.org') @customer_user = User.lookup(email: 'nicole.braun@zammad.org')
end end
test 'ticket notification' do test 'ticket notification' do
@ -46,19 +43,19 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# case #1 # case #1
ticket1 = Ticket.create( ticket1 = Ticket.create(
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
owner_id: User.lookup(login: '-').id, owner_id: User.lookup(login: '-').id,
title: 'Unit Test 1 (äöüß)!', title: 'Unit Test 1 (äöüß)!',
state_id: Ticket::State.lookup(name: 'closed').id, state_id: Ticket::State.lookup(name: 'closed').id,
priority_id: Ticket::Priority.lookup(name: '2 normal').id, priority_id: Ticket::Priority.lookup(name: '2 normal').id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
) )
article1 = Ticket::Article.create( article1 = Ticket::Article.create(
ticket_id: ticket1.id, ticket_id: ticket1.id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -76,16 +73,16 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already closed # because it's already closed
assert(OnlineNotification.all_seen?('Ticket', ticket1.id)) assert(OnlineNotification.all_seen?('Ticket', ticket1.id))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket1.id, 'create', agent_user1, false)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket1.id, 'create', @agent_user1, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket1.id, 'create', agent_user1, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket1.id, 'create', @agent_user1, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket1.id, 'create', agent_user1, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket1.id, 'create', @agent_user1, false))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket1.id, 'create', agent_user1, true)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket1.id, 'create', @agent_user1, true))
ticket1.update_attributes( ticket1.update_attributes(
title: 'Unit Test 1 (äöüß) - update!', title: 'Unit Test 1 (äöüß) - update!',
state_id: Ticket::State.lookup(name: 'open').id, state_id: Ticket::State.lookup(name: 'open').id,
priority_id: Ticket::Priority.lookup(name: '1 low').id, priority_id: Ticket::Priority.lookup(name: '1 low').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
) )
# execute object transaction # execute object transaction
@ -94,26 +91,26 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already open # because it's already open
assert(!OnlineNotification.all_seen?('Ticket', ticket1.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket1.id))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket1.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket1.id, 'update', @customer_user, true))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket1.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket1.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket1.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket1.id, 'update', @customer_user, true))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket1.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket1.id, 'update', @customer_user, false))
# case #2 # case #2
ticket2 = Ticket.create( ticket2 = Ticket.create(
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
owner_id: agent_user1.id, owner_id: @agent_user1.id,
title: 'Unit Test 1 (äöüß)!', title: 'Unit Test 1 (äöüß)!',
state_id: Ticket::State.lookup(name: 'closed').id, state_id: Ticket::State.lookup(name: 'closed').id,
priority_id: Ticket::Priority.lookup(name: '2 normal').id, priority_id: Ticket::Priority.lookup(name: '2 normal').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
created_by_id: customer_user.id, created_by_id: @customer_user.id,
) )
article2 = Ticket::Article.create( article2 = Ticket::Article.create(
ticket_id: ticket2.id, ticket_id: ticket2.id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
created_by_id: customer_user.id, created_by_id: @customer_user.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -131,16 +128,16 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already closed # because it's already closed
assert(!OnlineNotification.all_seen?('Ticket', ticket2.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket2.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket2.id, 'create', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket2.id, 'create', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket2.id, 'create', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket2.id, 'create', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket2.id, 'create', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket2.id, 'create', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket2.id, 'create', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket2.id, 'create', @customer_user, true))
ticket2.update_attributes( ticket2.update_attributes(
title: 'Unit Test 1 (äöüß) - update!', title: 'Unit Test 1 (äöüß) - update!',
state_id: Ticket::State.lookup(name: 'open').id, state_id: Ticket::State.lookup(name: 'open').id,
priority_id: Ticket::Priority.lookup(name: '1 low').id, priority_id: Ticket::Priority.lookup(name: '1 low').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
) )
# execute object transaction # execute object transaction
@ -149,26 +146,26 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already open # because it's already open
assert(!OnlineNotification.all_seen?('Ticket', ticket2.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket2.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket2.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket2.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket2.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket2.id, 'update', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket2.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket2.id, 'update', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket2.id, 'update', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket2.id, 'update', @customer_user, false))
# case #3 # case #3
ticket3 = Ticket.create( ticket3 = Ticket.create(
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
owner_id: User.lookup(login: '-').id, owner_id: User.lookup(login: '-').id,
title: 'Unit Test 2 (äöüß)!', title: 'Unit Test 2 (äöüß)!',
state_id: Ticket::State.lookup(name: 'new').id, state_id: Ticket::State.lookup(name: 'new').id,
priority_id: Ticket::Priority.lookup(name: '2 normal').id, priority_id: Ticket::Priority.lookup(name: '2 normal').id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
) )
article3 = Ticket::Article.create( article3 = Ticket::Article.create(
ticket_id: ticket3.id, ticket_id: ticket3.id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -185,16 +182,16 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already new # because it's already new
assert(!OnlineNotification.all_seen?('Ticket', ticket3.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket3.id))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'create', agent_user1, false)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'create', @agent_user1, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'create', agent_user1, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'create', @agent_user1, true))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'create', agent_user1, false)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'create', @agent_user1, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'create', agent_user1, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'create', @agent_user1, true))
ticket3.update_attributes( ticket3.update_attributes(
title: 'Unit Test 2 (äöüß) - update!', title: 'Unit Test 2 (äöüß) - update!',
state_id: Ticket::State.lookup(name: 'closed').id, state_id: Ticket::State.lookup(name: 'closed').id,
priority_id: Ticket::Priority.lookup(name: '1 low').id, priority_id: Ticket::Priority.lookup(name: '1 low').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
) )
# execute object transaction # execute object transaction
@ -203,17 +200,17 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already closed # because it's already closed
assert(OnlineNotification.all_seen?('Ticket', ticket3.id)) assert(OnlineNotification.all_seen?('Ticket', ticket3.id))
assert_equal(1, NotificationFactory::Mailer.already_sent?(ticket3, agent_user1, 'update')) assert_equal(1, NotificationFactory::Mailer.already_sent?(ticket3, @agent_user1, 'update'))
assert_equal(1, NotificationFactory::Mailer.already_sent?(ticket3, agent_user2, 'update')) assert_equal(1, NotificationFactory::Mailer.already_sent?(ticket3, @agent_user2, 'update'))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'update', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'update', @customer_user, false))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'update', customer_user, true)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'update', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'update', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'update', @customer_user, false))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'update', customer_user, true)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'update', @customer_user, true))
article3 = Ticket::Article.create( article3 = Ticket::Article.create(
ticket_id: ticket3.id, ticket_id: ticket3.id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
created_by_id: customer_user.id, created_by_id: @customer_user.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -227,28 +224,28 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already closed but an follow up arrived later # because it's already closed but an follow up arrived later
assert(!OnlineNotification.all_seen?('Ticket', ticket3.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket3.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'update', @customer_user, false))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket3.id, 'update', customer_user, true)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket3.id, 'update', @customer_user, true))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'update', @customer_user, false))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket3.id, 'update', customer_user, true)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket3.id, 'update', @customer_user, true))
assert_equal(2, NotificationFactory::Mailer.already_sent?(ticket3, agent_user1, 'update')) assert_equal(2, NotificationFactory::Mailer.already_sent?(ticket3, @agent_user1, 'update'))
assert_equal(2, NotificationFactory::Mailer.already_sent?(ticket3, agent_user2, 'update')) assert_equal(2, NotificationFactory::Mailer.already_sent?(ticket3, @agent_user2, 'update'))
# case #4 # case #4
ticket4 = Ticket.create( ticket4 = Ticket.create(
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
owner_id: agent_user1.id, owner_id: @agent_user1.id,
title: 'Unit Test 3 (äöüß)!', title: 'Unit Test 3 (äöüß)!',
state_id: Ticket::State.lookup(name: 'new').id, state_id: Ticket::State.lookup(name: 'new').id,
priority_id: Ticket::Priority.lookup(name: '2 normal').id, priority_id: Ticket::Priority.lookup(name: '2 normal').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
created_by_id: customer_user.id, created_by_id: @customer_user.id,
) )
article4 = Ticket::Article.create( article4 = Ticket::Article.create(
ticket_id: ticket4.id, ticket_id: ticket4.id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
created_by_id: customer_user.id, created_by_id: @customer_user.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -265,16 +262,16 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already new # because it's already new
assert(!OnlineNotification.all_seen?('Ticket', ticket4.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket4.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket4.id, 'create', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket4.id, 'create', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket4.id, 'create', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket4.id, 'create', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket4.id, 'create', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket4.id, 'create', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket4.id, 'create', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket4.id, 'create', @customer_user, true))
ticket4.update_attributes( ticket4.update_attributes(
title: 'Unit Test 3 (äöüß) - update!', title: 'Unit Test 3 (äöüß) - update!',
state_id: Ticket::State.lookup(name: 'open').id, state_id: Ticket::State.lookup(name: 'open').id,
priority_id: Ticket::Priority.lookup(name: '1 low').id, priority_id: Ticket::Priority.lookup(name: '1 low').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
) )
# execute object transaction # execute object transaction
@ -283,26 +280,26 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already open # because it's already open
assert(!OnlineNotification.all_seen?('Ticket', ticket4.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket4.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket4.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket4.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket4.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket4.id, 'update', @customer_user, true))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket4.id, 'update', customer_user, false)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket4.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket4.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket4.id, 'update', @customer_user, true))
# case #5 # case #5
ticket5 = Ticket.create( ticket5 = Ticket.create(
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
owner_id: User.lookup(login: '-').id, owner_id: User.lookup(login: '-').id,
title: 'Unit Test 4 (äöüß)!', title: 'Unit Test 4 (äöüß)!',
state_id: Ticket::State.lookup(name: 'new').id, state_id: Ticket::State.lookup(name: 'new').id,
priority_id: Ticket::Priority.lookup( name: '2 normal').id, priority_id: Ticket::Priority.lookup( name: '2 normal').id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
) )
article5 = Ticket::Article.create( article5 = Ticket::Article.create(
ticket_id: ticket5.id, ticket_id: ticket5.id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
type_id: Ticket::Article::Type.lookup(name: 'phone').id, type_id: Ticket::Article::Type.lookup(name: 'phone').id,
sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id, sender_id: Ticket::Article::Sender.lookup(name: 'Customer').id,
from: 'Unit Test <unittest@example.com>', from: 'Unit Test <unittest@example.com>',
@ -319,16 +316,16 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already new # because it's already new
assert(!OnlineNotification.all_seen?('Ticket', ticket5.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket5.id))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket5.id, 'create', agent_user1, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket5.id, 'create', @agent_user1, true))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket5.id, 'create', agent_user1, false)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket5.id, 'create', @agent_user1, false))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket5.id, 'create', agent_user1, false)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket5.id, 'create', @agent_user1, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket5.id, 'create', agent_user1, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket5.id, 'create', @agent_user1, true))
ticket5.update_attributes( ticket5.update_attributes(
title: 'Unit Test 4 (äöüß) - update!', title: 'Unit Test 4 (äöüß) - update!',
state_id: Ticket::State.lookup(name: 'open').id, state_id: Ticket::State.lookup(name: 'open').id,
priority_id: Ticket::Priority.lookup(name: '1 low').id, priority_id: Ticket::Priority.lookup(name: '1 low').id,
updated_by_id: customer_user.id, updated_by_id: @customer_user.id,
) )
# execute object transaction # execute object transaction
@ -337,10 +334,10 @@ class OnlineNotificationTest < ActiveSupport::TestCase
# because it's already open # because it's already open
assert(!OnlineNotification.all_seen?('Ticket', ticket5.id)) assert(!OnlineNotification.all_seen?('Ticket', ticket5.id))
assert(OnlineNotification.exists?(agent_user1, 'Ticket', ticket5.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user1, 'Ticket', ticket5.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user1, 'Ticket', ticket5.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user1, 'Ticket', ticket5.id, 'update', @customer_user, true))
assert(OnlineNotification.exists?(agent_user2, 'Ticket', ticket5.id, 'update', customer_user, false)) assert(OnlineNotification.exists?(@agent_user2, 'Ticket', ticket5.id, 'update', @customer_user, false))
assert(!OnlineNotification.exists?(agent_user2, 'Ticket', ticket5.id, 'update', customer_user, true)) assert(!OnlineNotification.exists?(@agent_user2, 'Ticket', ticket5.id, 'update', @customer_user, true))
# merge tickets - also remove notifications of merged tickets # merge tickets - also remove notifications of merged tickets
tickets[0].merge_to( tickets[0].merge_to(
@ -374,8 +371,8 @@ class OnlineNotificationTest < ActiveSupport::TestCase
test 'ticket notification item check' do test 'ticket notification item check' do
ticket1 = Ticket.create( ticket1 = Ticket.create(
title: 'some title', title: 'some title',
group: group, group: @group,
customer_id: customer_user.id, customer_id: @customer_user.id,
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,
@ -397,96 +394,96 @@ class OnlineNotificationTest < ActiveSupport::TestCase
) )
assert_equal(ticket1.online_notification_seen_state, false) assert_equal(ticket1.online_notification_seen_state, false)
assert_equal(ticket1.online_notification_seen_state(agent_user1), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2), false) assert_equal(ticket1.online_notification_seen_state(@agent_user2), false)
# pending reminder, just let new owner to unseed # pending reminder, just let new owner to unseed
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'pending reminder'), state: Ticket::State.lookup(name: 'pending reminder'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
# pending reminder, just let new owner to unseed # pending reminder, just let new owner to unseed
ticket1.update_attributes( ticket1.update_attributes(
owner_id: 1, owner_id: 1,
state: Ticket::State.lookup(name: 'pending reminder'), state: Ticket::State.lookup(name: 'pending reminder'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), false)
# pending reminder, self done, all to unseed # pending reminder, self done, all to unseed
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'pending reminder'), state: Ticket::State.lookup(name: 'pending reminder'),
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), true)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
# pending close, all to unseen # pending close, all to unseen
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'pending close'), state: Ticket::State.lookup(name: 'pending close'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
# to open, all to seen # to open, all to seen
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'open'), state: Ticket::State.lookup(name: 'open'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, false) assert_equal(ticket1.online_notification_seen_state, false)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), false)
# to closed, all only others to seen # to closed, all only others to seen
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'closed'), state: Ticket::State.lookup(name: 'closed'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), false) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), false)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
# to closed by owner self, all to seen # to closed by owner self, all to seen
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'closed'), state: Ticket::State.lookup(name: 'closed'),
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), true)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
# to closed by owner self, all to seen # to closed by owner self, all to seen
ticket1.update_attributes( ticket1.update_attributes(
owner_id: agent_user1.id, owner_id: @agent_user1.id,
state: Ticket::State.lookup(name: 'merged'), state: Ticket::State.lookup(name: 'merged'),
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
) )
assert_equal(ticket1.online_notification_seen_state, true) assert_equal(ticket1.online_notification_seen_state, true)
assert_equal(ticket1.online_notification_seen_state(agent_user1.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user1.id), true)
assert_equal(ticket1.online_notification_seen_state(agent_user2.id), true) assert_equal(ticket1.online_notification_seen_state(@agent_user2.id), true)
end end
@ -496,7 +493,7 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: false, seen: false,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: 1, created_by_id: 1,
updated_by_id: 1, updated_by_id: 1,
created_at: Time.zone.now - 10.months, created_at: Time.zone.now - 10.months,
@ -507,7 +504,7 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: true, seen: true,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: 1, created_by_id: 1,
updated_by_id: 1, updated_by_id: 1,
created_at: Time.zone.now - 10.months, created_at: Time.zone.now - 10.months,
@ -518,7 +515,7 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: false, seen: false,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: 1, created_by_id: 1,
updated_by_id: 1, updated_by_id: 1,
created_at: Time.zone.now - 2.days, created_at: Time.zone.now - 2.days,
@ -529,9 +526,9 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: true, seen: true,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_at: Time.zone.now - 2.days, created_at: Time.zone.now - 2.days,
updated_at: Time.zone.now - 2.days, updated_at: Time.zone.now - 2.days,
) )
@ -540,9 +537,9 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: true, seen: true,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: agent_user2.id, created_by_id: @agent_user2.id,
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
created_at: Time.zone.now - 2.days, created_at: Time.zone.now - 2.days,
updated_at: Time.zone.now - 2.days, updated_at: Time.zone.now - 2.days,
) )
@ -551,9 +548,9 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: true, seen: true,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: agent_user1.id, created_by_id: @agent_user1.id,
updated_by_id: agent_user1.id, updated_by_id: @agent_user1.id,
created_at: Time.zone.now - 5.minutes, created_at: Time.zone.now - 5.minutes,
updated_at: Time.zone.now - 5.minutes, updated_at: Time.zone.now - 5.minutes,
) )
@ -562,9 +559,9 @@ class OnlineNotificationTest < ActiveSupport::TestCase
object: 'Ticket', object: 'Ticket',
o_id: 123, o_id: 123,
seen: true, seen: true,
user_id: agent_user1.id, user_id: @agent_user1.id,
created_by_id: agent_user2.id, created_by_id: @agent_user2.id,
updated_by_id: agent_user2.id, updated_by_id: @agent_user2.id,
created_at: Time.zone.now - 5.minutes, created_at: Time.zone.now - 5.minutes,
updated_at: Time.zone.now - 5.minutes, updated_at: Time.zone.now - 5.minutes,
) )

View file

@ -2,11 +2,11 @@
require 'test_helper' require 'test_helper'
class SessionBasicTest < ActiveSupport::TestCase class SessionBasicTest < ActiveSupport::TestCase
test 'aaa - setup' do setup do
user = User.lookup(id: 1) user = User.lookup(id: 1)
roles = Role.where(name: %w(Agent Admin)) roles = Role.where(name: %w(Agent Admin))
user.roles = roles user.roles = roles
user.save user.save!
end end
test 'b cache' do test 'b cache' do

View file

@ -99,7 +99,7 @@ class SessionCollectionsTest < ActiveSupport::TestCase
# next check should be empty # next check should be empty
result1 = collection_client1.push result1 = collection_client1.push
assert(result1.empty?, 'check collections - recall') assert(result1.empty?, 'check collections - recall')
sleep 0.4 travel 0.4.seconds
result2 = collection_client2.push result2 = collection_client2.push
assert(result2.empty?, 'check collections - recall') assert(result2.empty?, 'check collections - recall')
result3 = collection_client3.push result3 = collection_client3.push
@ -108,13 +108,13 @@ class SessionCollectionsTest < ActiveSupport::TestCase
# change collection # change collection
group = Group.first group = Group.first
group.touch group.touch
travel 3.seconds travel 4.seconds
# get whole collections # get whole collections
result1 = collection_client1.push result1 = collection_client1.push
assert(result1, 'check collections - after touch') assert(result1, 'check collections - after touch')
assert(check_if_collection_exists(result1, :Group), 'check collections - after touch') assert(check_if_collection_exists(result1, :Group), 'check collections - after touch')
sleep 0.1 travel 0.1.seconds
result2 = collection_client2.push result2 = collection_client2.push
assert(result2, 'check collections - after touch') assert(result2, 'check collections - after touch')
assert(check_if_collection_exists(result2, :Group), 'check collections - after touch') assert(check_if_collection_exists(result2, :Group), 'check collections - after touch')
@ -123,7 +123,7 @@ class SessionCollectionsTest < ActiveSupport::TestCase
assert(check_if_collection_exists(result3, :Group), 'check collections - after touch') assert(check_if_collection_exists(result3, :Group), 'check collections - after touch')
# next check should be empty # next check should be empty
sleep 0.5 travel 0.5.seconds
result1 = collection_client1.push result1 = collection_client1.push
assert(result1.empty?, 'check collections - recall') assert(result1.empty?, 'check collections - recall')
result2 = collection_client2.push result2 = collection_client2.push

View file

@ -47,9 +47,9 @@ class SessionEnhancedTest < ActiveSupport::TestCase
agent3.save agent3.save
# create sessions # create sessions
client_id1 = '1234' client_id1 = 'a1234'
client_id2 = '123456' client_id2 = 'a123456'
client_id3 = 'abc' client_id3 = 'aabc'
Sessions.destroy(client_id1) Sessions.destroy(client_id1)
Sessions.destroy(client_id2) Sessions.destroy(client_id2)
Sessions.destroy(client_id3) Sessions.destroy(client_id3)
@ -145,8 +145,7 @@ class SessionEnhancedTest < ActiveSupport::TestCase
jobs = Thread.new { jobs = Thread.new {
Sessions.jobs Sessions.jobs
} }
sleep 3 sleep 6
#jobs.join
# check client threads # check client threads
assert(Sessions.thread_client_exists?(client_id1), 'check if client is running') assert(Sessions.thread_client_exists?(client_id1), 'check if client is running')
@ -154,8 +153,9 @@ class SessionEnhancedTest < ActiveSupport::TestCase
assert(Sessions.thread_client_exists?(client_id3), 'check if client is running') assert(Sessions.thread_client_exists?(client_id3), 'check if client is running')
# check if session still exists after idle cleanup # check if session still exists after idle cleanup
sleep 4 travel 10.seconds
client_ids = Sessions.destroy_idle_sessions(2) client_ids = Sessions.destroy_idle_sessions(2)
travel 2.seconds
# check client sessions # check client sessions
assert(!Sessions.session_exists?(client_id1), 'check if session is removed') assert(!Sessions.session_exists?(client_id1), 'check if session is removed')
@ -171,7 +171,8 @@ class SessionEnhancedTest < ActiveSupport::TestCase
# exit jobs # exit jobs
jobs.exit jobs.exit
jobs.join
travel_back
end end
test 'b check client and backends' do test 'b check client and backends' do
@ -196,7 +197,6 @@ class SessionEnhancedTest < ActiveSupport::TestCase
roles: roles, roles: roles,
groups: groups, groups: groups,
) )
agent1.roles = roles
agent1.save agent1.save
agent2 = User.create_or_update( agent2 = User.create_or_update(
login: 'session-agent-2', login: 'session-agent-2',
@ -209,16 +209,29 @@ class SessionEnhancedTest < ActiveSupport::TestCase
roles: roles, roles: roles,
groups: groups, groups: groups,
) )
agent2.roles = roles
agent2.save agent2.save
agent3 = User.create_or_update(
login: 'session-agent-3',
firstname: 'Session',
lastname: 'Agent 3',
email: 'session-agent3@example.com',
password: 'agentpw',
active: true,
organization: organization,
roles: roles,
groups: groups,
)
agent3.save
# create sessions # create sessions
client_id1_0 = '1234-1' client_id1_0 = 'b1234-1'
client_id1_1 = '1234-2' client_id1_1 = 'b1234-2'
client_id2 = '123456' client_id2 = 'b123456'
client_id3 = 'c123456'
Sessions.destroy(client_id1_0) Sessions.destroy(client_id1_0)
Sessions.destroy(client_id1_1) Sessions.destroy(client_id1_1)
Sessions.destroy(client_id2) Sessions.destroy(client_id2)
Sessions.destroy(client_id3)
# start jobs # start jobs
jobs = Thread.new { jobs = Thread.new {
@ -230,11 +243,16 @@ class SessionEnhancedTest < ActiveSupport::TestCase
Sessions.create(client_id1_1, agent1.attributes, { type: 'websocket' }) Sessions.create(client_id1_1, agent1.attributes, { type: 'websocket' })
sleep 3.2 sleep 3.2
Sessions.create(client_id2, agent2.attributes, { type: 'ajax' }) Sessions.create(client_id2, agent2.attributes, { type: 'ajax' })
sleep 3.2
Sessions.create(client_id3, agent3.attributes, { type: 'websocket' })
# check if session exists # check if session exists
assert(Sessions.session_exists?(client_id1_0), 'check if session exists') assert(Sessions.session_exists?(client_id1_0), 'check if session exists')
assert(Sessions.session_exists?(client_id1_1), 'check if session exists') assert(Sessions.session_exists?(client_id1_1), 'check if session exists')
assert(Sessions.session_exists?(client_id2), 'check if session exists') assert(Sessions.session_exists?(client_id2), 'check if session exists')
assert(Sessions.session_exists?(client_id3), 'check if session exists')
travel 8.seconds
sleep 8 sleep 8
# check collections # check collections
@ -245,6 +263,7 @@ class SessionEnhancedTest < ActiveSupport::TestCase
assert_if_collection_reset_message_exists(client_id1_0, collections, 'init') assert_if_collection_reset_message_exists(client_id1_0, collections, 'init')
assert_if_collection_reset_message_exists(client_id1_1, collections, 'init') assert_if_collection_reset_message_exists(client_id1_1, collections, 'init')
assert_if_collection_reset_message_exists(client_id2, collections, 'init') assert_if_collection_reset_message_exists(client_id2, collections, 'init')
assert_if_collection_reset_message_exists(client_id3, collections, 'init')
collections = { collections = {
'Group' => nil, 'Group' => nil,
@ -253,7 +272,9 @@ class SessionEnhancedTest < ActiveSupport::TestCase
assert_if_collection_reset_message_exists(client_id1_0, collections, 'init2') assert_if_collection_reset_message_exists(client_id1_0, collections, 'init2')
assert_if_collection_reset_message_exists(client_id1_1, collections, 'init2') assert_if_collection_reset_message_exists(client_id1_1, collections, 'init2')
assert_if_collection_reset_message_exists(client_id2, collections, 'init2') assert_if_collection_reset_message_exists(client_id2, collections, 'init2')
assert_if_collection_reset_message_exists(client_id3, collections, 'init2')
travel 8.seconds
sleep 8 sleep 8
collections = { collections = {
@ -263,12 +284,14 @@ class SessionEnhancedTest < ActiveSupport::TestCase
assert_if_collection_reset_message_exists(client_id1_0, collections, 'init3') assert_if_collection_reset_message_exists(client_id1_0, collections, 'init3')
assert_if_collection_reset_message_exists(client_id1_1, collections, 'init3') assert_if_collection_reset_message_exists(client_id1_1, collections, 'init3')
assert_if_collection_reset_message_exists(client_id2, collections, 'init3') assert_if_collection_reset_message_exists(client_id2, collections, 'init3')
assert_if_collection_reset_message_exists(client_id3, collections, 'init3')
# change collection # change collection
group = Group.first group = Group.first
group.touch group.touch
sleep 10 travel 12.seconds
sleep 12
# check collections # check collections
collections = { collections = {
@ -278,16 +301,23 @@ class SessionEnhancedTest < ActiveSupport::TestCase
assert_if_collection_reset_message_exists(client_id1_0, collections, 'update') assert_if_collection_reset_message_exists(client_id1_0, collections, 'update')
assert_if_collection_reset_message_exists(client_id1_1, collections, 'update') assert_if_collection_reset_message_exists(client_id1_1, collections, 'update')
assert_if_collection_reset_message_exists(client_id2, collections, 'update') assert_if_collection_reset_message_exists(client_id2, collections, 'update')
assert_if_collection_reset_message_exists(client_id3, collections, 'update')
# check if session still exists after idle cleanup # check if session still exists after idle cleanup
sleep 4 travel 10.seconds
client_ids = Sessions.destroy_idle_sessions(3) client_ids = Sessions.destroy_idle_sessions(2)
travel 2.seconds
# check client sessions # check client sessions
assert(!Sessions.session_exists?(client_id1_0), 'check if session is removed') assert(!Sessions.session_exists?(client_id1_0), 'check if session is removed')
assert(!Sessions.session_exists?(client_id1_1), 'check if session is removed') assert(!Sessions.session_exists?(client_id1_1), 'check if session is removed')
assert(!Sessions.session_exists?(client_id2), 'check if session is removed') assert(!Sessions.session_exists?(client_id2), 'check if session is removed')
assert(!Sessions.session_exists?(client_id3), 'check if session is removed')
# exit jobs
jobs.exit
jobs.join
travel_back
end end
def assert_if_collection_reset_message_exists(client_id, collections_orig, type) def assert_if_collection_reset_message_exists(client_id, collections_orig, type)

View file

@ -2,15 +2,11 @@
require 'test_helper' require 'test_helper'
class TicketCustomerOrganizationUpdateTest < ActiveSupport::TestCase class TicketCustomerOrganizationUpdateTest < ActiveSupport::TestCase
agent1 = nil
organization1 = nil
customer1 = nil
test 'aaa - setup' do
# create base setup do
groups = Group.where(name: 'Users') groups = Group.where(name: 'Users')
roles = Role.where(name: 'Agent') roles = Role.where(name: 'Agent')
agent1 = User.create_or_update( @agent1 = User.create_or_update(
login: 'ticket-customer-organization-update-agent1@example.com', login: 'ticket-customer-organization-update-agent1@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Agent1', lastname: 'Agent1',
@ -24,20 +20,20 @@ class TicketCustomerOrganizationUpdateTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
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',
updated_at: '2015-02-05 16:37:00', updated_at: '2015-02-05 16:37:00',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer1 = User.create_or_update( @customer1 = User.create_or_update(
login: 'ticket-customer-organization-update-customer1@example.com', login: 'ticket-customer-organization-update-customer1@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Customer1', lastname: 'Customer1',
email: 'ticket-customer-organization-update-customer1@example.com', email: 'ticket-customer-organization-update-customer1@example.com',
password: 'customerpw', password: 'customerpw',
active: true, active: true,
organization_id: organization1.id, organization_id: @organization1.id,
roles: roles, roles: roles,
updated_at: '2015-02-05 16:37:00', updated_at: '2015-02-05 16:37:00',
updated_by_id: 1, updated_by_id: 1,
@ -50,32 +46,32 @@ class TicketCustomerOrganizationUpdateTest < ActiveSupport::TestCase
ticket = Ticket.create( ticket = Ticket.create(
title: "some title1\n äöüß", title: "some title1\n äöüß",
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer1.id, customer_id: @customer1.id,
owner_id: agent1.id, owner_id: @agent1.id,
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,
) )
assert(ticket, 'ticket created') assert(ticket, 'ticket created')
assert_equal(customer1.id, ticket.customer.id) assert_equal(@customer1.id, ticket.customer.id)
assert_equal(organization1.id, ticket.organization.id) assert_equal(@organization1.id, ticket.organization.id)
# update customer organization # update customer organization
customer1.organization_id = nil @customer1.organization_id = nil
customer1.save @customer1.save!
# verify ticket # verify ticket
ticket = Ticket.find(ticket.id) ticket.reload
assert_nil(ticket.organization_id) assert_nil(ticket.organization_id)
# update customer organization # update customer organization
customer1.organization_id = organization1.id @customer1.organization_id = @organization1.id
customer1.save @customer1.save!
# verify ticket # verify ticket
ticket = Ticket.find(ticket.id) ticket.reload
assert_equal(organization1.id, ticket.organization_id) assert_equal(@organization1.id, ticket.organization_id)
ticket.destroy ticket.destroy
end end

File diff suppressed because it is too large Load diff

View file

@ -2,23 +2,8 @@
require 'test_helper' require 'test_helper'
class TicketOverviewTest < ActiveSupport::TestCase class TicketOverviewTest < ActiveSupport::TestCase
agent1 = nil
agent2 = nil
organization_id = nil
customer1 = nil
customer2 = nil
customer3 = nil
overview1 = nil
overview2 = nil
overview3 = nil
overview4 = nil
overview5 = nil
overview6 = nil
overview7 = nil
overview8 = nil
test 'aaa - setup' do
# create base setup do
group = Group.create_or_update( group = Group.create_or_update(
name: 'OverviewTest', name: 'OverviewTest',
updated_at: '2015-02-05 16:37:00', updated_at: '2015-02-05 16:37:00',
@ -26,7 +11,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
roles = Role.where(name: 'Agent') roles = Role.where(name: 'Agent')
agent1 = User.create_or_update( @agent1 = User.create_or_update(
login: 'ticket-overview-agent1@example.com', login: 'ticket-overview-agent1@example.com',
firstname: 'Overview', firstname: 'Overview',
lastname: 'Agent1', lastname: 'Agent1',
@ -39,7 +24,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
agent2 = User.create_or_update( @agent2 = User.create_or_update(
login: 'ticket-overview-agent2@example.com', login: 'ticket-overview-agent2@example.com',
firstname: 'Overview', firstname: 'Overview',
lastname: 'Agent2', lastname: 'Agent2',
@ -59,7 +44,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer1 = User.create_or_update( @customer1 = User.create_or_update(
login: 'ticket-overview-customer1@example.com', login: 'ticket-overview-customer1@example.com',
firstname: 'Overview', firstname: 'Overview',
lastname: 'Customer1', lastname: 'Customer1',
@ -72,7 +57,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer2 = User.create_or_update( @customer2 = User.create_or_update(
login: 'ticket-overview-customer2@example.com', login: 'ticket-overview-customer2@example.com',
firstname: 'Overview', firstname: 'Overview',
lastname: 'Customer2', lastname: 'Customer2',
@ -85,7 +70,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer3 = User.create_or_update( @customer3 = User.create_or_update(
login: 'ticket-overview-customer3@example.com', login: 'ticket-overview-customer3@example.com',
firstname: 'Overview', firstname: 'Overview',
lastname: 'Customer3', lastname: 'Customer3',
@ -101,7 +86,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
Overview.destroy_all Overview.destroy_all
UserInfo.current_user_id = 1 UserInfo.current_user_id = 1
overview_role = Role.find_by(name: 'Agent') overview_role = Role.find_by(name: 'Agent')
overview1 = Overview.create_or_update( @overview1 = Overview.create_or_update(
name: 'My assigned Tickets', name: 'My assigned Tickets',
link: 'my_assigned', link: 'my_assigned',
prio: 1000, prio: 1000,
@ -109,7 +94,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3, 7 ], value: [1, 2, 3, 7],
}, },
'ticket.owner_id' => { 'ticket.owner_id' => {
operator: 'is', operator: 'is',
@ -128,7 +113,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
}, },
) )
overview2 = Overview.create_or_update( @overview2 = Overview.create_or_update(
name: 'Unassigned & Open', name: 'Unassigned & Open',
link: 'all_unassigned', link: 'all_unassigned',
prio: 1010, prio: 1010,
@ -154,16 +139,16 @@ class TicketOverviewTest < ActiveSupport::TestCase
view_mode_default: 's', view_mode_default: 's',
}, },
) )
overview3 = Overview.create_or_update( @overview3 = Overview.create_or_update(
name: 'My Tickets 2', name: 'My Tickets 2',
link: 'my_tickets_2', link: 'my_tickets_2',
prio: 1020, prio: 1020,
role_ids: [overview_role.id], role_ids: [overview_role.id],
user_ids: [agent2.id], user_ids: [@agent2.id],
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3, 7 ], value: [1, 2, 3, 7],
}, },
'ticket.owner_id' => { 'ticket.owner_id' => {
operator: 'is', operator: 'is',
@ -181,12 +166,12 @@ class TicketOverviewTest < ActiveSupport::TestCase
view_mode_default: 's', view_mode_default: 's',
}, },
) )
overview4 = Overview.create_or_update( @overview4 = Overview.create_or_update(
name: 'My Tickets only with Note', name: 'My Tickets only with Note',
link: 'my_tickets_onyl_with_note', link: 'my_tickets_onyl_with_note',
prio: 1030, prio: 1030,
role_ids: [overview_role.id], role_ids: [overview_role.id],
user_ids: [agent1.id], user_ids: [@agent1.id],
condition: { condition: {
'article.type_id' => { 'article.type_id' => {
operator: 'is', operator: 'is',
@ -210,7 +195,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
) )
overview_role = Role.find_by(name: 'Customer') overview_role = Role.find_by(name: 'Customer')
overview5 = Overview.create_or_update( @overview5 = Overview.create_or_update(
name: 'My Tickets', name: 'My Tickets',
link: 'my_tickets', link: 'my_tickets',
prio: 1100, prio: 1100,
@ -218,7 +203,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3, 4, 6, 7 ], value: [1, 2, 3, 4, 6, 7],
}, },
'ticket.customer_id' => { 'ticket.customer_id' => {
operator: 'is', operator: 'is',
@ -236,7 +221,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
view_mode_default: 's', view_mode_default: 's',
}, },
) )
overview6 = Overview.create_or_update( @overview6 = Overview.create_or_update(
name: 'My Organization Tickets', name: 'My Organization Tickets',
link: 'my_organization_tickets', link: 'my_organization_tickets',
prio: 1200, prio: 1200,
@ -245,7 +230,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3, 4, 6, 7 ], value: [1, 2, 3, 4, 6, 7],
}, },
'ticket.organization_id' => { 'ticket.organization_id' => {
operator: 'is', operator: 'is',
@ -263,17 +248,17 @@ class TicketOverviewTest < ActiveSupport::TestCase
view_mode_default: 's', view_mode_default: 's',
}, },
) )
overview7 = Overview.create_or_update( @overview7 = Overview.create_or_update(
name: 'My Organization Tickets (open)', name: 'My Organization Tickets (open)',
link: 'my_organization_tickets_open', link: 'my_organization_tickets_open',
prio: 1200, prio: 1200,
role_ids: [overview_role.id], role_ids: [overview_role.id],
user_ids: [customer2.id], user_ids: [@customer2.id],
organization_shared: true, organization_shared: true,
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3 ], value: [1, 2, 3],
}, },
'ticket.organization_id' => { 'ticket.organization_id' => {
operator: 'is', operator: 'is',
@ -293,7 +278,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
) )
overview_role = Role.find_by(name: 'Admin') overview_role = Role.find_by(name: 'Admin')
overview8 = Overview.create_or_update( @overview8 = Overview.create_or_update(
name: 'Not Shown Admin', name: 'Not Shown Admin',
link: 'not_shown_admin', link: 'not_shown_admin',
prio: 9900, prio: 9900,
@ -301,7 +286,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
condition: { condition: {
'ticket.state_id' => { 'ticket.state_id' => {
operator: 'is', operator: 'is',
value: [ 1, 2, 3 ], value: [1, 2, 3],
}, },
}, },
order: { order: {
@ -320,7 +305,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
test 'bbb overiview index' do test 'bbb overiview index' do
result = Ticket::Overviews.all( result = Ticket::Overviews.all(
current_user: agent1, current_user: @agent1,
) )
assert_equal(3, result.count) assert_equal(3, result.count)
assert_equal('My assigned Tickets', result[0].name) assert_equal('My assigned Tickets', result[0].name)
@ -328,7 +313,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal('My Tickets only with Note', result[2].name) assert_equal('My Tickets only with Note', result[2].name)
result = Ticket::Overviews.all( result = Ticket::Overviews.all(
current_user: agent2, current_user: @agent2,
) )
assert_equal(3, result.count) assert_equal(3, result.count)
assert_equal('My assigned Tickets', result[0].name) assert_equal('My assigned Tickets', result[0].name)
@ -336,14 +321,14 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal('My Tickets 2', result[2].name) assert_equal('My Tickets 2', result[2].name)
result = Ticket::Overviews.all( result = Ticket::Overviews.all(
current_user: customer1, current_user: @customer1,
) )
assert_equal(2, result.count) assert_equal(2, result.count)
assert_equal('My Tickets', result[0].name) assert_equal('My Tickets', result[0].name)
assert_equal('My Organization Tickets', result[1].name) assert_equal('My Organization Tickets', result[1].name)
result = Ticket::Overviews.all( result = Ticket::Overviews.all(
current_user: customer2, current_user: @customer2,
) )
assert_equal(3, result.count) assert_equal(3, result.count)
assert_equal('My Tickets', result[0].name) assert_equal('My Tickets', result[0].name)
@ -351,7 +336,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal('My Organization Tickets (open)', result[2].name) assert_equal('My Organization Tickets (open)', result[2].name)
result = Ticket::Overviews.all( result = Ticket::Overviews.all(
current_user: customer3, current_user: @customer3,
) )
assert_equal(1, result.count) assert_equal(1, result.count)
assert_equal('My Tickets', result[0].name) assert_equal('My Tickets', result[0].name)
@ -362,7 +347,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
Ticket.destroy_all Ticket.destroy_all
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -379,7 +364,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
assert_equal(result[2][:count], 0) assert_equal(result[2][:count], 0)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -395,7 +380,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
ticket1 = Ticket.create( ticket1 = Ticket.create!(
title: 'overview test 1', title: 'overview test 1',
group: Group.lookup(name: 'OverviewTest'), group: Group.lookup(name: 'OverviewTest'),
customer_id: 2, customer_id: 2,
@ -404,7 +389,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article1 = Ticket::Article.create( article1 = Ticket::Article.create!(
ticket_id: ticket1.id, ticket_id: ticket1.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
@ -418,7 +403,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -436,7 +421,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
assert_equal(result[2][:count], 0) assert_equal(result[2][:count], 0)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -453,7 +438,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
travel 1.second # because of mysql millitime issues travel 1.second # because of mysql millitime issues
ticket2 = Ticket.create( ticket2 = Ticket.create!(
title: 'overview test 2', title: 'overview test 2',
group: Group.lookup(name: 'OverviewTest'), group: Group.lookup(name: 'OverviewTest'),
customer_id: 2, customer_id: 2,
@ -462,7 +447,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article2 = Ticket::Article.create( article2 = Ticket::Article.create!(
ticket_id: ticket2.id, ticket_id: ticket2.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
@ -476,7 +461,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -495,7 +480,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
assert_equal(result[2][:count], 0) assert_equal(result[2][:count], 0)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -511,10 +496,10 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
ticket2.owner_id = agent1.id ticket2.owner_id = @agent1.id
ticket2.save! ticket2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
@ -533,7 +518,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
@ -550,7 +535,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
travel 1.second # because of mysql millitime issues travel 1.second # because of mysql millitime issues
ticket3 = Ticket.create( ticket3 = Ticket.create!(
title: 'overview test 3', title: 'overview test 3',
group: Group.lookup(name: 'OverviewTest'), group: Group.lookup(name: 'OverviewTest'),
customer_id: 2, customer_id: 2,
@ -559,7 +544,7 @@ class TicketOverviewTest < ActiveSupport::TestCase
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
article3 = Ticket::Article.create( article3 = Ticket::Article.create!(
ticket_id: ticket3.id, ticket_id: ticket3.id,
from: 'some_sender@example.com', from: 'some_sender@example.com',
to: 'some_recipient@example.com', to: 'some_recipient@example.com',
@ -574,15 +559,15 @@ class TicketOverviewTest < ActiveSupport::TestCase
) )
travel_back travel_back
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -590,47 +575,47 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket1.id) assert_equal(result[1][:tickets][0][:id], ticket1.id)
assert_equal(result[1][:tickets][1][:id], ticket3.id) assert_equal(result[1][:tickets][1][:id], ticket3.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
overview2.order = { @overview2.order = {
by: 'created_at', by: 'created_at',
direction: 'DESC', direction: 'DESC',
} }
overview2.save! @overview2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -638,47 +623,47 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket3.id) assert_equal(result[1][:tickets][0][:id], ticket3.id)
assert_equal(result[1][:tickets][1][:id], ticket1.id) assert_equal(result[1][:tickets][1][:id], ticket1.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
overview2.order = { @overview2.order = {
by: 'priority_id', by: 'priority_id',
direction: 'DESC', direction: 'DESC',
} }
overview2.save! @overview2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -686,47 +671,47 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket1.id) assert_equal(result[1][:tickets][0][:id], ticket1.id)
assert_equal(result[1][:tickets][1][:id], ticket3.id) assert_equal(result[1][:tickets][1][:id], ticket3.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
overview2.order = { @overview2.order = {
by: 'priority_id', by: 'priority_id',
direction: 'ASC', direction: 'ASC',
} }
overview2.save! @overview2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -734,47 +719,47 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket3.id) assert_equal(result[1][:tickets][0][:id], ticket3.id)
assert_equal(result[1][:tickets][1][:id], ticket1.id) assert_equal(result[1][:tickets][1][:id], ticket1.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
overview2.order = { @overview2.order = {
by: 'priority', by: 'priority',
direction: 'DESC', direction: 'DESC',
} }
overview2.save! @overview2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -782,47 +767,47 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket1.id) assert_equal(result[1][:tickets][0][:id], ticket1.id)
assert_equal(result[1][:tickets][1][:id], ticket3.id) assert_equal(result[1][:tickets][1][:id], ticket3.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert(result[2][:tickets].empty?) assert(result[2][:tickets].empty?)
overview2.order = { @overview2.order = {
by: 'priority', by: 'priority',
direction: 'ASC', direction: 'ASC',
} }
overview2.save! @overview2.save!
result = Ticket::Overviews.index(agent1) result = Ticket::Overviews.index(@agent1)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[0][:tickets][0][:id], ticket2.id) assert_equal(result[0][:tickets][0][:id], ticket2.id)
assert_equal(result[0][:count], 1) assert_equal(result[0][:count], 1)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
@ -830,27 +815,27 @@ class TicketOverviewTest < ActiveSupport::TestCase
assert_equal(result[1][:tickets][0][:id], ticket3.id) assert_equal(result[1][:tickets][0][:id], ticket3.id)
assert_equal(result[1][:tickets][1][:id], ticket1.id) assert_equal(result[1][:tickets][1][:id], ticket1.id)
assert_equal(result[1][:count], 2) assert_equal(result[1][:count], 2)
assert_equal(result[2][:overview][:id], overview4.id) assert_equal(result[2][:overview][:id], @overview4.id)
assert_equal(result[2][:overview][:name], 'My Tickets only with Note') assert_equal(result[2][:overview][:name], 'My Tickets only with Note')
assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note') assert_equal(result[2][:overview][:view], 'my_tickets_onyl_with_note')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)
assert_equal(result[2][:tickets][0][:id], ticket2.id) assert_equal(result[2][:tickets][0][:id], ticket2.id)
assert_equal(result[2][:count], 1) assert_equal(result[2][:count], 1)
result = Ticket::Overviews.index(agent2) result = Ticket::Overviews.index(@agent2)
assert_equal(result[0][:overview][:id], overview1.id) assert_equal(result[0][:overview][:id], @overview1.id)
assert_equal(result[0][:overview][:name], 'My assigned Tickets') assert_equal(result[0][:overview][:name], 'My assigned Tickets')
assert_equal(result[0][:overview][:view], 'my_assigned') assert_equal(result[0][:overview][:view], 'my_assigned')
assert_equal(result[0][:count], 0) assert_equal(result[0][:count], 0)
assert_equal(result[0][:tickets].class, Array) assert_equal(result[0][:tickets].class, Array)
assert(result[0][:tickets].empty?) assert(result[0][:tickets].empty?)
assert_equal(result[1][:overview][:id], overview2.id) assert_equal(result[1][:overview][:id], @overview2.id)
assert_equal(result[1][:overview][:name], 'Unassigned & Open') assert_equal(result[1][:overview][:name], 'Unassigned & Open')
assert_equal(result[1][:overview][:view], 'all_unassigned') assert_equal(result[1][:overview][:view], 'all_unassigned')
assert_equal(result[1][:tickets].class, Array) assert_equal(result[1][:tickets].class, Array)
assert(result[1][:tickets].empty?) assert(result[1][:tickets].empty?)
assert_equal(result[1][:count], 0) assert_equal(result[1][:count], 0)
assert_equal(result[2][:overview][:id], overview3.id) assert_equal(result[2][:overview][:id], @overview3.id)
assert_equal(result[2][:overview][:name], 'My Tickets 2') assert_equal(result[2][:overview][:name], 'My Tickets 2')
assert_equal(result[2][:overview][:view], 'my_tickets_2') assert_equal(result[2][:overview][:view], 'my_tickets_2')
assert_equal(result[2][:tickets].class, Array) assert_equal(result[2][:tickets].class, Array)

View file

@ -2,16 +2,11 @@
require 'test_helper' require 'test_helper'
class TicketRefObjectTouchTest < ActiveSupport::TestCase class TicketRefObjectTouchTest < ActiveSupport::TestCase
agent1 = nil
organization1 = nil
customer1 = nil
customer2 = nil
test 'aaa - setup' do
# create base setup do
groups = Group.where(name: 'Users') groups = Group.where(name: 'Users')
roles = Role.where(name: 'Agent') roles = Role.where(name: 'Agent')
agent1 = User.create_or_update( @agent1 = User.create_or_update(
login: 'ticket-ref-object-update-agent1@example.com', login: 'ticket-ref-object-update-agent1@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Agent1', lastname: 'Agent1',
@ -25,26 +20,26 @@ class TicketRefObjectTouchTest < ActiveSupport::TestCase
created_by_id: 1, created_by_id: 1,
) )
roles = Role.where(name: 'Customer') roles = Role.where(name: 'Customer')
organization1 = Organization.create_if_not_exists( @organization1 = Organization.create_if_not_exists(
name: 'Ref Object Update Org', name: 'Ref Object Update Org',
updated_at: '2015-02-05 16:37:00', updated_at: '2015-02-05 16:37:00',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer1 = User.create_or_update( @customer1 = User.create_or_update(
login: 'ticket-ref-object-update-customer1@example.com', login: 'ticket-ref-object-update-customer1@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Customer1', lastname: 'Customer1',
email: 'ticket-ref-object-update-customer1@example.com', email: 'ticket-ref-object-update-customer1@example.com',
password: 'customerpw', password: 'customerpw',
active: true, active: true,
organization_id: organization1.id, organization_id: @organization1.id,
roles: roles, roles: roles,
updated_at: '2015-02-05 16:37:00', updated_at: '2015-02-05 16:37:00',
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
customer2 = User.create_or_update( @customer2 = User.create_or_update(
login: 'ticket-ref-object-update-customer2@example.com', login: 'ticket-ref-object-update-customer2@example.com',
firstname: 'Notification', firstname: 'Notification',
lastname: 'Customer2', lastname: 'Customer2',
@ -64,27 +59,27 @@ class TicketRefObjectTouchTest < ActiveSupport::TestCase
ticket = Ticket.create( ticket = Ticket.create(
title: "some title1\n äöüß", title: "some title1\n äöüß",
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer1.id, customer_id: @customer1.id,
owner_id: agent1.id, owner_id: @agent1.id,
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,
) )
assert(ticket, 'ticket created') assert(ticket, 'ticket created')
assert_equal(ticket.customer.id, customer1.id) assert_equal(ticket.customer.id, @customer1.id)
assert_equal(ticket.organization.id, organization1.id) assert_equal(ticket.organization.id, @organization1.id)
# check if customer and organization has been touched # check if customer and organization has been touched
customer1 = User.find(customer1.id) @customer1 = User.find(@customer1.id)
if customer1.updated_at > 3.seconds.ago if @customer1.updated_at > 3.seconds.ago
assert(true, 'customer1.updated_at has been updated') assert(true, 'customer1.updated_at has been updated')
else else
assert(false, 'customer1.updated_at has not been updated') assert(false, 'customer1.updated_at has not been updated')
end end
organization1 = Organization.find(organization1.id) @organization1 = Organization.find(@organization1.id)
if organization1.updated_at > 3.seconds.ago if @organization1.updated_at > 3.seconds.ago
assert(true, 'organization1.updated_at has been updated') assert(true, 'organization1.updated_at has been updated')
else else
assert(false, 'organization1.updated_at has not been updated') assert(false, 'organization1.updated_at has not been updated')
@ -96,15 +91,15 @@ class TicketRefObjectTouchTest < ActiveSupport::TestCase
assert(delete, 'ticket destroy') assert(delete, 'ticket destroy')
# check if customer and organization has been touched # check if customer and organization has been touched
customer1 = User.find(customer1.id) @customer1.reload
if customer1.updated_at > 3.seconds.ago if @customer1.updated_at > 3.seconds.ago
assert(true, 'customer1.updated_at has been updated') assert(true, 'customer1.updated_at has been updated')
else else
assert(false, 'customer1.updated_at has not been updated') assert(false, 'customer1.updated_at has not been updated')
end end
organization1 = Organization.find(organization1.id) @organization1.reload
if organization1.updated_at > 3.seconds.ago if @organization1.updated_at > 3.seconds.ago
assert(true, 'organization1.updated_at has been updated') assert(true, 'organization1.updated_at has been updated')
else else
assert(false, 'organization1.updated_at has not been updated') assert(false, 'organization1.updated_at has not been updated')
@ -118,27 +113,27 @@ class TicketRefObjectTouchTest < ActiveSupport::TestCase
ticket = Ticket.create( ticket = Ticket.create(
title: "some title2\n äöüß", title: "some title2\n äöüß",
group: Group.lookup(name: 'Users'), group: Group.lookup(name: 'Users'),
customer_id: customer2.id, customer_id: @customer2.id,
owner_id: agent1.id, owner_id: @agent1.id,
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,
) )
assert(ticket, 'ticket created') assert(ticket, 'ticket created')
assert_equal(ticket.customer.id, customer2.id) assert_equal(ticket.customer.id, @customer2.id)
assert_nil(ticket.organization) assert_nil(ticket.organization)
# check if customer and organization has been touched # check if customer and organization has been touched
customer2 = User.find(customer2.id) @customer2.reload
if customer2.updated_at > 3.seconds.ago if @customer2.updated_at > 3.seconds.ago
assert(true, 'customer2.updated_at has been updated') assert(true, 'customer2.updated_at has been updated')
else else
assert(false, 'customer2.updated_at has not been updated') assert(false, 'customer2.updated_at has not been updated')
end end
organization1 = Organization.find(organization1.id) @organization1.reload
if organization1.updated_at > 3.seconds.ago if @organization1.updated_at > 3.seconds.ago
assert(false, 'organization1.updated_at has been updated') assert(false, 'organization1.updated_at has been updated')
else else
assert(true, 'organization1.updated_at has not been updated') assert(true, 'organization1.updated_at has not been updated')
@ -150,15 +145,15 @@ class TicketRefObjectTouchTest < ActiveSupport::TestCase
assert(delete, 'ticket destroy') assert(delete, 'ticket destroy')
# check if customer and organization has been touched # check if customer and organization has been touched
customer2 = User.find(customer2.id) @customer2.reload
if customer2.updated_at > 3.seconds.ago if @customer2.updated_at > 3.seconds.ago
assert(true, 'customer2.updated_at has been updated') assert(true, 'customer2.updated_at has been updated')
else else
assert(false, 'customer2.updated_at has not been updated') assert(false, 'customer2.updated_at has not been updated')
end end
organization1 = Organization.find(organization1.id) @organization1.reload
if organization1.updated_at > 3.seconds.ago if @organization1.updated_at > 3.seconds.ago
assert(false, 'organization1.updated_at has been updated') assert(false, 'organization1.updated_at has been updated')
else else
assert(true, 'organization1.updated_at has not been updated') assert(true, 'organization1.updated_at has not been updated')

File diff suppressed because it is too large Load diff