From f34c89027809409df368a7436043a8d047107042 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Tue, 8 Nov 2022 16:46:57 +0100 Subject: [PATCH 1/3] add a label for api and export for sensitive data as titre_identite_champ --- app/models/champs/titre_identite_champ.rb | 4 +-- .../champs/titre_identite_champ_spec.rb | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 spec/models/champs/titre_identite_champ_spec.rb diff --git a/app/models/champs/titre_identite_champ.rb b/app/models/champs/titre_identite_champ.rb index e93da6768..22348d4b9 100644 --- a/app/models/champs/titre_identite_champ.rb +++ b/app/models/champs/titre_identite_champ.rb @@ -37,10 +37,10 @@ class Champs::TitreIdentiteChamp < Champ end def for_export - nil + piece_justificative_file.attached? ? "présent" : "absent" end def for_api - nil + piece_justificative_file.attached? ? "présent" : "absent" end end diff --git a/spec/models/champs/titre_identite_champ_spec.rb b/spec/models/champs/titre_identite_champ_spec.rb new file mode 100644 index 000000000..ae6c7e266 --- /dev/null +++ b/spec/models/champs/titre_identite_champ_spec.rb @@ -0,0 +1,27 @@ +describe Champs::TitreIdentiteChamp do + describe "#for_export" do + let(:champ_titre_identite) { create(:champ_titre_identite) } + + subject { champ_titre_identite.for_export } + + it { is_expected.to eq('présent') } + + context 'without attached file' do + before { champ_titre_identite.piece_justificative_file.purge } + it { is_expected.to eq('absent') } + end + end + + describe '#for_api' do + let(:champ_titre_identite) { create(:champ_titre_identite) } + + subject { champ_titre_identite.for_api } + + it { is_expected.to eq('présent') } + + context 'without attached file' do + before { champ_titre_identite.piece_justificative_file.purge } + it { is_expected.to eq('absent') } + end + end +end From 3953470c78d35dc776f08a4098e37c8db701f18b Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Tue, 8 Nov 2022 18:00:28 +0100 Subject: [PATCH 2/3] remove change on api V1 and update graphql for sensitive data --- app/graphql/schema.graphql | 1 + .../types/champs/titre_identite_champ_type.rb | 5 +++++ app/models/champs/titre_identite_champ.rb | 2 +- spec/models/champs/titre_identite_champ_spec.rb | 13 ------------- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/app/graphql/schema.graphql b/app/graphql/schema.graphql index 644f197da..92c715abe 100644 --- a/app/graphql/schema.graphql +++ b/app/graphql/schema.graphql @@ -2085,6 +2085,7 @@ type TextChamp implements Champ { } type TitreIdentiteChamp implements Champ { + filled: Boolean! grantType: TitreIdentiteGrantType! id: ID! diff --git a/app/graphql/types/champs/titre_identite_champ_type.rb b/app/graphql/types/champs/titre_identite_champ_type.rb index df137607b..ee4ae9ce6 100644 --- a/app/graphql/types/champs/titre_identite_champ_type.rb +++ b/app/graphql/types/champs/titre_identite_champ_type.rb @@ -8,9 +8,14 @@ module Types::Champs end field :grant_type, TitreIdentiteGrantTypeType, null: false + field :filled, Boolean, null: false def grant_type TypesDeChamp::TitreIdentiteTypeDeChamp::PIECE_JUSTIFICATIVE end + + def filled + object.piece_justificative_file.attached? + end end end diff --git a/app/models/champs/titre_identite_champ.rb b/app/models/champs/titre_identite_champ.rb index 22348d4b9..139c204fe 100644 --- a/app/models/champs/titre_identite_champ.rb +++ b/app/models/champs/titre_identite_champ.rb @@ -41,6 +41,6 @@ class Champs::TitreIdentiteChamp < Champ end def for_api - piece_justificative_file.attached? ? "présent" : "absent" + nil end end diff --git a/spec/models/champs/titre_identite_champ_spec.rb b/spec/models/champs/titre_identite_champ_spec.rb index ae6c7e266..8311ccf72 100644 --- a/spec/models/champs/titre_identite_champ_spec.rb +++ b/spec/models/champs/titre_identite_champ_spec.rb @@ -11,17 +11,4 @@ describe Champs::TitreIdentiteChamp do it { is_expected.to eq('absent') } end end - - describe '#for_api' do - let(:champ_titre_identite) { create(:champ_titre_identite) } - - subject { champ_titre_identite.for_api } - - it { is_expected.to eq('présent') } - - context 'without attached file' do - before { champ_titre_identite.piece_justificative_file.purge } - it { is_expected.to eq('absent') } - end - end end From e7c3181fc91ed584aca683366bd5d9dd708bfc88 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Wed, 16 Nov 2022 14:05:01 +0100 Subject: [PATCH 3/3] add spec for api --- spec/graphql/dossier_spec.rb | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/spec/graphql/dossier_spec.rb b/spec/graphql/dossier_spec.rb index b2fc60c4d..fe919867f 100644 --- a/spec/graphql/dossier_spec.rb +++ b/spec/graphql/dossier_spec.rb @@ -158,6 +158,30 @@ RSpec.describe Types::DossierType, type: :graphql do } end + describe 'dossier with titre identite filled' do + let(:procedure) { create(:procedure, :published, types_de_champ_public: [{ type: :titre_identite }]) } + let(:dossier) { create(:dossier, :accepte, :with_populated_champs, procedure: procedure) } + + let(:query) { DOSSIER_WITH_TITRE_IDENTITE_QUERY } + let(:variables) { { number: dossier.id } } + + it { + expect(data[:dossier][:champs][0][:filled]).to eq(true) + } + end + + describe 'dossier with titre identite not filled' do + let(:procedure) { create(:procedure, :published, types_de_champ_public: [{ type: :titre_identite }]) } + let(:dossier) { create(:dossier, :accepte, procedure: procedure) } + + let(:query) { DOSSIER_WITH_TITRE_IDENTITE_QUERY } + let(:variables) { { number: dossier.id } } + + it { + expect(data[:dossier][:champs][0][:filled]).to eq(false) + } + end + DOSSIER_QUERY = <<-GRAPHQL query($number: Int!) { dossier(number: $number) { @@ -260,4 +284,21 @@ RSpec.describe Types::DossierType, type: :graphql do } } GRAPHQL + + DOSSIER_WITH_TITRE_IDENTITE_QUERY = <<-GRAPHQL + query($number: Int!) { + dossier(number: $number) { + id + number + champs { + id + label + __typename + ... on TitreIdentiteChamp { + filled + } + } + } + } + GRAPHQL end