fix(Administrateurs::GroupesInstructeur#add_instructeur): re-rendering a template lead to miss usage of pagination. redirect after add_instructeur

This commit is contained in:
mfo 2024-10-28 10:00:33 +01:00
parent e24caeb4e2
commit 47f2194e92
No known key found for this signature in database
GPG key ID: 7CE3E1F5B794A8EC
2 changed files with 17 additions and 11 deletions

View file

@ -242,7 +242,7 @@ module Administrateurs
end end
if instructeurs.present? if instructeurs.present?
flash.now[:notice] = if procedure.routing_enabled? flash[:notice] = if procedure.routing_enabled?
t('.assignment', t('.assignment',
count: instructeurs.size, count: instructeurs.size,
emails: instructeurs.map(&:email).join(', '), emails: instructeurs.map(&:email).join(', '),
@ -264,7 +264,7 @@ module Administrateurs
end end
end end
flash.now[:alert] = errors.join(". ") if !errors.empty? flash[:alert] = errors.join(". ") if !errors.empty?
@procedure = procedure @procedure = procedure
@instructeurs = paginated_instructeurs @instructeurs = paginated_instructeurs
@ -272,10 +272,10 @@ module Administrateurs
if procedure.routing_enabled? if procedure.routing_enabled?
@groupe_instructeur = groupe_instructeur @groupe_instructeur = groupe_instructeur
render :show redirect_to admin_procedure_groupe_instructeur_path(@procedure, @groupe_instructeur)
else else
@groupes_instructeurs = paginated_groupe_instructeurs @groupes_instructeurs = paginated_groupe_instructeurs
render :index redirect_to admin_procedure_groupe_instructeurs_path(@procedure)
end end
end end

View file

@ -343,7 +343,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
context 'when all emails are valid' do context 'when all emails are valid' do
let(:emails) { ['test@b.gouv.fr', 'test2@b.gouv.fr'] } let(:emails) { ['test@b.gouv.fr', 'test2@b.gouv.fr'] }
it do it do
expect(subject).to render_template(:index) expect(subject).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure_non_routee))
expect(subject.request.flash[:alert]).to be_nil expect(subject.request.flash[:alert]).to be_nil
expect(subject.request.flash[:notice]).to be_present expect(subject.request.flash[:notice]).to be_present
end end
@ -352,7 +352,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
context 'when there is at least one bad email' do context 'when there is at least one bad email' do
let(:emails) { ['badmail', 'instructeur2@gmail.com'] } let(:emails) { ['badmail', 'instructeur2@gmail.com'] }
it do it do
expect(subject).to render_template(:index) expect(subject).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure_non_routee))
expect(subject.request.flash[:alert]).to be_present expect(subject.request.flash[:alert]).to be_present
expect(subject.request.flash[:notice]).to be_present expect(subject.request.flash[:notice]).to be_present
end end
@ -362,7 +362,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
let(:instructeur) { create(:instructeur) } let(:instructeur) { create(:instructeur) }
before { procedure_non_routee.groupe_instructeurs.first.add_instructeurs(emails: [instructeur.user.email]) } before { procedure_non_routee.groupe_instructeurs.first.add_instructeurs(emails: [instructeur.user.email]) }
let(:emails) { [instructeur.email] } let(:emails) { [instructeur.email] }
it { expect(subject).to render_template(:index) } it { expect(subject).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure_non_routee)) }
end end
context 'when signed in admin comes from manager' do context 'when signed in admin comes from manager' do
@ -403,7 +403,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it 'validates changes and responses' do it 'validates changes and responses' do
expect(gi_1_2.instructeurs.pluck(:email)).to include(*new_instructeur_emails) expect(gi_1_2.instructeurs.pluck(:email)).to include(*new_instructeur_emails)
expect(flash.notice).to be_present expect(flash.notice).to be_present
expect(response).to render_template(:show) expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(procedure, gi_1_2))
expect(procedure.routing_enabled?).to be_truthy expect(procedure.routing_enabled?).to be_truthy
expect(GroupeInstructeurMailer).to have_received(:notify_added_instructeurs).with( expect(GroupeInstructeurMailer).to have_received(:notify_added_instructeurs).with(
gi_1_2, gi_1_2,
@ -442,7 +442,10 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
context 'of an instructeur already in the group' do context 'of an instructeur already in the group' do
let(:new_instructeur_emails) { [instructeur.email] } let(:new_instructeur_emails) { [instructeur.email] }
before { do_request } before { do_request }
it { expect(response).to render_template(:show) } it do
expect(flash.alert).not_to be_present
expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(procedure, gi_1_2))
end
end end
context 'of badly formed email' do context 'of badly formed email' do
@ -450,14 +453,17 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
before { do_request } before { do_request }
it do it do
expect(flash.alert).to be_present expect(flash.alert).to be_present
expect(response).to render_template(:show) expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(procedure, gi_1_2))
end end
end end
context 'of an empty string' do context 'of an empty string' do
let(:new_instructeur_emails) { [''] } let(:new_instructeur_emails) { [''] }
before { do_request } before { do_request }
it { expect(response).to render_template(:show) } it do
expect(flash.alert).to be_present
expect(response).to redirect_to(admin_procedure_groupe_instructeur_path(procedure, gi_1_2))
end
end end
context 'when connected as an administrateur from manager' do context 'when connected as an administrateur from manager' do