From 90d795d1e082bd95b5cdb3347dd339fbbd708b46 Mon Sep 17 00:00:00 2001 From: sebastiencarceles Date: Tue, 13 Sep 2022 08:45:36 +0200 Subject: [PATCH] fix: remove instructeur when admin is removed --- .../manager/procedures_controller.rb | 8 ++++++ .../manager/procedures_controller_spec.rb | 26 ++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/controllers/manager/procedures_controller.rb b/app/controllers/manager/procedures_controller.rb index 5ebacbdc0..bd4601f92 100644 --- a/app/controllers/manager/procedures_controller.rb +++ b/app/controllers/manager/procedures_controller.rb @@ -73,6 +73,14 @@ module Manager if administrateur.present? procedure.administrateurs.delete(administrateur) end + + instructeur = Instructeur.by_email(current_super_admin.email) + if instructeur.present? + procedure.groupe_instructeurs.map do |groupe_instructeur| + groupe_instructeur.assign_tos.where(instructeur: instructeur).destroy_all + end + end + redirect_to manager_procedure_path(procedure) end diff --git a/spec/controllers/manager/procedures_controller_spec.rb b/spec/controllers/manager/procedures_controller_spec.rb index cf27026c8..d02231dae 100644 --- a/spec/controllers/manager/procedures_controller_spec.rb +++ b/spec/controllers/manager/procedures_controller_spec.rb @@ -72,11 +72,31 @@ describe Manager::ProceduresController, type: :controller do describe '#delete_administrateur' do let(:procedure) { create(:procedure, :with_service, administrateurs: [administrateur, autre_administrateur]) } + let(:administrateur) { create(:administrateur, email: super_admin.email) } - before do - put :delete_administrateur, params: { id: procedure.id } + subject(:delete_request) { put :delete_administrateur, params: { id: procedure.id } } + + it "removes the current administrateur from the procedure" do + delete_request + expect(procedure.administrateurs).to eq([autre_administrateur]) end - it { expect(procedure.administrateurs).to eq([autre_administrateur]) } + context 'when the current administrateur has been added as instructeur too' do + let(:instructeur) { create(:instructeur) } + let(:administrateur) { create(:administrateur, email: super_admin.email, instructeur: instructeur) } + + before do + procedure.groupe_instructeurs.map do |groupe_instructeur| + instructeur.assign_to.create!(groupe_instructeur: groupe_instructeur, manager: true) + end + end + + it "removes the instructeur from the procedure" do + delete_request + instructeur.groupe_instructeurs.each do |groupe_instructeur| + expect(groupe_instructeur.instructeurs).not_to include(instructeur) + end + end + end end end