Merge pull request #7757 from betagouv/7738-fix-delete-administrateur
fix: remove instructeur when admin is removed
This commit is contained in:
commit
f55bf4c451
2 changed files with 31 additions and 3 deletions
|
@ -73,6 +73,14 @@ module Manager
|
||||||
if administrateur.present?
|
if administrateur.present?
|
||||||
procedure.administrateurs.delete(administrateur)
|
procedure.administrateurs.delete(administrateur)
|
||||||
end
|
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)
|
redirect_to manager_procedure_path(procedure)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -72,11 +72,31 @@ describe Manager::ProceduresController, type: :controller do
|
||||||
|
|
||||||
describe '#delete_administrateur' do
|
describe '#delete_administrateur' do
|
||||||
let(:procedure) { create(:procedure, :with_service, administrateurs: [administrateur, autre_administrateur]) }
|
let(:procedure) { create(:procedure, :with_service, administrateurs: [administrateur, autre_administrateur]) }
|
||||||
|
let(:administrateur) { create(:administrateur, email: super_admin.email) }
|
||||||
|
|
||||||
before do
|
subject(:delete_request) { put :delete_administrateur, params: { id: procedure.id } }
|
||||||
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
|
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
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue