fix(graphql): do not crash if attestation is nil
This commit is contained in:
parent
dd380530ea
commit
efd8ddb99e
3 changed files with 53 additions and 2 deletions
|
@ -143,8 +143,10 @@ module Types
|
|||
end
|
||||
|
||||
def attestation
|
||||
if object.termine? && object.procedure.attestation_template&.activated?
|
||||
Loaders::Association.for(object.class, attestation: { pdf_attachment: :blob }).load(object).then(&:pdf)
|
||||
if object.attestation_activated?
|
||||
Loaders::Association.for(object.class, attestation: { pdf_attachment: :blob })
|
||||
.load(object)
|
||||
.then { |attestation| attestation&.pdf }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -779,6 +779,10 @@ class Dossier < ApplicationRecord
|
|||
end
|
||||
end
|
||||
|
||||
def attestation_activated?
|
||||
termine? && procedure.attestation_template&.activated?
|
||||
end
|
||||
|
||||
def after_passer_en_construction
|
||||
self.conservation_extension = 0.days
|
||||
self.depose_at = self.en_construction_at = self.traitements
|
||||
|
|
45
spec/graphql/dossier_spec.rb
Normal file
45
spec/graphql/dossier_spec.rb
Normal 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
|
Loading…
Reference in a new issue