fix: admin is redirected to admin groupe instructeur page

after creating or editing groupe instructeur service
This commit is contained in:
Christophe Robillard 2023-09-06 09:02:40 +02:00
parent c5d02cdd6a
commit 5b9fbf40ed
4 changed files with 32 additions and 7 deletions

View file

@ -9,7 +9,7 @@ module Instructeurs
assign_procedure_and_groupe_instructeur assign_procedure_and_groupe_instructeur
@contact_information = @groupe_instructeur.build_contact_information(contact_information_params) @contact_information = @groupe_instructeur.build_contact_information(contact_information_params)
if @contact_information.save if @contact_information.save
redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été ajoutées" redirect_to_groupe_instructeur("Les informations de contact ont bien été ajoutées")
else else
flash[:alert] = @contact_information.errors.full_messages flash[:alert] = @contact_information.errors.full_messages
render :new render :new
@ -25,7 +25,7 @@ module Instructeurs
assign_procedure_and_groupe_instructeur assign_procedure_and_groupe_instructeur
@contact_information = @groupe_instructeur.contact_information @contact_information = @groupe_instructeur.contact_information
if @contact_information.update(contact_information_params) if @contact_information.update(contact_information_params)
redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été modifiées" redirect_to_groupe_instructeur("Les informations de contact ont bien été modifiées")
else else
flash[:alert] = @contact_information.errors.full_messages flash[:alert] = @contact_information.errors.full_messages
render :edit render :edit
@ -35,11 +35,19 @@ module Instructeurs
def destroy def destroy
assign_procedure_and_groupe_instructeur assign_procedure_and_groupe_instructeur
@groupe_instructeur.contact_information.destroy @groupe_instructeur.contact_information.destroy
redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été supprimées" redirect_to_groupe_instructeur("Les informations de contact ont bien été supprimées")
end end
private private
def redirect_to_groupe_instructeur(notice)
if params[:from_admin] == "true"
redirect_to admin_procedure_groupe_instructeur_path(@procedure, @groupe_instructeur), notice: notice
else
redirect_to instructeur_groupe_path(@procedure, @groupe_instructeur), notice: notice
end
end
def assign_procedure_and_groupe_instructeur def assign_procedure_and_groupe_instructeur
@procedure = current_instructeur.procedures.find params[:procedure_id] @procedure = current_instructeur.procedures.find params[:procedure_id]
@groupe_instructeur = current_instructeur.groupe_instructeurs.find params[:groupe_id] @groupe_instructeur = current_instructeur.groupe_instructeurs.find params[:groupe_id]

View file

@ -5,13 +5,13 @@
= "Le groupe #{groupe_instructeur.label} n'a pas d'informations de contact. Les informations de contact affichées à l'usager seront celles du service de la procédure" = "Le groupe #{groupe_instructeur.label} n'a pas d'informations de contact. Les informations de contact affichées à l'usager seront celles du service de la procédure"
%p.mt-3 %p.mt-3
- if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur) - if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur)
= link_to "+ Ajouter des informations de contact", new_instructeur_groupe_contact_information_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id), class: "fr-btn" = link_to "+ Ajouter des informations de contact", new_instructeur_groupe_contact_information_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id, from_admin: true), class: "fr-btn"
- else - else
Si vous souhaitez créer un service pour ce groupe, vous devez faire partie du groupe instructeur Si vous souhaitez créer un service pour ce groupe, vous devez faire partie du groupe instructeur
- else - else
%p.mt-3 %p.mt-3
- if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur) - if groupe_instructeur.instructeurs.include?(current_administrateur.user.instructeur)
= link_to "Modifier les informations de contact", edit_instructeur_groupe_contact_information_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id), class: "fr-btn" = link_to "Modifier les informations de contact", edit_instructeur_groupe_contact_information_path(procedure_id: procedure.id, groupe_id: groupe_instructeur.id, from_admin: true), class: "fr-btn"
- else - else
Si vous souhaitez modifier ce service, vous devez faire partie du groupe instructeur Si vous souhaitez modifier ce service, vous devez faire partie du groupe instructeur
%p.mt-3= service.nom %p.mt-3= service.nom

View file

@ -1,4 +1,5 @@
= form_with url: instructeur_groupe_contact_information_path, model: @contact_information, local: true do |f| = form_with url: instructeur_groupe_contact_information_path, model: @contact_information, local: true do |f|
= hidden_field_tag :from_admin, params[:from_admin]
= render Dsfr::CalloutComponent.new(title: "Informations de contact") do |c| = render Dsfr::CalloutComponent.new(title: "Informations de contact") do |c|
- c.body do - c.body do

View file

@ -3,6 +3,7 @@ describe Instructeurs::ContactInformationsController, type: :controller do
let(:procedure) { create(:procedure) } let(:procedure) { create(:procedure) }
let(:assign_to) { create(:assign_to, instructeur: instructeur, groupe_instructeur: build(:groupe_instructeur, procedure: procedure)) } let(:assign_to) { create(:assign_to, instructeur: instructeur, groupe_instructeur: build(:groupe_instructeur, procedure: procedure)) }
let(:gi) { assign_to.groupe_instructeur } let(:gi) { assign_to.groupe_instructeur }
let(:from_admin) { nil }
before do before do
sign_in(instructeur.user) sign_in(instructeur.user)
@ -20,7 +21,8 @@ describe Instructeurs::ContactInformationsController, type: :controller do
adresse: 'adresse' adresse: 'adresse'
}, },
procedure_id: procedure.id, procedure_id: procedure.id,
groupe_id: gi.id groupe_id: gi.id,
from_admin: from_admin
} }
end end
@ -34,6 +36,14 @@ describe Instructeurs::ContactInformationsController, type: :controller do
expect(ContactInformation.last.horaires).to eq('horaires') expect(ContactInformation.last.horaires).to eq('horaires')
expect(ContactInformation.last.adresse).to eq('adresse') expect(ContactInformation.last.adresse).to eq('adresse')
end end
context 'from admin' do
let(:from_admin) { true }
it do
post :create, params: params
expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(gi, procedure_id: procedure.id))
end
end
end end
context 'when submitting an invalid contact_information' do context 'when submitting an invalid contact_information' do
@ -69,7 +79,8 @@ describe Instructeurs::ContactInformationsController, type: :controller do
id: contact_information.id, id: contact_information.id,
contact_information: contact_information_params, contact_information: contact_information_params,
procedure_id: procedure.id, procedure_id: procedure.id,
groupe_id: gi.id groupe_id: gi.id,
from_admin: from_admin
} }
} }
@ -84,6 +95,11 @@ describe Instructeurs::ContactInformationsController, type: :controller do
it { expect(response).to redirect_to(instructeur_groupe_path(gi, procedure_id: procedure.id)) } it { expect(response).to redirect_to(instructeur_groupe_path(gi, procedure_id: procedure.id)) }
end end
context 'when updating a contact_information as an admin' do
let(:from_admin) { true }
it { expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(gi, procedure_id: procedure.id)) }
end
context 'when updating a contact_information with invalid data' do context 'when updating a contact_information with invalid data' do
let(:contact_information_params) { { nom: '' } } let(:contact_information_params) { { nom: '' } }