From 790177c758d448491f1f8e3c9be2b58f9e9ffb58 Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Tue, 10 Sep 2024 17:41:55 +0200 Subject: [PATCH] [#10751] Only send the first invitation mail to the instructeur if email is not verified (from admin controller) --- .../administrateurs/groupe_instructeurs_controller.rb | 6 ++++-- .../groupe_instructeurs_controller_spec.rb | 10 +++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/administrateurs/groupe_instructeurs_controller.rb b/app/controllers/administrateurs/groupe_instructeurs_controller.rb index 8bc9fd900..630f5fb1a 100644 --- a/app/controllers/administrateurs/groupe_instructeurs_controller.rb +++ b/app/controllers/administrateurs/groupe_instructeurs_controller.rb @@ -252,9 +252,11 @@ module Administrateurs "Les instructeurs ont bien été affectés à la démarche" end - known_instructeurs, new_instructeurs = instructeurs.partition { |instructeur| instructeur.user.email_verified_at } + known_instructeurs, not_verified_instructeurs = instructeurs.partition { |instructeur| instructeur.user.email_verified_at } - new_instructeurs.each { InstructeurMailer.confirm_and_notify_added_instructeur(_1, groupe_instructeur, current_administrateur.email).deliver_later } + not_verified_instructeurs.filter(&:previously_new_record?).each do + InstructeurMailer.confirm_and_notify_added_instructeur(_1, groupe_instructeur, current_administrateur.email).deliver_later + end if known_instructeurs.present? GroupeInstructeurMailer diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index 1269856da..b69a93f2b 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -387,7 +387,8 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do context 'of news instructeurs' do let!(:user_email_verified) { create(:user, :with_email_verified) } let!(:instructeur_email_verified) { create(:instructeur, user: user_email_verified) } - let(:new_instructeur_emails) { ['new_i1@gmail.com', 'new_i2@gmail.com', instructeur_email_verified.email] } + let!(:instructeur_email_not_verified) { create(:instructeur, user: create(:user)) } + let(:new_instructeur_emails) { ['new_i1@gmail.com', 'new_i2@gmail.com', instructeur_email_verified.email, instructeur_email_not_verified.email] } before do allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs) @@ -397,6 +398,7 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do .and_return(double(deliver_later: true)) do_request end + it 'validates changes and responses' do expect(gi_1_2.instructeurs.pluck(:email)).to include(*new_instructeur_emails) expect(flash.notice).to be_present @@ -421,6 +423,12 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do gi_1_2, admin.email ) + + expect(InstructeurMailer).not_to have_received(:confirm_and_notify_added_instructeur).with( + instructeur_email_not_verified, + gi_1_2, + admin.email + ) end end