Merge pull request #9005 from mfo/US/fix-groupe_instructeurs-with-at-least-one-active

correctif(procedure.clone): ET admin, je souhaite pouvoir cloner une procedure ayant deux groupes d'instructeur ayant le dernier fermé
This commit is contained in:
mfo 2023-05-05 13:24:41 +00:00 committed by GitHub
commit 96fbbbbbb9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View file

@ -25,7 +25,15 @@ class GroupeInstructeur < ApplicationRecord
validates :label, presence: true, allow_nil: false validates :label, presence: true, allow_nil: false
validates :label, uniqueness: { scope: :procedure } 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! } before_validation -> { label&.strip! }
after_save :toggle_routing after_save :toggle_routing

View file

@ -523,6 +523,12 @@ describe Procedure do
it "should clone instructeurs in the groupe" 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)) 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 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 end
it 'should reset duree_conservation_etendue_par_ds' do it 'should reset duree_conservation_etendue_par_ds' do