Merge pull request #6738 from tchak/fix-graphql-nil-attestation

fix(graphql): do not crash if attestation is nil
This commit is contained in:
Paul Chavard 2021-12-08 13:24:18 +01:00 committed by GitHub
commit a0ce6fa388
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 2 deletions

View file

@ -143,8 +143,10 @@ module Types
end end
def attestation def attestation
if object.termine? && object.procedure.attestation_template&.activated? if object.attestation_activated?
Loaders::Association.for(object.class, attestation: { pdf_attachment: :blob }).load(object).then(&:pdf) Loaders::Association.for(object.class, attestation: { pdf_attachment: :blob })
.load(object)
.then { |attestation| attestation&.pdf }
end end
end end

View file

@ -779,6 +779,10 @@ class Dossier < ApplicationRecord
end end
end end
def attestation_activated?
termine? && procedure.attestation_template&.activated?
end
def after_passer_en_construction def after_passer_en_construction
self.conservation_extension = 0.days self.conservation_extension = 0.days
self.depose_at = self.en_construction_at = self.traitements self.depose_at = self.en_construction_at = self.traitements

View file

@ -0,0 +1,45 @@
RSpec.describe Types::DossierType, type: :graphql do
let(:query) { DOSSIER_QUERY }
let(:context) { { internal_use: true } }
let(:variables) { {} }
subject { API::V2::Schema.execute(query, variables: variables, context: context) }
let(:data) { subject['data'].deep_symbolize_keys }
let(:errors) { subject['errors'].deep_symbolize_keys }
describe 'dossier with attestation' do
let(:dossier) { create(:dossier, :accepte, :with_attestation) }
let(:query) { DOSSIER_WITH_ATTESTATION_QUERY }
let(:variables) { { number: dossier.id } }
it { expect(data[:dossier][:attestation]).not_to be_nil }
context 'when attestation is nil' do
before do
dossier.update(attestation: nil)
end
it { expect(data[:dossier][:attestation]).to be_nil }
end
end
DOSSIER_QUERY = <<-GRAPHQL
query($number: Int!) {
dossier(number: $number) {
id
number
}
}
GRAPHQL
DOSSIER_WITH_ATTESTATION_QUERY = <<-GRAPHQL
query($number: Int!) {
dossier(number: $number) {
attestation {
url
}
}
}
GRAPHQL
end