delete_spec.rb 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # Copyright (C) 2012-2025 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Gql::Mutations::Ticket::SharedDraft::Zoom::Delete, :aggregate_failures, type: :graphql do
  4. let(:owner) { create(:user) }
  5. let(:ticket) { create(:ticket, owner:, group: Group.first) }
  6. let(:shared_draft) { create(:ticket_shared_draft_zoom, ticket:) }
  7. let(:shared_draft_id) { gql.id(shared_draft) }
  8. let(:query) do
  9. <<~QUERY
  10. mutation ticketSharedDraftZoomDelete($sharedDraftId: ID!) {
  11. ticketSharedDraftZoomDelete(sharedDraftId: $sharedDraftId) {
  12. success
  13. errors {
  14. message
  15. field
  16. }
  17. }
  18. }
  19. QUERY
  20. end
  21. before do
  22. gql.execute(query, variables: { sharedDraftId: shared_draft_id })
  23. end
  24. context 'with an agent', authenticated_as: :agent do
  25. let(:agent) { create(:agent) }
  26. context 'when agent has no permission on related ticket' do
  27. it 'raises an error' do
  28. expect(gql.result.error_type).to eq(Exceptions::Forbidden)
  29. end
  30. end
  31. context 'when agent has permission on related ticket' do
  32. let(:agent) { create(:agent, groups: [Group.first]) }
  33. let(:owner) { agent }
  34. it 'deletes the shared draft zoom' do
  35. expect { shared_draft.reload }.to raise_error(ActiveRecord::RecordNotFound)
  36. end
  37. it 'returns success' do
  38. expect(gql.result.data).to include(
  39. 'success' => true,
  40. 'errors' => be_nil
  41. )
  42. end
  43. end
  44. context 'when shared draft does not exist' do
  45. let(:shared_draft_id) do
  46. id = gql.id(shared_draft)
  47. shared_draft.destroy
  48. id
  49. end
  50. it 'raises an error' do
  51. expect(gql.result.error_type).to eq(ActiveRecord::RecordNotFound)
  52. end
  53. end
  54. end
  55. it_behaves_like 'graphql responds with error if unauthenticated'
  56. end