show_spec.rb 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Gql::Queries::Ticket::SharedDraft::Zoom::Show, type: :graphql do
  4. let(:owner) { create(:user) }
  5. let(:ticket) { create(:ticket, owner:, group: Group.first) }
  6. let(:shared_draft_zoom) { create(:ticket_shared_draft_zoom, ticket:) }
  7. let(:variables) { { sharedDraftId: gql.id(shared_draft_zoom) } }
  8. let(:query) do
  9. <<~QUERY
  10. query ticketSharedDraftZoomShow($sharedDraftId: ID!) {
  11. ticketSharedDraftZoomShow(sharedDraftId: $sharedDraftId) {
  12. id
  13. ticketId
  14. newArticle
  15. ticketAttributes
  16. }
  17. }
  18. QUERY
  19. end
  20. before do
  21. gql.execute(query, variables: variables)
  22. end
  23. context 'with an agent', authenticated_as: :agent do
  24. let(:agent) { create(:agent) }
  25. context 'when agent has no permission on related ticket' do
  26. it 'raises an error' do
  27. expect(gql.result.error_type).to eq(Exceptions::Forbidden)
  28. end
  29. end
  30. context 'when agent has permission on related ticket' do
  31. let(:agent) { create(:agent, groups: [Group.first]) }
  32. let(:owner) { agent }
  33. it 'returns the shared draft zoom' do
  34. expect(gql.result.data).to include(
  35. 'id' => gql.id(shared_draft_zoom),
  36. 'ticketId' => gql.id(shared_draft_zoom.ticket),
  37. 'newArticle' => shared_draft_zoom.new_article.merge('body' => ''),
  38. 'ticketAttributes' => shared_draft_zoom.ticket_attributes
  39. )
  40. end
  41. end
  42. end
  43. it_behaves_like 'graphql responds with error if unauthenticated'
  44. end