123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Taskbar::TriggersSubscriptions, :aggregate_failures do
- let(:taskbar) { create(:taskbar, user: create(:user)) }
- let(:related_taskbar) { create(:taskbar, key: taskbar.key, user: create(:user)) }
- gqs = Gql::Subscriptions
- gqs_uc = gqs::User::Current
- before do
- freeze_time
- related_taskbar.save!
- taskbar.save!
- travel(1.second)
- allow(gqs::TicketLiveUserUpdates).to receive(:trigger)
- allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_create)
- allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_update)
- allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_destroy)
- allow(gqs_uc::TaskbarItemStateUpdates).to receive(:trigger)
- end
- context 'when creating a record' do
- it 'triggers correctly' do
- create(:taskbar)
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).once
- expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_create).once
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- context 'when updating prio' do
- it 'triggers correctly' do
- taskbar.prio += 1
- taskbar.save!
- expect(gqs::TicketLiveUserUpdates).not_to have_received(:trigger)
- expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- context 'when updating active' do
- it 'triggers correctly' do
- taskbar.active = !taskbar.active
- taskbar.save!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).twice
- expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- context 'when updating dirty' do
- it 'triggers correctly' do
- taskbar.preferences[:dirty] = !taskbar.preferences[:dirty]
- taskbar.save!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).twice
- expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_update).once
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- context 'when updating last_contact_at' do
- it 'triggers correctly' do
- taskbar.touch_last_contact!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).exactly(1) # only for related_taskbar
- expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- context 'when updating state' do
- context 'with desktop app' do
- it 'triggers correctly' do
- taskbar.state = { 'body' => 'test' }
- taskbar.save!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).exactly(2)
- expect(gqs_uc::TaskbarItemStateUpdates).to have_received(:trigger).once
- end
- end
- context 'with mobile app' do
- let(:taskbar) { create(:taskbar, app: 'mobile') }
- it 'triggers correctly' do
- taskbar.state = { 'body' => 'test' }
- taskbar.save!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).exactly(2)
- expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- end
- context 'when deleting the record' do
- it 'triggers correctly' do
- taskbar.destroy!
- expect(gqs::TicketLiveUserUpdates).to have_received(:trigger).once # only for related_taskbar
- expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_destroy)
- expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
- end
- end
- end
|