From 9db7a208d43d67a0918f4d2494eaf921d4637dd4 Mon Sep 17 00:00:00 2001 From: Marianne Bost Date: Tue, 7 May 2024 15:22:49 +0200 Subject: [PATCH] refactor(api): use mailer config for sendCertificationCenterInvitationEmail --- api/lib/domain/services/mail-service.js | 74 +++++-------------- .../unit/domain/services/mail-service_test.js | 6 +- 2 files changed, 23 insertions(+), 57 deletions(-) diff --git a/api/lib/domain/services/mail-service.js b/api/lib/domain/services/mail-service.js index 93f6bfc0d63..7dc524c5a9b 100644 --- a/api/lib/domain/services/mail-service.js +++ b/api/lib/domain/services/mail-service.js @@ -21,6 +21,7 @@ const PIX_HOME_URL_FRENCH_FRANCE = `${config.domain.pix + config.domain.tldFr}`; const PIX_APP_URL_FRENCH_FRANCE = `${config.domain.pixApp + config.domain.tldFr}`; const PIX_APP_CONNECTION_URL_FRENCH_FRANCE = `${PIX_APP_URL_FRENCH_FRANCE}/connexion`; const PIX_ORGA_HOME_URL_FRENCH_FRANCE = `${config.domain.pixOrga + config.domain.tldFr}`; +const PIX_CERTIF_HOME_URL_FRENCH_FRANCE = `${config.domain.pixCertif + config.domain.tldFr}`; const HELPDESK_FRENCH_FRANCE = 'https://support.pix.fr'; // INTERNATIONAL @@ -31,6 +32,7 @@ const PIX_HOME_URL_INTERNATIONAL = { nl: `${config.domain.pix + config.domain.tldOrg}/nl-be/`, }; const PIX_ORGA_HOME_URL_INTERNATIONAL = `${config.domain.pixOrga + config.domain.tldOrg}`; +const PIX_CERTIF_HOME_URL_INTERNATIONAL = `${config.domain.pixCertif + config.domain.tldOrg}`; const PIX_APP_URL_INTERNATIONAL = `${config.domain.pixApp + config.domain.tldOrg}`; const PIX_APP_CONNECTION_URL_INTERNATIONAL = { en: `${PIX_APP_URL_INTERNATIONAL}/connexion/?lang=en`, @@ -60,6 +62,7 @@ function _getMailerConfig(locale) { homeName: PIX_HOME_NAME_INTERNATIONAL, homeUrl: PIX_HOME_URL_INTERNATIONAL[locale] ?? PIX_HOME_URL_INTERNATIONAL.en, pixOrgaHomeUrl: PIX_ORGA_HOME_URL_INTERNATIONAL, + pixCertifHomeUrl: PIX_CERTIF_HOME_URL_INTERNATIONAL, pixAppConnectionUrl: PIX_APP_CONNECTION_URL_INTERNATIONAL[locale] ?? PIX_APP_CONNECTION_URL_INTERNATIONAL.en, helpdeskUrl: PIX_HELPDESK_URL_INTERNATIONAL[locale] ?? PIX_HELPDESK_URL_INTERNATIONAL.en, displayNationalLogo: false, @@ -69,10 +72,11 @@ function _getMailerConfig(locale) { return { homeName: PIX_HOME_NAME_FRENCH_FRANCE, homeUrl: PIX_HOME_URL_FRENCH_FRANCE, + pixOrgaHomeUrl: PIX_ORGA_HOME_URL_FRENCH_FRANCE, + pixCertifHomeUrl: PIX_CERTIF_HOME_URL_FRENCH_FRANCE, pixAppConnectionUrl: PIX_APP_CONNECTION_URL_FRENCH_FRANCE, helpdeskUrl: HELPDESK_FRENCH_FRANCE, displayNationalLogo: true, - pixOrgaHomeUrl: PIX_ORGA_HOME_URL_FRENCH_FRANCE, translation: translations.fr, }; } @@ -251,68 +255,30 @@ function sendCertificationCenterInvitationEmail({ code, locale, }) { - let templateParams, fromName, subject; - const frenchFranceTemplateParams = { - certificationCenterName, - pixHomeName: PIX_HOME_NAME_FRENCH_FRANCE, - pixHomeUrl: PIX_HOME_URL_FRENCH_FRANCE, - pixCertifHomeUrl: `${config.domain.pixCertif + config.domain.tldFr}`, - redirectionUrl: `${ - config.domain.pixCertif + config.domain.tldFr - }/rejoindre?invitationId=${certificationCenterInvitationId}&code=${code}`, - supportUrl: HELPDESK_FRENCH_FRANCE, - ...frTranslations['certification-center-invitation-email'].params, - }; - const frenchSpokenTemplateParams = { - certificationCenterName, - pixHomeName: PIX_HOME_NAME_INTERNATIONAL, - pixHomeUrl: `${config.domain.pix + config.domain.tldOrg}`, - pixCertifHomeUrl: `${config.domain.pixCertif + config.domain.tldOrg}`, - redirectionUrl: `${ - config.domain.pixCertif + config.domain.tldOrg - }/rejoindre?invitationId=${certificationCenterInvitationId}&code=${code}`, - supportUrl: PIX_HELPDESK_URL_INTERNATIONAL.fr, - ...frTranslations['certification-center-invitation-email'].params, - }; - const englishSpokenTemplateParams = { + locale = locale ?? FRENCH_FRANCE; + const mailerConfig = _getMailerConfig(locale); + + const subject = mailerConfig.translation['certification-center-invitation-email'].subject; + const fromName = mailerConfig.translation['email-sender-name']['pix-certif']; + const templateVariables = { certificationCenterName, - pixHomeName: PIX_HOME_NAME_INTERNATIONAL, - pixHomeUrl: PIX_HOME_URL_INTERNATIONAL.en, - pixCertifHomeUrl: `${config.domain.pixCertif + config.domain.tldOrg}?lang=en`, - redirectionUrl: `${ - config.domain.pixCertif + config.domain.tldOrg - }/rejoindre?invitationId=${certificationCenterInvitationId}&code=${code}&lang=en`, - supportUrl: PIX_HELPDESK_URL_INTERNATIONAL.en, - ...enTranslations['certification-center-invitation-email'].params, + pixHomeName: mailerConfig.homeName, + pixHomeUrl: mailerConfig.homeUrl, + pixCertifHomeUrl: mailerConfig.pixCertifHomeUrl + (locale === FRENCH_FRANCE ? '' : `?lang=${locale}`), + redirectionUrl: + `${mailerConfig.pixCertifHomeUrl}/rejoindre?invitationId=${certificationCenterInvitationId}&code=${code}` + + (locale === FRENCH_FRANCE ? '' : `&lang=${locale}`), + supportUrl: mailerConfig.helpdeskUrl, + ...mailerConfig.translation['certification-center-invitation-email'].params, }; - switch (locale) { - case FRENCH_SPOKEN: - templateParams = frenchSpokenTemplateParams; - subject = frTranslations['certification-center-invitation-email'].subject; - fromName = PIX_CERTIF_NAME_FR; - break; - - case ENGLISH_SPOKEN: - templateParams = englishSpokenTemplateParams; - fromName = PIX_CERTIF_NAME_EN; - subject = enTranslations['certification-center-invitation-email'].subject; - break; - - default: - templateParams = frenchFranceTemplateParams; - subject = frTranslations['certification-center-invitation-email'].subject; - fromName = PIX_CERTIF_NAME_FR; - break; - } - return mailer.sendEmail({ subject, from: EMAIL_ADDRESS_NO_RESPONSE, fromName, to: email, template: mailer.certificationCenterInvitationTemplateId, - variables: templateParams, + variables: templateVariables, }); } diff --git a/api/tests/unit/domain/services/mail-service_test.js b/api/tests/unit/domain/services/mail-service_test.js index 7c04dd06eb7..eaced2b0d66 100644 --- a/api/tests/unit/domain/services/mail-service_test.js +++ b/api/tests/unit/domain/services/mail-service_test.js @@ -689,9 +689,9 @@ describe('Unit | Service | MailService', function () { expect(sendEmailParameters.variables).to.include({ certificationCenterName: 'Centre Pixi', pixHomeName: 'pix.org', - pixHomeUrl: 'https://pix.org', - pixCertifHomeUrl: 'https://certif.pix.org', - redirectionUrl: `https://certif.pix.org/rejoindre?invitationId=7&code=AAABBBCCC7`, + pixHomeUrl: 'https://pix.org/fr/', + pixCertifHomeUrl: 'https://certif.pix.org?lang=fr', + redirectionUrl: `https://certif.pix.org/rejoindre?invitationId=7&code=AAABBBCCC7&lang=fr`, supportUrl: 'https://support.pix.org', ...mainTranslationsMapping.fr['certification-center-invitation-email'].params, });