From 4c516a699111483488bc6c7ebaaad3f9cea409fc Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 22 Dec 2022 13:08:04 +0100 Subject: [PATCH] feat(dossier): allow to rebase champs with value made mandatory --- app/models/concerns/dossier_rebase_concern.rb | 6 +++++- spec/models/dossier_rebase_concern_spec.rb | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/dossier_rebase_concern.rb b/app/models/concerns/dossier_rebase_concern.rb index 401451528..124df5806 100644 --- a/app/models/concerns/dossier_rebase_concern.rb +++ b/app/models/concerns/dossier_rebase_concern.rb @@ -43,7 +43,7 @@ module DossierRebaseConcern when :drop_down_other !change[:from] && change[:to] when :mandatory - change[:from] && !change[:to] + (change[:from] && !change[:to]) || can_change_mandatory?(change) when :type_champ, :condition false else @@ -160,4 +160,8 @@ module DossierRebaseConcern def purge_piece_justificative_file(champ) ActiveStorage::Attachment.where(id: champ.piece_justificative_file.ids).delete_all end + + def can_change_mandatory?(change) + !champs.filter { _1.stable_id == change[:stable_id] }.any?(&:blank?) + end end diff --git a/spec/models/dossier_rebase_concern_spec.rb b/spec/models/dossier_rebase_concern_spec.rb index 29fa88ba9..700bbe361 100644 --- a/spec/models/dossier_rebase_concern_spec.rb +++ b/spec/models/dossier_rebase_concern_spec.rb @@ -72,6 +72,17 @@ describe Dossier do expect(dossier.pending_changes).not_to be_empty expect(dossier.can_rebase?).to be_falsey end + + context 'with a value' do + before do + dossier.champs.find_by(type_de_champ: type_de_champ).update(value: 'a value') + end + + it 'should be true' do + expect(dossier.pending_changes).not_to be_empty + expect(dossier.can_rebase?).to be_truthy + end + end end context 'with type de champ change type' do