reset_spec.rb 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Gql::Mutations::User::Current::RecentView::Reset, :aggregate_failures, type: :graphql do
  4. let(:mutation) do
  5. <<~GQL
  6. mutation userCurrentRecentViewReset {
  7. userCurrentRecentViewReset {
  8. success
  9. }
  10. }
  11. GQL
  12. end
  13. let(:group) { create(:group) }
  14. let(:ticket) { create(:ticket, group:) }
  15. let(:user) { create(:agent, groups: [group]) }
  16. def execute_graphql_query
  17. gql.execute(mutation)
  18. end
  19. context 'when user is authenticated', authenticated_as: :user do
  20. before do
  21. RecentView.log('Ticket', ticket.id, user)
  22. RecentView.log('User', user.id, user)
  23. allow(Gql::Subscriptions::User::Current::RecentView::Updates).to receive(:trigger)
  24. end
  25. it 'resets recent view entries' do
  26. execute_graphql_query
  27. expect(gql.result.data[:success]).to be(true)
  28. expect(RecentView.list(user)).to be_empty
  29. end
  30. it 'triggers the recent view updates subscription only once' do
  31. execute_graphql_query
  32. expect(Gql::Subscriptions::User::Current::RecentView::Updates).to have_received(:trigger).exactly(1).with({}, scope: user.id)
  33. end
  34. end
  35. context 'when user is not authenticated' do
  36. it 'returns an error' do
  37. expect(execute_graphql_query.error_message).to eq('Authentication required')
  38. end
  39. end
  40. end