diff --git a/app/models/concerns/comptes/envoie_emails.rb b/app/models/concerns/comptes/envoie_emails.rb index 3be141a26..1bf880310 100644 --- a/app/models/concerns/comptes/envoie_emails.rb +++ b/app/models/concerns/comptes/envoie_emails.rb @@ -11,7 +11,12 @@ module EnvoieEmails private def after_commit - return if email_bienvenue_envoye? || email_non_confirme? || structure.blank? || superadmin? + if email_non_confirme? + update(email_bienvenue_envoye: false) if email_bienvenue_envoye? + return + end + + return if email_bienvenue_envoye? || structure.blank? || superadmin? envoie_bienvenue(self) alerte_admins(self) if validation_en_attente? diff --git a/spec/integrations/compte_spec.rb b/spec/integrations/compte_spec.rb index 7ba05c72f..8bb05c299 100644 --- a/spec/integrations/compte_spec.rb +++ b/spec/integrations/compte_spec.rb @@ -18,6 +18,14 @@ .to have_enqueued_mail(CompteMailer, :nouveau_compte).exactly(1) end + it "Réenvoie les emails d'accueil quand l'utilisateur change d'email" do + compte = create :compte_admin, structure: structure, confirmed_at: Time.zone.now + compte.update(email: 'nouvel_email@ut7.fr') + expect(compte.reload.email_non_confirme?).to be(true) + expect { compte.update(confirmed_at: Time.zone.now, unconfirmed_email: nil) } + .to have_enqueued_mail(CompteMailer, :nouveau_compte).exactly(1) + end + describe "ne programme pas d'email" do it 'Quand les mails ont déjà été envoyé' do compte = create :compte_admin, structure: structure, confirmed_at: Time.zone.now