From bfba80a5ce475cf1f6e9a6808121fdb0b5d9cca2 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Mon, 11 Mar 2024 12:29:06 +0100 Subject: [PATCH] fix(instructeur): don't try to create instructeur with an invalid email --- .../instructeurs/groupe_instructeurs_controller.rb | 7 +++++-- .../groupe_instructeurs_controller_spec.rb | 11 ++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/controllers/instructeurs/groupe_instructeurs_controller.rb b/app/controllers/instructeurs/groupe_instructeurs_controller.rb index 0a75ff309..d7bedc485 100644 --- a/app/controllers/instructeurs/groupe_instructeurs_controller.rb +++ b/app/controllers/instructeurs/groupe_instructeurs_controller.rb @@ -22,7 +22,9 @@ module Instructeurs instructeur = Instructeur.by_email(instructeur_email) || create_instructeur(instructeur_email) - if groupe_instructeur.instructeurs.include?(instructeur) + if instructeur.blank? + flash[:alert] = "L’adresse email « #{instructeur_email} » n’est pas valide." + elsif groupe_instructeur.instructeurs.include?(instructeur) flash[:alert] = "L’instructeur « #{instructeur_email} » est déjà dans le groupe." else groupe_instructeur.add(instructeur) @@ -62,7 +64,8 @@ module Instructeurs SecureRandom.hex, administrateurs: [procedure.administrateurs.first] ) - user.invite! + + user.invite! if user.valid? user.instructeur end diff --git a/spec/controllers/instructeurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/instructeurs/groupe_instructeurs_controller_spec.rb index 77d09117a..64707f699 100644 --- a/spec/controllers/instructeurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/instructeurs/groupe_instructeurs_controller_spec.rb @@ -72,7 +72,7 @@ describe Instructeurs::GroupeInstructeursController, type: :controller do end describe '#add_instructeur' do - before do + subject do post :add_instructeur, params: { procedure_id: procedure.id, @@ -83,6 +83,7 @@ describe Instructeurs::GroupeInstructeursController, type: :controller do context 'of a new instructeur' do let(:new_instructeur_email) { 'new_instructeur@mail.com' } + before { subject } it { expect(gi_1_2.instructeurs.map(&:email)).to include(new_instructeur_email) } it { expect(flash.notice).to be_present } @@ -91,10 +92,18 @@ describe Instructeurs::GroupeInstructeursController, type: :controller do context 'of an instructeur already in the group' do let(:new_instructeur_email) { instructeur.email } + before { subject } it { expect(flash.alert).to be_present } it { expect(response).to redirect_to(instructeur_groupe_path(procedure, gi_1_2)) } end + + context 'invalid email' do + let(:new_instructeur_email) { 'invalid' } + + it { subject; expect(flash.alert).to include(new_instructeur_email) } + it { expect { subject }.not_to enqueue_email } + end end describe '#remove_instructeur' do