From 21397a451809d575366e26b388b3385886c6ba77 Mon Sep 17 00:00:00 2001 From: Sag Date: Wed, 3 Jan 2024 13:08:56 -0300 Subject: [PATCH] Added [test] prefix to test emails (#19431) fixes GRO-157 - the [TEST] prefix was removed unintentionally during the rewrite of the email sending service --- ghost/email-service/lib/EmailRenderer.js | 5 +++-- ghost/email-service/lib/EmailService.js | 3 ++- ghost/email-service/lib/SendingService.js | 3 ++- ghost/email-service/test/email-renderer.test.js | 12 ++++++++++++ ghost/email-service/test/email-service.test.js | 2 ++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ghost/email-service/lib/EmailRenderer.js b/ghost/email-service/lib/EmailRenderer.js index c02909957c..93ba53bcb4 100644 --- a/ghost/email-service/lib/EmailRenderer.js +++ b/ghost/email-service/lib/EmailRenderer.js @@ -167,8 +167,9 @@ class EmailRenderer { this.#models = models; } - getSubject(post) { - return post.related('posts_meta')?.get('email_subject') || post.get('title'); + getSubject(post, isTestEmail = false) { + const subject = post.related('posts_meta')?.get('email_subject') || post.get('title'); + return isTestEmail ? `[TEST] ${subject}` : subject; } #getRawFromAddress(post, newsletter) { diff --git a/ghost/email-service/lib/EmailService.js b/ghost/email-service/lib/EmailService.js index 475577de37..52f1bd8277 100644 --- a/ghost/email-service/lib/EmailService.js +++ b/ghost/email-service/lib/EmailService.js @@ -301,7 +301,8 @@ class EmailService { emailId: null }, { clickTrackingEnabled: false, - openTrackingEnabled: false + openTrackingEnabled: false, + isTestEmail: true }); } } diff --git a/ghost/email-service/lib/SendingService.js b/ghost/email-service/lib/SendingService.js index 24461d01d5..ec9ed90b13 100644 --- a/ghost/email-service/lib/SendingService.js +++ b/ghost/email-service/lib/SendingService.js @@ -88,6 +88,7 @@ class SendingService { */ async send({post, newsletter, segment, members, emailId}, options) { const cacheId = emailId + '-' + (segment ?? 'null'); + const isTestEmail = options.isTestEmail ?? false; /** * @type {EmailBody | null} @@ -114,7 +115,7 @@ class SendingService { const recipients = this.buildRecipients(members, emailBody.replacements); return await this.#emailProvider.send({ - subject: this.#emailRenderer.getSubject(post), + subject: this.#emailRenderer.getSubject(post, isTestEmail), from: this.#emailRenderer.getFromAddress(post, newsletter), replyTo: this.#emailRenderer.getReplyToAddress(post, newsletter) ?? undefined, html: emailBody.html, diff --git a/ghost/email-service/test/email-renderer.test.js b/ghost/email-service/test/email-renderer.test.js index 5859c64313..329560951c 100644 --- a/ghost/email-service/test/email-renderer.test.js +++ b/ghost/email-service/test/email-renderer.test.js @@ -662,6 +662,18 @@ describe('Email renderer', function () { let response = emailRenderer.getSubject(post); response.should.equal('Sample Post'); }); + + it('adds [TEST] prefix for test emails', function () { + const post = createModel({ + posts_meta: createModel({ + email_subject: '' + }), + title: 'Sample Post', + loaded: ['posts_meta'] + }); + let response = emailRenderer.getSubject(post, true); + response.should.equal('[TEST] Sample Post'); + }); }); describe('getFromAddress', function () { diff --git a/ghost/email-service/test/email-service.test.js b/ghost/email-service/test/email-service.test.js index d94982a6b0..0ce2dffd4b 100644 --- a/ghost/email-service/test/email-service.test.js +++ b/ghost/email-service/test/email-service.test.js @@ -428,8 +428,10 @@ describe('Email Service', function () { await service.sendTestEmail(post, post.get('newsletter'), null, ['example@example.com']); sinon.assert.calledOnce(sendingService.send); const members = sendingService.send.firstCall.args[0].members; + const options = sendingService.send.firstCall.args[1]; assert.equal(members.length, 1); assert.equal(members[0].email, 'example@example.com'); + assert.equal(options.isTestEmail, true); }); }); });