From 2135985583aad671955e08f9cdc5268f5e1c752d Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 5 May 2023 10:19:57 +0200 Subject: [PATCH] =?UTF-8?q?correctif(procedure.clone):=20ET=20admin,=20je?= =?UTF-8?q?=20souhaite=20pouvoir=20cloner=20une=20procedure=20ayant=20deux?= =?UTF-8?q?=20groupes=20d'instructeur=20ayant=20le=20dernier=20ferm=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/groupe_instructeur.rb | 10 +++++++++- spec/models/procedure_spec.rb | 6 ++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/models/groupe_instructeur.rb b/app/models/groupe_instructeur.rb index a3aca8266..95d06694f 100644 --- a/app/models/groupe_instructeur.rb +++ b/app/models/groupe_instructeur.rb @@ -25,7 +25,15 @@ class GroupeInstructeur < ApplicationRecord validates :label, presence: true, allow_nil: false validates :label, uniqueness: { scope: :procedure } - validates :closed, acceptance: { accept: [false] }, if: -> { closed_changed? && self.procedure.groupe_instructeurs.active.one? } + validates :closed, acceptance: { accept: [false] }, if: -> do + if closed + other_groupes = procedure.groupe_instructeurs - [self] + + (other_groupes.map(&:closed) + [closed]).all? + else + false + end + end before_validation -> { label&.strip! } after_save :toggle_routing diff --git a/spec/models/procedure_spec.rb b/spec/models/procedure_spec.rb index a61564470..df79d17ab 100644 --- a/spec/models/procedure_spec.rb +++ b/spec/models/procedure_spec.rb @@ -523,6 +523,12 @@ describe Procedure do it "should clone instructeurs in the groupe" do expect(subject.groupe_instructeurs.where(label: "groupe_1").first.instructeurs.map(&:email)).to eq(procedure.groupe_instructeurs.where(label: "groupe_1").first.instructeurs.map(&:email)) end + + it 'should clone with success a second group instructeur closed' do + procedure.groupe_instructeurs.last.update(closed: true) + + expect { subject }.not_to raise_error + end end it 'should reset duree_conservation_etendue_par_ds' do