diff --git a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb index 50ff55463..6673b0607 100644 --- a/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb +++ b/spec/controllers/administrateurs/groupe_instructeurs_controller_spec.rb @@ -366,11 +366,17 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do before { gi_1_2.instructeurs << instructeur } - context 'of a news instructeurs' do - let(:new_instructeur_emails) { ['new_i1@mail.com', 'new_i2@mail.com'] } + 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@mail.com', 'new_i2@mail.com', instructeur_email_verified.email] } + before do allow(GroupeInstructeurMailer).to receive(:notify_added_instructeurs) .and_return(double(deliver_later: true)) + + allow(InstructeurMailer).to receive(:confirm_and_notify_added_instructeur) + .and_return(double(deliver_later: true)) do_request end it { expect(gi_1_2.instructeurs.pluck(:email)).to include(*new_instructeur_emails) } @@ -380,7 +386,21 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do it "calls GroupeInstructeurMailer with the right params" do expect(GroupeInstructeurMailer).to have_received(:notify_added_instructeurs).with( gi_1_2, - gi_1_2.instructeurs.last(2), + [instructeur_email_verified], + admin.email + ) + end + + it "calls InstructeurMailer with the right params" do + expect(InstructeurMailer).to have_received(:confirm_and_notify_added_instructeur).with( + User.find_by(email: 'new_i1@mail.com').instructeur, + gi_1_2, + admin.email + ) + + expect(InstructeurMailer).to have_received(:confirm_and_notify_added_instructeur).with( + User.find_by(email: 'new_i2@mail.com').instructeur, + gi_1_2, admin.email ) end diff --git a/spec/factories/user.rb b/spec/factories/user.rb index 4370d7ea8..597d54fdb 100644 --- a/spec/factories/user.rb +++ b/spec/factories/user.rb @@ -16,5 +16,9 @@ FactoryBot.define do trait :with_fci do france_connect_informations { [association(:france_connect_information)] } end + + trait :with_email_verified do + email_verified_at { Time.zone.now } + end end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 524390f39..15ff97b5f 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -224,13 +224,14 @@ describe User, type: :model do describe '.create_or_promote_to_gestionnaire' do let(:email) { 'inst1@gmail.com' } - let(:password) { 'un super password !' } + let(:password) { 'un super p1ssw0rd !' } subject { User.create_or_promote_to_gestionnaire(email, password) } - it 'verifies its email' do + it 'creates a gestionnaire with unverified email' do user = subject - expect(user.email_verified_at).not_to be_present + expect(user.email_verified_at).to be_nil + expect(user.reload.gestionnaire?).to be true end end diff --git a/spec/system/routing/rules_full_scenario_spec.rb b/spec/system/routing/rules_full_scenario_spec.rb index 90c0cdf49..38ec25dd0 100644 --- a/spec/system/routing/rules_full_scenario_spec.rb +++ b/spec/system/routing/rules_full_scenario_spec.rb @@ -293,8 +293,8 @@ describe 'The routing with rules', js: true do end def register_instructeur_and_log_in(email) - confirmation_email = emails_sent_to(email) - .find { |m| m.subject == 'Activez votre compte instructeur' } + confirmation_email = emails_sent_to(email).reverse + .find { |m| m.subject.starts_with?('Vous avez été ajouté(e) au groupe') } token_params = confirmation_email.body.match(/token=[^"]+/) visit "users/activate?#{token_params}"