triggers_subscriptions_spec.rb 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Taskbar::TriggersSubscriptions, :aggregate_failures, performs_jobs: true do
  4. let(:taskbar) { create(:taskbar, user: create(:user)) }
  5. let(:related_taskbar) { create(:taskbar, key: taskbar.key, user: create(:user)) }
  6. gqs = Gql::Subscriptions
  7. gqs_uc = gqs::User::Current
  8. before do
  9. freeze_time
  10. related_taskbar.save!
  11. taskbar.save!
  12. travel(1.second)
  13. allow(gqs::Ticket::LiveUserUpdates).to receive(:trigger)
  14. allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_create)
  15. allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_update)
  16. allow(gqs_uc::TaskbarItemUpdates).to receive(:trigger_after_destroy)
  17. allow(gqs_uc::TaskbarItemStateUpdates).to receive(:trigger)
  18. end
  19. context 'when creating a record' do
  20. it 'triggers correctly' do
  21. create(:taskbar)
  22. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).once
  23. expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_create).once
  24. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  25. end
  26. end
  27. context 'when updating prio' do
  28. it 'triggers correctly' do
  29. taskbar.prio += 1
  30. taskbar.save!
  31. expect(gqs::Ticket::LiveUserUpdates).not_to have_received(:trigger)
  32. expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
  33. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  34. end
  35. end
  36. context 'when updating active' do
  37. it 'triggers correctly' do
  38. taskbar.active = !taskbar.active
  39. taskbar.save!
  40. perform_enqueued_jobs
  41. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).twice
  42. expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
  43. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  44. end
  45. end
  46. context 'when updating dirty' do
  47. it 'triggers correctly' do
  48. taskbar.preferences[:dirty] = !taskbar.preferences[:dirty]
  49. taskbar.save!
  50. perform_enqueued_jobs
  51. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).twice
  52. expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_update).once
  53. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  54. end
  55. end
  56. context 'when updating last_contact_at' do
  57. it 'triggers correctly' do
  58. taskbar.touch_last_contact!
  59. perform_enqueued_jobs
  60. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).exactly(1) # only for related_taskbar
  61. expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
  62. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  63. end
  64. end
  65. context 'when updating state' do
  66. context 'with desktop app' do
  67. it 'triggers correctly' do
  68. taskbar.state = { 'body' => 'test' }
  69. taskbar.save!
  70. perform_enqueued_jobs
  71. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).exactly(2)
  72. expect(gqs_uc::TaskbarItemStateUpdates).to have_received(:trigger).once
  73. end
  74. end
  75. context 'with mobile app' do
  76. let(:taskbar) { create(:taskbar, app: 'mobile') }
  77. it 'triggers correctly' do
  78. taskbar.state = { 'body' => 'test' }
  79. taskbar.save!
  80. perform_enqueued_jobs
  81. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).exactly(2)
  82. expect(gqs_uc::TaskbarItemUpdates).not_to have_received(:trigger_after_update)
  83. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  84. end
  85. end
  86. end
  87. context 'when deleting the record' do
  88. it 'triggers correctly' do
  89. taskbar.destroy!
  90. perform_enqueued_jobs
  91. expect(gqs::Ticket::LiveUserUpdates).to have_received(:trigger).once # only for related_taskbar
  92. expect(gqs_uc::TaskbarItemUpdates).to have_received(:trigger_after_destroy)
  93. expect(gqs_uc::TaskbarItemStateUpdates).not_to have_received(:trigger)
  94. end
  95. end
  96. end