trabajo-afectivo/spec/lib/report_examples.rb

246 lines
5.9 KiB
Ruby
Raw Permalink Normal View History

2022-01-01 13:38:12 +00:00
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
RSpec.shared_context 'with report examples' do
before do |example|
next if !example.metadata[:searchindex]
configure_elasticsearch(required: true, rebuild: true) do
ticket_1
ticket_2
ticket_3
ticket_4
ticket_5
ticket_6
ticket_7
ticket_8
ticket_9
ticket_after_72h
ticket_before_40d
end
end
let(:group_1) { Group.lookup(name: 'Users') }
let(:group_2) { create(:group) }
let(:customer) { User.lookup(email: 'nicole.braun@zammad.org') }
let(:ticket_1) do
travel_to DateTime.new 2015, 10, 28, 9, 30
ticket = create(:ticket,
group: group_2,
customer: customer,
state_name: 'new',
priority_name: '2 normal')
ticket.tag_add('aaa', 1)
ticket.tag_add('bbb', 1)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel 5.hours
ticket.update! group: group_1
travel_back
ticket
end
let(:ticket_2) do
travel_to DateTime.new 2015, 10, 28, 9, 30, 1
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'new',
priority_name: '2 normal')
ticket.tag_add('aaa', 1)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel 5.hours - 1.second
ticket.update! group: group_2
travel_back
ticket
end
let(:ticket_3) do
travel_to DateTime.new 2015, 10, 28, 10, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'open',
priority_name: '3 high')
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_4) do
travel_to DateTime.new 2015, 10, 28, 10, 30, 1
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '2 normal',
close_at: (1.hour - 1.second).from_now)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_5) do
travel_to DateTime.new 2015, 10, 28, 11, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '3 high',
close_at: 10.minutes.from_now)
ticket.tag_add('bbb', 1)
create(:ticket_article,
:outbound_email,
ticket: ticket)
ticket.update! state: Ticket::State.lookup(name: 'open')
travel 3.hours
travel_back
ticket
end
let(:ticket_6) do
travel_to DateTime.new 2015, 10, 31, 12, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '2 normal',
close_at: 5.minutes.from_now)
create(:ticket_article,
:outbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_7) do
travel_to DateTime.new 2015, 11, 1, 12, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '2 normal',
close_at: Time.zone.now)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_8) do
travel_to DateTime.new 2015, 11, 2, 12, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'merged',
priority_name: '2 normal',
close_at: Time.zone.now)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_9) do
travel_to DateTime.new 2037, 11, 2, 12, 30
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'merged',
priority_name: '2 normal',
close_at: Time.zone.now)
create(:ticket_article,
:inbound_email,
ticket: ticket)
travel_back
ticket
end
let(:ticket_after_72h) do
travel 72.hours do
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '2 normal',
close_at: 5.minutes.from_now)
create(:ticket_article,
:outbound_email,
ticket: ticket)
ticket
end
end
let(:ticket_before_40d) do
travel(-40.days) do
ticket = create(:ticket,
group: group_1,
customer: customer,
state_name: 'closed',
priority_name: '2 normal',
close_at: 5.minutes.from_now)
create(:ticket_article,
:outbound_email,
ticket: ticket)
ticket
end
end
matcher :match_tickets do
match do
if expected_tickets.blank?
actual_ticket_ids.blank?
else
# GenericTime returns string ids :o
actual_ticket_ids.map(&:to_i) == expected_tickets.map(&:id)
end
end
def expected_tickets
Array(expected)
end
def actual_ticket_ids
actual[:ticket_ids]
end
end
end