From 58f2f6bd9d0c2f4b48bf1d20199aabac5bd196e5 Mon Sep 17 00:00:00 2001 From: Kara Diaby Date: Wed, 10 Aug 2022 16:25:50 +0200 Subject: [PATCH] =?UTF-8?q?Manager=20:=20permet=20au=20super=20admin=20de?= =?UTF-8?q?=20se=20retirer=20d'une=20d=C3=A9marche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/manager/procedures_controller.rb | 8 ++++++++ app/views/manager/procedures/show.html.erb | 2 ++ config/routes.rb | 1 + .../manager/procedures_controller_spec.rb | 13 ++++++++++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/controllers/manager/procedures_controller.rb b/app/controllers/manager/procedures_controller.rb index 51a8c9324..836bfb522 100644 --- a/app/controllers/manager/procedures_controller.rb +++ b/app/controllers/manager/procedures_controller.rb @@ -67,6 +67,14 @@ module Manager redirect_to manager_procedure_path(procedure) end + def delete_administrateur + administrateur = procedure.administrateurs.find { |admin| admin.email == current_super_admin.email } + if administrateur.present? + procedure.administrateurs.delete(administrateur) + end + redirect_to manager_procedure_path(procedure) + end + def change_piece_justificative_template if type_de_champ.update(type_de_champ_params) flash[:notice] = "Le modèle est mis à jour." diff --git a/app/views/manager/procedures/show.html.erb b/app/views/manager/procedures/show.html.erb index 044289967..06c550bdb 100644 --- a/app/views/manager/procedures/show.html.erb +++ b/app/views/manager/procedures/show.html.erb @@ -70,6 +70,8 @@ as well as a link to its edit page. <% end %> <% if procedure.administrateurs.find { |admin| admin.email == current_super_admin.email } %>

Vous êtes déjà administrateur sur cette démarche

+ <%= link_to 'Me retirer de cette démarche', delete_administrateur_manager_procedure_path(procedure), method: :put, class: 'button' %> + <% else %> <%= form_tag(add_administrateur_manager_procedure_path(procedure), style: 'margin-top: 1rem;') do %> diff --git a/config/routes.rb b/config/routes.rb index 0a5a43e78..0745dc5c6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -16,6 +16,7 @@ Rails.application.routes.draw do post 'discard', on: :member post 'restore', on: :member post 'add_administrateur', on: :member + put 'delete_administrateur', on: :member post 'change_piece_justificative_template', on: :member get 'export_mail_brouillons', on: :member end diff --git a/spec/controllers/manager/procedures_controller_spec.rb b/spec/controllers/manager/procedures_controller_spec.rb index 5834190fd..cf27026c8 100644 --- a/spec/controllers/manager/procedures_controller_spec.rb +++ b/spec/controllers/manager/procedures_controller_spec.rb @@ -1,6 +1,7 @@ describe Manager::ProceduresController, type: :controller do let(:super_admin) { create :super_admin } - + let(:administrateur) { create(:administrateur, email: super_admin.email) } + let(:autre_administrateur) { create(:administrateur) } before { sign_in super_admin } describe '#whitelist' do @@ -68,4 +69,14 @@ describe Manager::ProceduresController, type: :controller do it { expect(response.body).to include('1 dossier') } end end + + describe '#delete_administrateur' do + let(:procedure) { create(:procedure, :with_service, administrateurs: [administrateur, autre_administrateur]) } + + before do + put :delete_administrateur, params: { id: procedure.id } + end + + it { expect(procedure.administrateurs).to eq([autre_administrateur]) } + end end