templates_spec.rb 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
  2. require 'rails_helper'
  3. RSpec.describe Gql::Queries::Checklist::Templates, type: :graphql do
  4. let(:agent) { create(:agent) }
  5. let(:checklist_template) { create(:checklist_template) }
  6. let(:only_active) { false }
  7. let(:query) do
  8. <<~QUERY
  9. query checklistTemplates($onlyActive: Boolean = false) {
  10. checklistTemplates(onlyActive: $onlyActive) {
  11. id
  12. name
  13. active
  14. }
  15. }
  16. QUERY
  17. end
  18. let(:variables) { { onlyActive: only_active } }
  19. let(:response) do
  20. [
  21. {
  22. 'id' => gql.id(checklist_template),
  23. 'name' => checklist_template.name,
  24. 'active' => checklist_template.active,
  25. },
  26. ]
  27. end
  28. before do
  29. checklist_template
  30. gql.execute(query, variables: variables)
  31. end
  32. shared_examples 'returning template data' do
  33. it 'returns template data' do
  34. expect(gql.result.data).to eq(response)
  35. end
  36. end
  37. shared_examples 'raising an error' do |error_type|
  38. it 'raises an error' do
  39. expect(gql.result.error_type).to eq(error_type)
  40. end
  41. end
  42. context 'with authenticated session', authenticated_as: :agent do
  43. it_behaves_like 'returning template data'
  44. context 'without agent permissions', authenticated_as: :customer do
  45. let(:customer) { create(:customer) }
  46. it_behaves_like 'raising an error', Exceptions::Forbidden
  47. end
  48. context 'when template does not exist' do
  49. let(:checklist_template) { nil }
  50. let(:response) { [] }
  51. it_behaves_like 'returning template data'
  52. end
  53. context 'with inactive template' do
  54. let(:checklist_template) { create(:checklist_template, active: false) }
  55. it_behaves_like 'returning template data'
  56. context 'with active only filter' do
  57. let(:only_active) { true }
  58. let(:response) { [] }
  59. it_behaves_like 'returning template data'
  60. end
  61. end
  62. end
  63. it_behaves_like 'graphql responds with error if unauthenticated'
  64. end