Merge pull request #6738 from tchak/fix-graphql-nil-attestation
fix(graphql): do not crash if attestation is nil
This commit is contained in:
commit
a0ce6fa388
3 changed files with 53 additions and 2 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
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