notification_spec.rb 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Transaction::Notification, type: :model do
  4. describe 'pending ticket reminder repeats after midnight at selected time zone' do
  5. let(:group) { create(:group) }
  6. let(:user) { create(:agent) }
  7. let(:ticket) { create(:ticket, owner: user, state_name: 'open', pending_time: Time.current) }
  8. before do
  9. travel_to Time.current.noon
  10. user.groups << group
  11. ticket
  12. Setting.set('timezone_default', 'America/Santiago')
  13. run(ticket, user, 'reminder_reached')
  14. OnlineNotification.destroy_all
  15. end
  16. it 'notification not sent at UTC midnight' do
  17. travel_to Time.current.end_of_day + 1.minute
  18. expect { run(ticket, user, 'reminder_reached') }.not_to change(OnlineNotification, :count)
  19. end
  20. it 'notification sent at selected time zone midnight' do
  21. travel_to Time.use_zone('America/Santiago') { Time.current.end_of_day + 1.minute }
  22. expect { run(ticket, user, 'reminder_reached') }.to change(OnlineNotification, :count).by(1)
  23. end
  24. end
  25. def run(ticket, user, type)
  26. described_class.new(
  27. object: ticket.class.name,
  28. type: type,
  29. object_id: ticket.id,
  30. interface_handle: 'scheduler',
  31. changes: nil,
  32. created_at: Time.current,
  33. user_id: user.id
  34. ).perform
  35. end
  36. end