feat(mail): use contextualized Current.application_name
This commit is contained in:
parent
8b9d4c87f7
commit
68ee4a3404
45 changed files with 248 additions and 183 deletions
|
@ -7,7 +7,7 @@ class APITokenMailer < ApplicationMailer
|
|||
def expiration(api_token)
|
||||
@api_token = api_token
|
||||
user = api_token.administrateur.user
|
||||
subject = "Votre jeton d'accès à la plateforme #{APPLICATION_NAME} expire le #{l(@api_token.expires_at, format: :long)}"
|
||||
subject = "Votre jeton d'accès à la plateforme #{Current.application_name} expire le #{l(@api_token.expires_at, format: :long)}"
|
||||
|
||||
mail(to: user.email, subject:)
|
||||
end
|
||||
|
|
|
@ -26,7 +26,8 @@ module MailerDefaultsConfigurableConcern
|
|||
|
||||
included do
|
||||
before_action -> { self.class.save_original_defaults }
|
||||
after_action -> { self.class.reset_original_defaults }
|
||||
before_action :set_currents_for_legacy
|
||||
after_action -> { self.class.reset_original_defaults }
|
||||
|
||||
def configure_defaults_for_user(user)
|
||||
return if !user.is_a?(User) # not for super-admins
|
||||
|
|
|
@ -32,7 +32,7 @@ class InstructeurMailer < ApplicationMailer
|
|||
def send_login_token(instructeur, login_token)
|
||||
@instructeur_id = instructeur.id
|
||||
@login_token = login_token
|
||||
subject = "Connexion sécurisée à #{APPLICATION_NAME}"
|
||||
subject = "Connexion sécurisée à #{Current.application_name}"
|
||||
|
||||
mail(to: instructeur.email, subject: subject)
|
||||
end
|
||||
|
|
|
@ -2,19 +2,19 @@ class PreactivateUsersMailer < ApplicationMailer
|
|||
layout 'mailers/layout'
|
||||
|
||||
def reinvite(model, model_name)
|
||||
subject = "Votre compte #{model_name} est activé sur #{APPLICATION_NAME}"
|
||||
subject = "Votre compte #{model_name} est activé sur #{Current.application_name}"
|
||||
signature_separator = "-- "
|
||||
body = <<~END_OF_MAIL
|
||||
Bonjour,
|
||||
|
||||
les activations de compte #{model_name} sur #{APPLICATION_NAME}
|
||||
les activations de compte #{model_name} sur #{Current.application_name}
|
||||
ont connu depuis deux semaines un fonctionnement erratique, et nous
|
||||
pensons que votre inscription sur #{APPLICATION_NAME} a pu s’en
|
||||
pensons que votre inscription sur #{Current.application_name} a pu s’en
|
||||
trouver affectée.
|
||||
|
||||
Nous avons maintenant rétabli un fonctionnement normal de l’activation
|
||||
des comptes. Vous pouvez désormais vous connecter sans encombres à votre
|
||||
compte #{model_name} sur #{APPLICATION_NAME}.
|
||||
compte #{model_name} sur #{Current.application_name}.
|
||||
Si toutefois des difficultés devaient persister, n’hésitez pas à nous
|
||||
en faire part.
|
||||
|
||||
|
@ -22,7 +22,7 @@ class PreactivateUsersMailer < ApplicationMailer
|
|||
|
||||
Cordialement
|
||||
#{signature_separator}
|
||||
L’équipe #{APPLICATION_NAME}
|
||||
L’équipe #{Current.application_name}
|
||||
END_OF_MAIL
|
||||
|
||||
mail(to: model.email,
|
||||
|
|
|
@ -25,7 +25,7 @@ class ResendAttestationMailer < ApplicationMailer
|
|||
|
||||
Cordialement,
|
||||
|
||||
L’équipe #{APPLICATION_NAME}
|
||||
L’équipe #{Current.application_name}
|
||||
HEREDOC
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Vous avez fait la demande d’un compte administrateur sur #{APPLICATION_NAME}.
|
||||
Vous avez fait la demande d’un compte administrateur sur #{Current.application_name}.
|
||||
Votre compte a été créé mais reste inactif, il arrivera à expiration le #{try_format_date(@expiration_date)}
|
||||
|
||||
%p
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
Le règlement général sur la protection des données (RGPD) responsabilise les organismes publics et privés qui traitent leurs données.
|
||||
|
||||
%p
|
||||
Dans le cadre du respect du RGPD, nous (la plateforme #{APPLICATION_NAME}) venons d'activer la suppression automatique des dossiers sur la démarche : "#{@procedure.libelle}".
|
||||
Dans le cadre du respect du RGPD, nous (la plateforme #{Current.application_name}) venons d'activer la suppression automatique des dossiers sur la démarche : "#{@procedure.libelle}".
|
||||
|
||||
%p
|
||||
Vous pouvez d’ores et déjà archiver ces données en accédant à
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
%p
|
||||
Vous êtes administrateur sur la plateforme
|
||||
= APPLICATION_NAME
|
||||
= Current.application_name
|
||||
et au moins un de vos services n'a pas son siret renseigné.
|
||||
|
||||
%p
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
%p
|
||||
Un nouvel administrateur a été créé sur #{APPLICATION_NAME}.
|
||||
Un nouvel administrateur a été créé sur #{Current.application_name}.
|
||||
|
||||
%ul
|
||||
%li
|
||||
|
|
|
@ -8,10 +8,10 @@
|
|||
|
||||
|
||||
%p
|
||||
Pour les usagers ou les administrations publiques (collectivités, etc.) qui souhaitent remplir une démarche ou déposer un dossier en ligne, l’entrée dans #{APPLICATION_NAME} se fait via un lien fourni par l’administration responsable, sur son propre site web. Ce lien vous permettra de créer un compte et de remplir le formulaire dans la foulée.
|
||||
Pour les usagers ou les administrations publiques (collectivités, etc.) qui souhaitent remplir une démarche ou déposer un dossier en ligne, l’entrée dans #{Current.application_name} se fait via un lien fourni par l’administration responsable, sur son propre site web. Ce lien vous permettra de créer un compte et de remplir le formulaire dans la foulée.
|
||||
|
||||
%p
|
||||
Si par contre vous rencontrez des problèmes lors de l'utilisation de #{APPLICATION_NAME} en tant qu'usager, merci d’expliciter le problème rencontré sur notre
|
||||
Si par contre vous rencontrez des problèmes lors de l'utilisation de #{Current.application_name} en tant qu'usager, merci d’expliciter le problème rencontré sur notre
|
||||
= link_to("formulaire de contact", contact_url)
|
||||
\.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
%p
|
||||
%strong Ce jeton expirera le #{l(@api_token.expires_at, format: :long)}.
|
||||
%br
|
||||
L'accès à l'API de #{APPLICATION_NAME} sera alors bloqué pour ce jeton.
|
||||
L'accès à l'API de #{Current.application_name} sera alors bloqué pour ce jeton.
|
||||
|
||||
%p
|
||||
Pour le renouveler, rendez-vous sur votre page de profil, dans la section « Jetons d’identification de l’API » :
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
- content_for(:footer) do
|
||||
Merci de ne pas répondre à cet email. Donnez votre avis
|
||||
= link_to("sur #{APPLICATION_NAME}", @url)
|
||||
= link_to("sur #{Current.application_name}", @url)
|
||||
ou
|
||||
= succeed '.' do
|
||||
= mail_to(@avis.claimant.email, "contactez la personne qui vous a invité")
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
You have entered your details to create an account on #{APPLICATION_NAME}. To confirm your email and finish creating your account, select the following link:
|
||||
You have entered your details to create an account on #{Current.application_name}. To confirm your email and finish creating your account, select the following link:
|
||||
- link = confirmation_url(@user, confirmation_token: @token, procedure_id: @procedure&.id)
|
||||
= link_to(link, link)
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
To confirm your account email change on #{APPLICATION_NAME}, select the following link:
|
||||
To confirm your account email change on #{Current.application_name}, select the following link:
|
||||
= link_to(confirmation_url(@user, confirmation_token: @token), confirmation_url(@user, confirmation_token: @token))
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Pour activer votre compte sur #{APPLICATION_NAME}, veuillez cliquer sur le lien suivant :
|
||||
Pour activer votre compte sur #{Current.application_name}, veuillez cliquer sur le lien suivant :
|
||||
- link = confirmation_url(@user, confirmation_token: @token, procedure_id: @procedure&.id, prefill_token: @prefill_token)
|
||||
= link_to(link, link)
|
||||
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
- unconfirmed_email = @resource.try(:unconfirmed_email?)
|
||||
- if unconfirmed_email.present?
|
||||
%p
|
||||
We recieved a request to change the email address associated with your account #{@email} on #{APPLICATION_NAME}. The new email address will be #{unconfirmed_email}.
|
||||
We recieved a request to change the email address associated with your account #{@email} on #{Current.application_name}. The new email address will be #{unconfirmed_email}.
|
||||
- else
|
||||
%p
|
||||
A change to the email address associated with your account #{@email} was made on #{APPLICATION_NAME}. You can now connect with the email address #{@resource.email}.
|
||||
A change to the email address associated with your account #{@email} was made on #{Current.application_name}. You can now connect with the email address #{@resource.email}.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
- if unconfirmed_email.present?
|
||||
%p
|
||||
Nous avons reçu une demande de changement d’adresse email pour votre
|
||||
compte #{@email} sur #{APPLICATION_NAME}.
|
||||
compte #{@email} sur #{Current.application_name}.
|
||||
Une fois la demande prise en compte, la nouvelle adresse email de
|
||||
votre compte sera #{unconfirmed_email}.
|
||||
- else
|
||||
%p
|
||||
Le changement d’adresse email de votre compte #{@email} sur
|
||||
#{APPLICATION_NAME} a bien été pris en compte.
|
||||
#{Current.application_name} a bien été pris en compte.
|
||||
Vous pouvez désormais vous connecter avec l’adresse #{@resource.email}.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
A request to change your password on #{APPLICATION_NAME} for the account #{@resource.email} was successfully processed.
|
||||
A request to change your password on #{Current.application_name} for the account #{@resource.email} was successfully processed.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
|
||||
%p
|
||||
La demande de changement de mot de passe pour votre compte #{@resource.email} sur
|
||||
#{APPLICATION_NAME} a bien été prise en compte.
|
||||
#{Current.application_name} a bien été prise en compte.
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Someone has requested to change your account password on #{APPLICATION_NAME}. To define a new password, select the following link:
|
||||
Someone has requested to change your account password on #{Current.application_name}. To define a new password, select the following link:
|
||||
|
||||
= round_button 'Change the password', edit_password_url(@resource, reset_password_token: @token), :primary
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Vous avez demandé à changer votre mot de passe sur #{APPLICATION_NAME}. Pour ceci, merci de cliquer sur le lien suivant :
|
||||
Vous avez demandé à changer votre mot de passe sur #{Current.application_name}. Pour ceci, merci de cliquer sur le lien suivant :
|
||||
|
||||
= round_button 'Changer mon mot de passe', edit_password_url(@resource, reset_password_token: @token), :primary
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
Someone made too many unsuccessful attempts to connect to your account #{@resource.email} on #{APPLICATION_NAME}.
|
||||
Someone made too many unsuccessful attempts to connect to your account #{@resource.email} on #{Current.application_name}.
|
||||
As a security measure, we temporarily locked access to your account.
|
||||
|
||||
%p
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
%p
|
||||
Quelqu’un a tenté de se connecter un grand nombre de fois sans succès à votre
|
||||
compte #{@resource.email} sur #{APPLICATION_NAME}. Par mesure de précaution,
|
||||
compte #{@resource.email} sur #{Current.application_name}. Par mesure de précaution,
|
||||
nous avons temporairement désactivé l’accès à votre compte.
|
||||
|
||||
%p
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: APPLICATION_NAME)
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: Current.application_name)
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: APPLICATION_NAME)
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: Current.application_name)
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: APPLICATION_NAME)
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: Current.application_name)
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
%p= t(:hello, scope: [:views, :shared, :greetings])
|
||||
|
||||
%p
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: APPLICATION_NAME)
|
||||
= t(".email_body", groupe_gestionnaire_name: @groupe_gestionnaire.name, email: @current_super_admin_email, application_name: Current.application_name)
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Veuillez cliquer sur le lien sécurisé suivant pour vous connecter à #{APPLICATION_NAME} :
|
||||
Veuillez cliquer sur le lien sécurisé suivant pour vous connecter à #{Current.application_name} :
|
||||
= link_to(sign_in_by_link_url(@instructeur_id, jeton: @login_token), sign_in_by_link_url(@instructeur_id, jeton: @login_token))
|
||||
|
||||
%p
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Vous avez du nouveau sur #{APPLICATION_NAME} depuis
|
||||
Vous avez du nouveau sur #{Current.application_name} depuis
|
||||
= Date.today.monday? ? "vendredi dernier" : "hier"
|
||||
|
||||
%ul
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Vous venez d’être nommé instructeur sur #{APPLICATION_NAME}.
|
||||
Vous venez d’être nommé instructeur sur #{Current.application_name}.
|
||||
= "Votre compte (#{@email}) vous donnera désormais aussi accès à l’espace instructeur."
|
||||
|
||||
= render partial: "layouts/mailers/signature"
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
= @invite.email_sender
|
||||
souhaite que vous participiez à l’élaboration d’un dossier pour la démarche
|
||||
%strong= @invite.dossier.procedure.libelle
|
||||
sur #{APPLICATION_NAME}.
|
||||
sur #{Current.application_name}.
|
||||
|
||||
- if @invite.message.present?
|
||||
%blockquote
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%p
|
||||
L’utilisateur
|
||||
= @invite.email_sender
|
||||
souhaite que vous participiez à l'élaboration d’un dossier sur #{APPLICATION_NAME}.
|
||||
souhaite que vous participiez à l'élaboration d’un dossier sur #{Current.application_name}.
|
||||
|
||||
- if @invite.message.present?
|
||||
%blockquote
|
||||
|
|
|
@ -4,7 +4,7 @@ Cordialement,
|
|||
= author_name
|
||||
%br
|
||||
%br
|
||||
Équipe #{APPLICATION_NAME}
|
||||
Équipe #{Current.application_name}
|
||||
%br
|
||||
Téléphone (standard) :
|
||||
= CONTACT_PHONE
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
%strong
|
||||
= t('.do_not_reply_html', application_name: APPLICATION_NAME, sender_email: @sender_email)
|
||||
= t('.do_not_reply_html', application_name: Current.application_name, sender_email: @sender_email)
|
||||
|
|
|
@ -6,4 +6,4 @@
|
|||
- else
|
||||
-# The WORD JOINER unicode entity (⁠) prevents email clients from auto-linking the signature
|
||||
= t('.team')
|
||||
#{APPLICATION_NAME.gsub(".","⁠.").html_safe}
|
||||
#{Current.application_name.gsub(".","⁠.").html_safe}
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
<tr>
|
||||
<td style="word-wrap:break-word;font-size:0px;padding:0;padding-top:0px;padding-bottom:0px;" align="left">
|
||||
<div class="" style="cursor:auto;color:#55575d;font-family:Helvetica, Arial, sans-serif;font-size:11px;text-align:left;">
|
||||
<img align="middle" alt="Logo <%= "#{APPLICATION_NAME}" %>" src="<%= image_url("#{MAILER_LOGO_SRC}") %>" style="max-width=600px; padding=30px 0; display=inline !important; vertical-align=bottom; border=0; height=auto; outline=none; text-decoration=none; -ms-interpolation-mode=bicubic;" />
|
||||
<img align="middle" alt="Logo <%= "#{Current.application_name}" %>" src="<%= image_url("#{MAILER_LOGO_SRC}") %>" style="max-width=600px; padding=30px 0; display=inline !important; vertical-align=bottom; border=0; height=auto; outline=none; text-decoration=none; -ms-interpolation-mode=bicubic;" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -168,7 +168,7 @@
|
|||
<tr>
|
||||
<td style="word-wrap:break-word;font-size:0px;padding:0px 20px 0px 20px;padding-top:0px;padding-bottom:0px;" align="center">
|
||||
<div class="" style="cursor:auto;color:#55575d;font-family:Helvetica, Arial, sans-serif;font-size:11px;line-height:22px;text-align:center;">
|
||||
<img align="middle" alt="Logo <%= "#{APPLICATION_NAME}" %>" src="<%= image_url("#{MAILER_FOOTER_LOGO_SRC}") %>" style="max-width=125px; padding=30px 0; display=inline !important; vertical-align=bottom; border=0; height=auto; outline=none; text-decoration=none; -ms-interpolation-mode=bicubic;" />
|
||||
<img align="middle" alt="Logo <%= "#{Current.application_name}" %>" src="<%= image_url("#{MAILER_FOOTER_LOGO_SRC}") %>" style="max-width=125px; padding=30px 0; display=inline !important; vertical-align=bottom; border=0; height=auto; outline=none; text-decoration=none; -ms-interpolation-mode=bicubic;" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
<tr>
|
||||
<td style="word-wrap:break-word;font-size:0px;padding:0px 20px 0px 20px;padding-top:0px;padding-bottom:0px;" align="center">
|
||||
<div class="" style="cursor:auto;color:#55575d;font-family:Helvetica, Arial, sans-serif;font-size:11px;line-height:22px;text-align:center;">
|
||||
<%= "#{APPLICATION_NAME}" %> est un service fourni par <%= t("links.provider.provided_by") %>
|
||||
<%= "#{Current.application_name}" %> est un service fourni par <%= t("links.provider.provided_by") %>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -26,4 +26,4 @@
|
|||
= t(:best_regards, scope: [:views, :shared, :greetings])
|
||||
%br
|
||||
= t('layouts.mailers.signature.team')
|
||||
#{APPLICATION_NAME.gsub(".","⁠.").html_safe}
|
||||
#{Current.application_name.gsub(".","⁠.").html_safe}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Vous venez d’être nommé gestionnaire du groupe gestionnaire #{@groupe_gestionnaire.name} sur #{APPLICATION_NAME}.
|
||||
Vous venez d’être nommé gestionnaire du groupe gestionnaire #{@groupe_gestionnaire.name} sur #{Current.application_name}.
|
||||
|
||||
%p
|
||||
Votre compte a été créé pour l'adresse email #{@user.email}. Pour l’activer, nous vous invitons à cliquer sur le lien suivant :
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Vous venez d’être nommé instructeur sur #{APPLICATION_NAME}.
|
||||
Vous venez d’être nommé instructeur sur #{Current.application_name}.
|
||||
|
||||
%p
|
||||
Votre compte a été créé pour l'adresse email
|
||||
|
@ -15,7 +15,7 @@
|
|||
= link_to(users_activate_url(token: @reset_password_token), users_activate_url(token: @reset_password_token))
|
||||
|
||||
%p
|
||||
Lors de vos prochaines connexions sur #{APPLICATION_NAME} cliquez sur le bouton « Se connecter » positionné sur le haut de page ou bien sur ce lien :
|
||||
Lors de vos prochaines connexions sur #{Current.application_name} cliquez sur le bouton « Se connecter » positionné sur le haut de page ou bien sur ce lien :
|
||||
= link_to new_user_session_url, new_user_session_url
|
||||
|
||||
- if AgentConnectService.enabled?
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Une demande de création de compte a été réalisée sur le site #{APPLICATION_NAME} pour l'email #{@user.email}.
|
||||
Une demande de création de compte a été réalisée sur le site #{Current.application_name} pour l'email #{@user.email}.
|
||||
|
||||
%p
|
||||
%strong Votre compte existe déjà.
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
Bonjour,
|
||||
|
||||
%p
|
||||
Cela fait plus de deux ans que vous ne vous êtes pas connecté à #{APPLICATION_NAME}.
|
||||
Cela fait plus de deux ans que vous ne vous êtes pas connecté à #{Current.application_name}.
|
||||
- if @user.dossiers.not_brouillon.count == 0
|
||||
Aussi vous n'avez plus de dossier sur la plateforme.
|
||||
|
||||
|
|
|
@ -17,19 +17,21 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.with(dossier:).notify_new_draft }
|
||||
|
||||
it { expect(subject.subject).to include("brouillon") }
|
||||
it { expect(subject.subject).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include(dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it { expect(subject.body).to include("Vous pouvez déposer votre dossier jusqu’au") }
|
||||
it { expect(subject.body).to include("heure de") }
|
||||
it 'includes the correct subject and body content' do
|
||||
expect(subject.subject).to include("brouillon")
|
||||
expect(subject.subject).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include(dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
expect(subject.body).to include("Vous pouvez déposer votre dossier jusqu’au")
|
||||
expect(subject.body).to include("heure de")
|
||||
end
|
||||
|
||||
it_behaves_like 'a dossier notification'
|
||||
|
||||
context "user prefers new domain" do
|
||||
context "when user prefers new domain" do
|
||||
let(:user) { create(:user, preferred_domain: :demarches_gouv_fr) }
|
||||
|
||||
it do
|
||||
it 'includes the correct body content and sender email' do
|
||||
expect(subject.body).to include(dossier_url(dossier, host: ENV.fetch('APP_HOST')))
|
||||
expect(header_value("From", subject)).to include("ne-pas-repondre@demarches.gouv.fr")
|
||||
end
|
||||
|
@ -43,10 +45,12 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
let(:commentaire) { create(:commentaire, dossier: dossier) }
|
||||
subject { described_class.with(commentaire: commentaire).notify_new_answer }
|
||||
|
||||
it { expect(subject.subject).to include("Nouveau message") }
|
||||
it { expect(subject.subject).to include(dossier.id.to_s) }
|
||||
it { expect(subject.body).to include(dossier.procedure.service.email) }
|
||||
it { expect(subject.body).not_to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it 'checks email subject and body for correct inclusions and exclusions' do
|
||||
expect(subject.subject).to include("Nouveau message")
|
||||
expect(subject.subject).to include(dossier.id.to_s)
|
||||
expect(subject.body).to include(dossier.procedure.service.email)
|
||||
expect(subject.body).not_to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
|
||||
it_behaves_like 'a dossier notification'
|
||||
|
||||
|
@ -62,9 +66,11 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.with(commentaire: commentaire).notify_new_answer }
|
||||
|
||||
it { expect(subject.subject).to include("Nouveau message") }
|
||||
it { expect(subject.subject).to include(dossier.id.to_s) }
|
||||
it { expect(subject.body).to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it 'checks email subject and body for correct inclusions' do
|
||||
expect(subject.subject).to include("Nouveau message")
|
||||
expect(subject.subject).to include(dossier.id.to_s)
|
||||
expect(subject.body).to include(messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
|
||||
it_behaves_like 'a dossier notification'
|
||||
end
|
||||
|
@ -90,10 +96,12 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_deletion_to_administration(deleted_dossier, to_email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Le dossier nº #{deleted_dossier.dossier_id} a été supprimé à la demande de l’usager") }
|
||||
it { expect(subject.body).to include("À la demande de l’usager") }
|
||||
it { expect(subject.body).to include(deleted_dossier.dossier_id) }
|
||||
it { expect(subject.body).to include(deleted_dossier.procedure.libelle) }
|
||||
it 'verifies subject and body content for deletion notification' do
|
||||
expect(subject.subject).to eq("Le dossier nº #{deleted_dossier.dossier_id} a été supprimé à la demande de l’usager")
|
||||
expect(subject.body).to include("À la demande de l’usager")
|
||||
expect(subject.body).to include(deleted_dossier.dossier_id)
|
||||
expect(subject.body).to include(deleted_dossier.procedure.libelle)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.notify_brouillon_near_deletion' do
|
||||
|
@ -101,8 +109,10 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_brouillon_near_deletion([dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.body).to include("n° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it 'checks email body for correct inclusions regarding brouillon nearing deletion' do
|
||||
expect(subject.body).to include("n° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
end
|
||||
end
|
||||
|
||||
describe '.notify_brouillon_deletion' do
|
||||
|
@ -110,8 +120,10 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_brouillon_deletion([dossier.hash_for_deletion_mail], dossier.user.email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Un dossier en brouillon a été supprimé automatiquement") }
|
||||
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
|
||||
it 'verifies subject and body content for brouillon deletion notification' do
|
||||
expect(subject.subject).to eq("Un dossier en brouillon a été supprimé automatiquement")
|
||||
expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})")
|
||||
end
|
||||
end
|
||||
|
||||
describe '.notify_automatic_deletion_to_user' do
|
||||
|
@ -122,11 +134,13 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_automatic_deletion_to_user([deleted_dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.to).to eq([dossier.user.email]) }
|
||||
it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement de votre compte") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("nous nous excusons de la gêne occasionnée") }
|
||||
it 'checks email subject, to, and body for correct inclusions and exclusions for en_construction status' do
|
||||
expect(subject.to).to eq([dossier.user.email])
|
||||
expect(subject.subject).to eq("Un dossier a été supprimé automatiquement de votre compte")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include("nous nous excusons de la gêne occasionnée")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'termine' do
|
||||
|
@ -134,11 +148,13 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_automatic_deletion_to_user([deleted_dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.to).to eq([dossier.user.email]) }
|
||||
it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement de votre compte") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).not_to include("nous nous excusons de la gène occasionnée") }
|
||||
it 'checks email subject, to, and body for correct inclusions and exclusions for termine status' do
|
||||
expect(subject.to).to eq([dossier.user.email])
|
||||
expect(subject.subject).to eq("Un dossier a été supprimé automatiquement de votre compte")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).not_to include("nous nous excusons de la gêne occasionnée")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -148,8 +164,10 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_automatic_deletion_to_administration([deleted_dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Un dossier a été supprimé automatiquement") }
|
||||
it { expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})") }
|
||||
it 'verifies subject and body content for automatic deletion notification' do
|
||||
expect(subject.subject).to eq("Un dossier a été supprimé automatiquement")
|
||||
expect(subject.body).to include("n° #{dossier.id} (#{dossier.procedure.libelle})")
|
||||
end
|
||||
end
|
||||
|
||||
describe '.notify_near_deletion_to_administration' do
|
||||
|
@ -158,11 +176,13 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_near_deletion_to_administration([dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Un dossier en construction va bientôt être supprimé") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it { expect(subject.body).to include("Vous avez <b>14 jours</b> pour commencer l’instruction du dossier.") }
|
||||
it 'checks email subject and body for correct inclusions for en_construction status' do
|
||||
expect(subject.subject).to eq("Un dossier en construction va bientôt être supprimé")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include("PDF")
|
||||
expect(subject.body).to include("Vous avez <b>14 jours</b> pour commencer l’instruction du dossier.")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'termine' do
|
||||
|
@ -170,9 +190,11 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_near_deletion_to_administration([dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it 'verifies subject and body content for near deletion notification of completed cases' do
|
||||
expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -182,12 +204,14 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_near_deletion_to_user([dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.to).to eq([dossier.user.email]) }
|
||||
it { expect(subject.subject).to eq("Un dossier en construction va bientôt être supprimé") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("Votre compte reste activé") }
|
||||
it { expect(subject.body).to include("Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez <b>prolonger sa durée de conservation</b> dans l’interface.") }
|
||||
it 'verifies email subject, to, and body for correct inclusions for en_construction status' do
|
||||
expect(subject.to).to eq([dossier.user.email])
|
||||
expect(subject.subject).to eq("Un dossier en construction va bientôt être supprimé")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include("Votre compte reste activé")
|
||||
expect(subject.body).to include("Si vous souhaitez conserver votre dossier plus longtemps, vous pouvez <b>prolonger sa durée de conservation</b> dans l’interface.")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'termine' do
|
||||
|
@ -195,12 +219,14 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_near_deletion_to_user([dossier], dossier.user.email) }
|
||||
|
||||
it { expect(subject.to).to eq([dossier.user.email]) }
|
||||
it { expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé") }
|
||||
it { expect(subject.body).to include("N° #{dossier.id} ") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("Votre compte reste activé") }
|
||||
it { expect(subject.body).to include("PDF") }
|
||||
it 'checks email subject, to, and body for correct inclusions for termine status' do
|
||||
expect(subject.to).to eq([dossier.user.email])
|
||||
expect(subject.subject).to eq("Un dossier dont le traitement est terminé va bientôt être supprimé")
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include("Votre compte reste activé")
|
||||
expect(subject.body).to include("PDF")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'multiple termines' do
|
||||
|
@ -208,10 +234,12 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_near_deletion_to_user(dossiers, dossiers[0].user.email) }
|
||||
|
||||
it { expect(subject.subject).to eq("Des dossiers dont le traitement est terminé vont bientôt être supprimés") }
|
||||
it { expect(subject.body).to include("N° #{dossiers[0].id} ") }
|
||||
it { expect(subject.body).to include("N° #{dossiers[1].id} ") }
|
||||
it { expect(subject.body).to include("N° #{dossiers[2].id} ") }
|
||||
it 'verifies email subject and body contain correct dossier numbers for multiple termine status' do
|
||||
expect(subject.subject).to eq("Des dossiers dont le traitement est terminé vont bientôt être supprimés")
|
||||
dossiers.each do |dossier|
|
||||
expect(subject.body).to include("N° #{dossier.id} ")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -221,10 +249,12 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
|
||||
subject { described_class.notify_groupe_instructeur_changed(instructeur, dossier) }
|
||||
|
||||
it { expect(subject.subject).to eq("Le dossier nº #{dossier.id} a changé de groupe d’instructeurs") }
|
||||
it { expect(subject.body).to include("n° #{dossier.id}") }
|
||||
it { expect(subject.body).to include(dossier.procedure.libelle) }
|
||||
it { expect(subject.body).to include("Suite à cette modification, vous ne suivez plus ce dossier.") }
|
||||
it 'verifies subject and body content for groupe instructeur change notification' do
|
||||
expect(subject.subject).to eq("Le dossier nº #{dossier.id} a changé de groupe d’instructeurs")
|
||||
expect(subject.body).to include("n° #{dossier.id}")
|
||||
expect(subject.body).to include(dossier.procedure.libelle)
|
||||
expect(subject.body).to include("Suite à cette modification, vous ne suivez plus ce dossier.")
|
||||
end
|
||||
end
|
||||
|
||||
describe '.notify_pending_correction' do
|
||||
|
@ -240,19 +270,23 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
}
|
||||
|
||||
context 'reason is incorrect' do
|
||||
it { expect(subject.subject).to eq("Vous devez corriger votre dossier nº #{dossier.id} « #{dossier.procedure.libelle} »") }
|
||||
it { expect(subject.body).to include("apporter des corrections") }
|
||||
it { expect(subject.body).not_to include("Silence") }
|
||||
it 'checks email subject and body for corrections without Silence Vaut Accord' do
|
||||
expect(subject.subject).to eq("Vous devez corriger votre dossier nº #{dossier.id} « #{dossier.procedure.libelle} »")
|
||||
expect(subject.body).to include("apporter des corrections")
|
||||
expect(subject.body).not_to include("Silence")
|
||||
end
|
||||
end
|
||||
|
||||
context 'sva with reason is incorrect' do
|
||||
let(:sva_svr_decision_on) { Date.tomorrow }
|
||||
let(:procedure) { create(:procedure, :sva) }
|
||||
|
||||
it { expect(subject.subject).to eq("Vous devez corriger votre dossier nº #{dossier.id} « #{dossier.procedure.libelle} »") }
|
||||
it { expect(subject.body).to include("apporter des corrections") }
|
||||
it { expect(subject.body).to include("Silence Vaut Accord") }
|
||||
it { expect(subject.body).to include("suspendu") }
|
||||
it 'includes Silence Vaut Accord and mentions suspension for incorrect reason' do
|
||||
expect(subject.subject).to eq("Vous devez corriger votre dossier nº #{dossier.id} « #{dossier.procedure.libelle} »")
|
||||
expect(subject.body).to include("apporter des corrections")
|
||||
expect(subject.body).to include("Silence Vaut Accord")
|
||||
expect(subject.body).to include("suspendu")
|
||||
end
|
||||
end
|
||||
|
||||
context 'sva with reason is incomplete' do
|
||||
|
@ -260,9 +294,11 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
let(:reason) { :incomplete }
|
||||
let(:procedure) { create(:procedure, :sva) }
|
||||
|
||||
it { expect(subject.body).to include("compléter") }
|
||||
it { expect(subject.body).to include("Silence Vaut Accord") }
|
||||
it { expect(subject.body).to include("réinitialisé") }
|
||||
it 'mentions the need to complete the dossier and includes Silence Vaut Accord with reset message' do
|
||||
expect(subject.body).to include("compléter")
|
||||
expect(subject.body).to include("Silence Vaut Accord")
|
||||
expect(subject.body).to include("réinitialisé")
|
||||
end
|
||||
end
|
||||
|
||||
context 'svr with reason is incomplete' do
|
||||
|
@ -270,9 +306,11 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
let(:reason) { :incomplete }
|
||||
let(:procedure) { create(:procedure, :svr) }
|
||||
|
||||
it { expect(subject.body).to include("compléter") }
|
||||
it { expect(subject.body).to include("Silence Vaut Rejet") }
|
||||
it { expect(subject.body).to include("réinitialisé") }
|
||||
it 'mentions the need to complete the dossier and includes Silence Vaut Rejet with reset message' do
|
||||
expect(subject.body).to include("compléter")
|
||||
expect(subject.body).to include("Silence Vaut Rejet")
|
||||
expect(subject.body).to include("réinitialisé")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -285,20 +323,26 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
subject { described_class.with(dossier_transfer: dossier_transfer).notify_transfer }
|
||||
|
||||
context 'when it is a transfer of one dossier' do
|
||||
it { expect(subject.subject).to include("Vous avez une demande de transfert en attente.") }
|
||||
it { expect(subject.body).to include("#{user.email} vous adresse une demande de transfert pour le dossier n° #{dossier.id} sur la démarche") }
|
||||
it { expect(subject.body).to include(procedure.libelle.to_s) }
|
||||
it 'includes relevant details about the single dossier transfer request' do
|
||||
expect(subject.subject).to include("Vous avez une demande de transfert en attente.")
|
||||
expect(subject.body).to include("#{user.email} vous adresse une demande de transfert pour le dossier n° #{dossier.id} sur la démarche")
|
||||
expect(subject.body).to include(procedure.libelle.to_s)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when recipient has preferred domain' do
|
||||
let(:dossier_transfer) { create(:dossier_transfer, email: create(:user, preferred_domain: :demarches_gouv_fr).email) }
|
||||
it { expect(subject.body).to include(dossiers_url(statut: "dossiers-transferes", host: ENV.fetch("APP_HOST"))) }
|
||||
it 'includes a link with the preferred domain in the email body' do
|
||||
expect(subject.body).to include(dossiers_url(statut: "dossiers-transferes", host: ENV.fetch("APP_HOST")))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when it is a transfer of multiple dossiers' do
|
||||
let!(:dossier2) { create(:dossier, user: user, transfer: dossier_transfer, procedure: procedure) }
|
||||
it { expect(subject.subject).to include("Vous avez une demande de transfert en attente.") }
|
||||
it { expect(subject.body).to include("#{user.email} vous adresse une demande de transfert pour 2 dossiers.") }
|
||||
it 'includes a summary of multiple dossiers transfer request' do
|
||||
expect(subject.subject).to include("Vous avez une demande de transfert en attente.")
|
||||
expect(subject.body).to include("#{user.email} vous adresse une demande de transfert pour 2 dossiers.")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when it is a transfer of one dossier from super admin' do
|
||||
|
@ -306,8 +350,10 @@ RSpec.describe DossierMailer, type: :mailer do
|
|||
dossier_transfer.update!(from_support: true)
|
||||
end
|
||||
|
||||
it { expect(subject.subject).to include("Vous avez une demande de transfert en attente.") }
|
||||
it { expect(subject.body).to include("Le support technique vous adresse une demande de transfert") }
|
||||
it 'includes details indicating the transfer request is from support' do
|
||||
expect(subject.subject).to include("Vous avez une demande de transfert en attente.")
|
||||
expect(subject.body).to include("Le support technique vous adresse une demande de transfert")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when dossiers have been dissociated from transfer' do
|
||||
|
|
|
@ -8,10 +8,12 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject { described_class.send_notification_for_tiers(dossier_for_tiers) }
|
||||
|
||||
it { expect(subject.subject).to include("Votre dossier rempli par le mandataire #{dossier_for_tiers.mandataire_first_name} #{dossier_for_tiers.mandataire_last_name} a été mis à jour") }
|
||||
it { expect(subject.to).to eq([dossier_for_tiers.individual.email]) }
|
||||
it { expect(subject.body).to include("a été déposé le") }
|
||||
it { expect(subject.body).to include("Pour en savoir plus, veuillez vous rapprocher de\r\n<a href=\"mailto:#{dossier_for_tiers.user.email}\">#{dossier_for_tiers.user.email}</a>.") }
|
||||
it 'verifies email subject, recipient, and body content for updated dossier by mandataire' do
|
||||
expect(subject.subject).to include("Votre dossier rempli par le mandataire #{dossier_for_tiers.mandataire_first_name} #{dossier_for_tiers.mandataire_last_name} a été mis à jour")
|
||||
expect(subject.to).to eq([dossier_for_tiers.individual.email])
|
||||
expect(subject.body).to include("a été déposé le")
|
||||
expect(subject.body).to include("Pour en savoir plus, veuillez vous rapprocher de\r\n<a href=\"mailto:#{dossier_for_tiers.user.email}\">#{dossier_for_tiers.user.email}</a>.")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'send_notification_for_tiers for repasser_en_instruction' do
|
||||
|
@ -19,10 +21,12 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject { described_class.send_notification_for_tiers(dossier_for_tiers, repasser_en_instruction: true) }
|
||||
|
||||
it { expect(subject.subject).to include("Votre dossier rempli par le mandataire #{dossier_for_tiers.mandataire_first_name} #{dossier_for_tiers.mandataire_last_name} a été mis à jour") }
|
||||
it { expect(subject.to).to eq([dossier_for_tiers.individual.email]) }
|
||||
it { expect(subject.body).to include("va être réexaminé, la précédente décision sur ce dossier est caduque.") }
|
||||
it { expect(subject.body).to include("Pour en savoir plus, veuillez vous rapprocher de\r\n<a href=\"mailto:#{dossier_for_tiers.user.email}\">#{dossier_for_tiers.user.email}</a>.") }
|
||||
it 'verifies email subject, recipient, and body content for dossier re-examination notification' do
|
||||
expect(subject.subject).to include("Votre dossier rempli par le mandataire #{dossier_for_tiers.mandataire_first_name} #{dossier_for_tiers.mandataire_last_name} a été mis à jour")
|
||||
expect(subject.to).to eq([dossier_for_tiers.individual.email])
|
||||
expect(subject.body).to include("va être réexaminé, la précédente décision sur ce dossier est caduque.")
|
||||
expect(subject.body).to include("Pour en savoir plus, veuillez vous rapprocher de\r\n<a href=\"mailto:#{dossier_for_tiers.user.email}\">#{dossier_for_tiers.user.email}</a>.")
|
||||
end
|
||||
end
|
||||
|
||||
describe 'send_en_construction_notification' do
|
||||
|
@ -66,13 +70,13 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject(:mail) { described_class.send_en_instruction_notification(dossier) }
|
||||
|
||||
it 'renders the template' do
|
||||
it 'renders the template with subject and body' do
|
||||
expect(mail.subject).to eq('Email subject')
|
||||
expect(mail.body).to include('Your dossier was processed')
|
||||
expect(mail.body).to have_link('messagerie')
|
||||
end
|
||||
|
||||
it 'renders the actions' do
|
||||
it 'renders the actions with links to dossier and messagerie' do
|
||||
expect(mail.body).to have_link('Consulter mon dossier', href: dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
expect(mail.body).to have_link('J’ai une question', href: messagerie_dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
|
@ -80,19 +84,16 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
context 'when the template body contains tags' do
|
||||
let(:email_template) { create(:received_mail, subject: 'Email subject', body: 'Hello --nom--, your dossier --lien dossier-- was processed.', procedure:) }
|
||||
|
||||
it 'replaces value tags with the proper value' do
|
||||
expect(mail.body).to have_content(dossier.individual.nom)
|
||||
end
|
||||
|
||||
it 'replaces link tags with a clickable link' do
|
||||
expect(mail.body).to have_link(dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
it 'replaces value tags with the proper value and renders links correctly' do
|
||||
expect(mail.body).to include(dossier.individual.nom)
|
||||
expect(mail.body).to have_link(href: dossier_url(dossier, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
|
||||
context "when user has preferred domain" do
|
||||
let(:user) { create(:user, preferred_domain: :demarches_gouv_fr) }
|
||||
|
||||
it do
|
||||
expect(mail.body).to have_link(dossier_url(dossier, host: ENV.fetch("APP_HOST")))
|
||||
it 'adjusts links and sender email for user preferred domain' do
|
||||
expect(mail.body).to have_link(href: dossier_url(dossier, host: ENV.fetch("APP_HOST")))
|
||||
expect(header_value("From", mail)).to include("@demarches.gouv.fr")
|
||||
end
|
||||
end
|
||||
|
@ -101,11 +102,8 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
context 'when the template body contains HTML' do
|
||||
let(:email_template) { create(:received_mail, body: 'Your <b>dossier</b> was processed. <iframe src="#">Foo</iframe>', procedure:) }
|
||||
|
||||
it 'allows basic formatting tags' do
|
||||
it 'allows basic formatting tags but sanitizes sensitive content' do
|
||||
expect(mail.body).to include('<b>dossier</b>')
|
||||
end
|
||||
|
||||
it 'sanitizes sensitive content' do
|
||||
expect(mail.body).not_to include('iframe')
|
||||
end
|
||||
end
|
||||
|
@ -126,15 +124,17 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject(:mail) { described_class.send_accepte_notification(dossier) }
|
||||
|
||||
context "subject is too long" do
|
||||
context "when the subject is too long" do
|
||||
let(:subject) { 'Un long libellé --libellé démarche--' }
|
||||
it { expect(mail.subject.length).to be <= 100 }
|
||||
end
|
||||
|
||||
context "subject should fallback to default" do
|
||||
context "when the subject should fallback to default" do
|
||||
let(:subject) { "" }
|
||||
it { expect(mail.subject).to match(/^Votre dossier .+ a été accepté \(My super long title/) }
|
||||
it { expect(mail.subject.length).to be <= 100 }
|
||||
it 'provides a default subject within the length limit including procedure title beginning' do
|
||||
expect(mail.subject).to match(/^Votre dossier .+ a été accepté \(My super long title/)
|
||||
expect(mail.subject.length).to be <= 100
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -149,9 +149,11 @@ RSpec.describe NotificationMailer, type: :mailer do
|
|||
|
||||
subject(:mail) { described_class.send_en_instruction_notification(dossier) }
|
||||
|
||||
context "subject has a special character should not be escaped" do
|
||||
context "when the subject has a special character that should not be escaped" do
|
||||
let(:subject) { '--libellé démarche--' }
|
||||
it { expect(mail.subject).to eq("Mon titre avec l'apostrophe") }
|
||||
it 'includes the apostrophe without escaping it' do
|
||||
expect(mail.subject).to eq("Mon titre avec l'apostrophe")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,9 +4,11 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
describe '.new_account_warning' do
|
||||
subject { described_class.new_account_warning(user) }
|
||||
|
||||
it { expect(subject.to).to eq([user.email]) }
|
||||
it { expect(subject.body).to include(user.email) }
|
||||
it { expect(subject.body).to have_link('J’ai oublié mon mot de passe') }
|
||||
it 'sends email to the correct user with expected body content and link' do
|
||||
expect(subject.to).to eq([user.email])
|
||||
expect(subject.body).to include(user.email)
|
||||
expect(subject.body).to have_link('J’ai oublié mon mot de passe')
|
||||
end
|
||||
|
||||
context 'when a procedure is provided' do
|
||||
let(:procedure) { build(:procedure) }
|
||||
|
@ -47,8 +49,10 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
|
||||
subject { described_class.ask_for_merge(user, requested_email) }
|
||||
|
||||
it { expect(subject.to).to eq([requested_email]) }
|
||||
it { expect(subject.body).to include(requested_email) }
|
||||
it 'correctly addresses the email and includes the requested email in the body' do
|
||||
expect(subject.to).to eq([requested_email])
|
||||
expect(subject.body).to include(requested_email)
|
||||
end
|
||||
|
||||
context 'without SafeMailer configured' do
|
||||
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
|
||||
|
@ -68,13 +72,15 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
end
|
||||
|
||||
describe '.france_connect_merge_confirmation' do
|
||||
let(:email) { 'new.exemple.fr' }
|
||||
let(:email) { 'new@exemple.fr' }
|
||||
let(:code) { '123456' }
|
||||
|
||||
subject { described_class.france_connect_merge_confirmation(email, code, 15.minutes.from_now) }
|
||||
|
||||
it { expect(subject.to).to eq([email]) }
|
||||
it { expect(subject.body).to include(france_connect_particulier_mail_merge_with_existing_account_url(email_merge_token: code))) }
|
||||
it 'sends to correct email with merge link' do
|
||||
expect(subject.to).to eq([email])
|
||||
expect(subject.body).to include(france_connect_particulier_mail_merge_with_existing_account_url(email_merge_token: code))
|
||||
end
|
||||
|
||||
context 'without SafeMailer configured' do
|
||||
it { expect(subject[BalancerDeliveryMethod::FORCE_DELIVERY_METHOD_HEADER]&.value).to eq(nil) }
|
||||
|
@ -100,16 +106,20 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
|
||||
context 'instructeur' do
|
||||
let(:role) { create(:instructeur) }
|
||||
it { expect(subject.to).to eq([role.user.email]) }
|
||||
it { expect(subject.body).to have_link('Consulter mes archives', href: instructeur_archives_url(procedure, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it { expect(subject.body).to have_link("#{procedure.id} − #{procedure.libelle}", href: instructeur_procedure_url(procedure, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it 'sends email with correct links to instructeur' do
|
||||
expect(subject.to).to eq([role.user.email])
|
||||
expect(subject.body).to have_link('Consulter mes archives', href: instructeur_archives_url(procedure, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
expect(subject.body).to have_link("#{procedure.id} − #{procedure.libelle}", href: instructeur_procedure_url(procedure, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
end
|
||||
|
||||
context 'instructeur' do
|
||||
context 'administrateur' do
|
||||
let(:role) { create(:administrateur) }
|
||||
it { expect(subject.to).to eq([role.user.email]) }
|
||||
it { expect(subject.body).to have_link('Consulter mes archives', href: admin_procedure_archives_url(procedure, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it { expect(subject.body).to have_link("#{procedure.id} − #{procedure.libelle}", href: admin_procedure_url(procedure, host: ENV.fetch("APP_HOST_LEGACY"))) }
|
||||
it 'sends email with correct links to administrateur' do
|
||||
expect(subject.to).to eq([role.user.email])
|
||||
expect(subject.body).to have_link('Consulter mes archives', href: admin_procedure_archives_url(procedure, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
expect(subject.body).to have_link("#{procedure.id} − #{procedure.libelle}", href: admin_procedure_url(procedure, host: ENV.fetch("APP_HOST_LEGACY")))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when perform_later is called' do
|
||||
|
@ -125,8 +135,10 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
describe '.notify_inactive_close_to_deletion' do
|
||||
subject { described_class.notify_inactive_close_to_deletion(user) }
|
||||
|
||||
it { expect(subject.to).to eq([user.email]) }
|
||||
it { expect(subject.body).to include("Cela fait plus de deux ans que vous ne vous êtes pas connecté à #{APPLICATION_NAME}.") }
|
||||
it 'alerts user of inactivity with correct recipient and message' do
|
||||
expect(subject.to).to eq([user.email])
|
||||
expect(subject.body).to include("Cela fait plus de deux ans que vous ne vous êtes pas connecté à #{APPLICATION_NAME}.")
|
||||
end
|
||||
|
||||
context 'when perform_later is called' do
|
||||
let(:custom_queue) { 'low_priority' }
|
||||
|
@ -142,9 +154,11 @@ RSpec.describe UserMailer, type: :mailer do
|
|||
let(:content) { "Bonjour,\r\nsaut de ligne" }
|
||||
subject { described_class.notify_after_closing(user, content, procedure) }
|
||||
|
||||
it { expect(subject.to).to eq([user.email]) }
|
||||
it { expect(subject.body).to include("Clôture d'une démarche sur Démarches simplifiées") }
|
||||
it { expect(subject.body).to include("Bonjour,\r\n<br />saut de ligne") }
|
||||
it 'notifies user about procedure closing with detailed message' do
|
||||
expect(subject.to).to eq([user.email])
|
||||
expect(subject.body).to include("Clôture d'une démarche sur Démarches simplifiées")
|
||||
expect(subject.body).to include("Bonjour,\r\n<br />saut de ligne")
|
||||
end
|
||||
|
||||
context 'when perform_later is called' do
|
||||
let(:custom_queue) { 'low_priority' }
|
||||
|
|
|
@ -4,6 +4,8 @@ describe 'instructeur_mailer/send_notifications', type: :view do
|
|||
before do
|
||||
assign(:data, data)
|
||||
|
||||
allow(Current).to receive(:application_name).and_return(APPLICATION_NAME)
|
||||
|
||||
render
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue