trabajo-afectivo/test/integration/elasticsearch_active_test.rb
2022-01-01 14:38:12 +01:00

128 lines
3.5 KiB
Ruby

# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
require 'test_helper'
class ElasticsearchActiveTest < ActiveSupport::TestCase
include SearchindexHelper
setup do
configure_elasticsearch(required: true)
rebuild_searchindex
roles = Role.where(name: 'Agent')
@agent = User.create!(
login: 'es-agent@example.com',
firstname: 'E',
lastname: 'S',
email: 'es-agent@example.com',
password: 'agentpw',
active: true,
roles: roles,
updated_by_id: 1,
created_by_id: 1,
)
roles = Role.where(name: 'Customer')
(1..6).each do |i|
name = i.even? ? "Active-#{i}" : "Inactive-#{i}"
User.create!(
login: "#{name}-customer#{i}@example.com",
firstname: 'ActiveTest',
lastname: name,
active: i.even?,
roles: roles,
updated_by_id: 1,
created_by_id: 1,
)
Organization.create!(
name: "TestOrg-#{name}",
active: i.even?,
updated_by_id: 1,
created_by_id: 1,
)
travel 10.seconds
end
# execute background jobs to index created/changed objects
Scheduler.worker(true)
sleep 2 # for ES to come ready/indexed
end
test 'active users appear before inactive users in search results' do
result = User.search(
current_user: @agent,
query: 'ActiveTest',
limit: 15,
)
assert(result.present?, 'result should not be empty')
names = result.map(&:lastname)
correct_names = %w[Active-2 Active-4 Active-6 Inactive-1 Inactive-3 Inactive-5]
assert_equal(correct_names[0, 3], names[0, 3].sort)
assert_equal(correct_names[3, 6], names[3, 6].sort)
end
test 'active organizations appear before inactive organizations in search results' do
result = Organization.search(
current_user: @agent,
query: 'TestOrg',
limit: 15,
)
assert(result.present?, 'result should not be empty')
names = result.map(&:name)
correct_names = %w[TestOrg-Active-2
TestOrg-Active-4
TestOrg-Active-6
TestOrg-Inactive-1
TestOrg-Inactive-3
TestOrg-Inactive-5]
assert_equal(correct_names[0, 3], names[0, 3].sort)
assert_equal(correct_names[3, 6], names[3, 6].sort)
end
test 'ordering of tickets are not affected by the lack of active flags' do
ticket_setup
result = Ticket.search(
current_user: User.find(1),
query: 'ticket',
limit: 15,
)
assert(result.present?, 'result should not be empty')
names = result.map(&:title)
correct_names = %w[Ticket-6 Ticket-5 Ticket-4 Ticket-3 Ticket-2 Ticket-1]
assert_equal(correct_names, names)
end
def ticket_setup
result = Ticket.search(
current_user: User.find(1),
query: 'ticket',
limit: 15,
)
return if result.present?
(1..6).each do |i|
Ticket.create!(
title: "Ticket-#{i}",
group: Group.lookup(name: 'Users'),
customer_id: 1,
state: Ticket::State.lookup(name: 'new'),
priority: Ticket::Priority.lookup(name: '2 normal'),
updated_by_id: 1,
created_by_id: 1,
)
travel 10.seconds
end
# execute background jobs to index created/changed objects
Scheduler.worker(true)
sleep 2 # for ES to come ready/indexed
end
end