From 20d4a8153d43f257bf61c72f0bc3a9c44354fca3 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Thu, 2 Mar 2023 15:52:50 +0100 Subject: [PATCH] fix(groupe-instructeur): a closed groupe with an active groupe is a valid record --- app/models/groupe_instructeur.rb | 2 +- spec/models/groupe_instructeur_spec.rb | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/models/groupe_instructeur.rb b/app/models/groupe_instructeur.rb index 3ea1e9334..ffa3902ae 100644 --- a/app/models/groupe_instructeur.rb +++ b/app/models/groupe_instructeur.rb @@ -22,7 +22,7 @@ class GroupeInstructeur < ApplicationRecord validates :label, presence: true, allow_nil: false validates :label, uniqueness: { scope: :procedure } - validates :closed, acceptance: { accept: [false] }, if: -> { self.procedure.groupe_instructeurs.active.one? } + validates :closed, acceptance: { accept: [false] }, if: -> { closed_changed? && self.procedure.groupe_instructeurs.active.one? } before_validation -> { label&.strip! } after_save :toggle_routing diff --git a/spec/models/groupe_instructeur_spec.rb b/spec/models/groupe_instructeur_spec.rb index 9f00ccf7d..ed1c65525 100644 --- a/spec/models/groupe_instructeur_spec.rb +++ b/spec/models/groupe_instructeur_spec.rb @@ -98,6 +98,24 @@ describe GroupeInstructeur, type: :model do end end + describe "active group validations" do + context "there is at least one active groupe instructeur" do + let!(:gi_active) { create(:groupe_instructeur, procedure:, closed: false) } + let!(:gi_closed) { create(:groupe_instructeur, procedure:, closed: true) } + before { procedure.defaut_groupe_instructeur.destroy! } + + it "closed is valid when there is one other active groupe" do + expect(gi_active).to be_valid + expect(gi_closed).to be_valid + end + + it "closed is invalid when there is no active groupe" do + gi_active.closed = true + expect(gi_active).not_to be_valid + end + end + end + private def assign(procedure_to_assign, instructeur_assigne: instructeur)