Просмотр исходного кода

Merge pull request #3215 from overleaf/jel-new-cta-email-registered

Convert registered email to new email handling

GitOrigin-RevId: a2f99c65bdaee1287a0353e66cfc5a7768fdbcc8
Jessica Lawshe 6 лет назад
Родитель
Сommit
a6be3179fd

+ 12 - 11
services/web/app/src/Features/Email/EmailBuilder.js

@@ -184,23 +184,24 @@ function buildEmail(templateName, opts) {
 
 
 const templates = {}
 const templates = {}
 
 
-templates.registered = CTAEmailTemplate({
+templates.registered = ctaTemplate({
   subject() {
   subject() {
     return `Activate your ${settings.appName} Account`
     return `Activate your ${settings.appName} Account`
   },
   },
   message(opts) {
   message(opts) {
-    return `\
-Congratulations, you've just had an account created for you on ${
-      settings.appName
-    } with the email address '${_.escape(opts.to)}'.
-
-Click here to set your password and log in:\
-`
+    return [
+      `Congratulations, you've just had an account created for you on ${
+        settings.appName
+      } with the email address '${_.escape(opts.to)}'.`,
+      'Click here to set your password and log in:'
+    ]
   },
   },
   secondaryMessage() {
   secondaryMessage() {
-    return `If you have any questions or problems, please contact ${
-      settings.adminEmail
-    }`
+    return [
+      `If you have any questions or problems, please contact ${
+        settings.adminEmail
+      }`
+    ]
   },
   },
   ctaText() {
   ctaText() {
     return 'Set password'
     return 'Set password'

+ 39 - 0
services/web/test/unit/src/Email/EmailBuilderTests.js

@@ -429,6 +429,45 @@ describe('EmailBuilder', function() {
           })
           })
         })
         })
       })
       })
+
+      describe('registered', function() {
+        before(function() {
+          this.emailAddress = 'example@overleaf.com'
+          this.opts = {
+            to: this.emailAddress,
+            setNewPasswordUrl: `${
+              this.settings.siteUrl
+            }/user/activate?token=aToken123&user_id=aUserId123`
+          }
+          this.email = this.EmailBuilder.buildEmail('registered', this.opts)
+        })
+
+        it('should build the email', function() {
+          expect(this.email.html).to.exist
+          expect(this.email.text).to.exist
+        })
+
+        describe('HTML email', function() {
+          it('should include a CTA button and a fallback CTA link', function() {
+            const dom = cheerio.load(this.email.html)
+            const buttonLink = dom('a:contains("Set password")')
+            expect(buttonLink.length).to.equal(1)
+            expect(buttonLink.attr('href')).to.equal(
+              this.opts.setNewPasswordUrl
+            )
+            const fallback = dom('.avoid-auto-linking').last()
+            expect(fallback.length).to.equal(1)
+            const fallbackLink = fallback.html().replace(/&/, '&')
+            expect(fallbackLink).to.contain(this.opts.setNewPasswordUrl)
+          })
+        })
+
+        describe('plain text email', function() {
+          it('should contain the CTA link', function() {
+            expect(this.email.text).to.contain(this.opts.setNewPasswordUrl)
+          })
+        })
+      })
     })
     })
     describe('no CTA', function() {
     describe('no CTA', function() {
       describe('securityAlert', function() {
       describe('securityAlert', function() {