overview_updates_spec.rb 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Gql::Subscriptions::User::Current::Ticket::OverviewUpdates, authenticated_as: :agent, type: :graphql do
  4. let(:mock_channel) { build_mock_channel }
  5. let(:mock_channel_with_sorting) { build_mock_channel }
  6. let(:overview1) { create(:overview, name: 'Test Overview 1') }
  7. let(:overview2) { create(:overview, name: 'Test Overview 2') }
  8. let(:agent) { create(:agent) }
  9. let(:subscription) do
  10. <<~QUERY
  11. subscription userCurrentTicketOverviewUpdates($ignoreUserConditions: Boolean!) {
  12. userCurrentTicketOverviewUpdates(ignoreUserConditions: $ignoreUserConditions) {
  13. ticketOverviews {
  14. id
  15. name
  16. }
  17. }
  18. }
  19. QUERY
  20. end
  21. before do
  22. overview1 && overview2
  23. create(:user_overview_sorting, overview: overview1, prio: 2, user: agent)
  24. create(:user_overview_sorting, overview: overview2, prio: 1, user: agent)
  25. gql.execute(subscription, variables: { ignoreUserConditions: false }, context: { channel: mock_channel })
  26. end
  27. context 'when subscribed' do
  28. it 'subscribes' do
  29. expect(gql.result.data).to eq({ 'ticketOverviews' => nil })
  30. end
  31. it 'receives ticket overview updates according to sorting of the user' do
  32. overview1.touch
  33. expect(mock_channel.mock_broadcasted_messages.first.dig(:result, 'data', 'userCurrentTicketOverviewUpdates', 'ticketOverviews').first['name']).to eq('Test Overview 2')
  34. end
  35. it 'receives updates whenever a ticket overview was created' do
  36. create(:overview)
  37. # We have 7 default overviews + the two we created in the before block.+
  38. expect(mock_channel.mock_broadcasted_messages.first.dig(:result, 'data', 'userCurrentTicketOverviewUpdates', 'ticketOverviews').size).to eq(10)
  39. end
  40. it 'receives updates whenever a ticket overview was deleted' do
  41. overview1.destroy!
  42. # We have 7 default overviews + the two we created in the before block.
  43. expect(mock_channel.mock_broadcasted_messages.first.dig(:result, 'data', 'userCurrentTicketOverviewUpdates', 'ticketOverviews').size).to eq(8)
  44. end
  45. end
  46. end