mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
refs https://github.com/TryGhost/Toolbox/issues/292 - There's a need to reuse these utils in the version mismatch notification service. Having loads of tightly coupled dependencies makes it super hard to rip out this module for reuse - It's a groundwork for extraction of the email-utils package - Rewrote the unit tests that were written for these utils previously - they weren't testing anything useful. The goal of this util is to generate specific content based on provided data and available templates - now the tests do test those specific things, not the mailer itself!
102 lines
5 KiB
JavaScript
102 lines
5 KiB
JavaScript
const assert = require('assert');
|
|
const path = require('path');
|
|
|
|
const EmailContentGenerator = require('../../../../../core/server/services/mail/EmailContentGenerator');
|
|
|
|
describe('Mail: EmailContentGenerator', function () {
|
|
it('generate welcome', async function () {
|
|
const emailContentGenerator = new EmailContentGenerator({
|
|
getSiteTitle: () => 'The Ghost Blog',
|
|
getSiteUrl: () => 'http://myblog.com',
|
|
templatesDir: path.resolve(__dirname, '../../../../../core/server/services/mail/templates/')
|
|
});
|
|
|
|
const content = await emailContentGenerator.getContent({
|
|
template: 'welcome',
|
|
data: {
|
|
ownerEmail: 'test@example.com'
|
|
}
|
|
});
|
|
|
|
assert.match(content.html, /<title>Welcome to Ghost<\/title>/);
|
|
assert.match(content.html, /This email was sent from <a href="http:\/\/myblog.com" style="color: #738A94;">http:\/\/myblog.com<\/a> to <a href="mailto:test@example.com" style="color: #738A94;">test@example.com<\/a><\/p>/);
|
|
|
|
assert.match(content.text, /Email Address: test@example.com \[test@example.com\]/);
|
|
assert.match(content.text, /This email was sent from http:\/\/myblog.com/);
|
|
});
|
|
|
|
it('generates newsletter template', async function () {
|
|
const emailContentGenerator = new EmailContentGenerator({
|
|
getSiteTitle: () => 'The Ghost Blog',
|
|
getSiteUrl: () => 'http://myblog.com',
|
|
templatesDir: path.resolve(__dirname, '../../../../../core/server/services/mail/templates/')
|
|
});
|
|
|
|
const content = await emailContentGenerator.getContent({
|
|
template: 'newsletter',
|
|
data: {
|
|
blog: {
|
|
logo: 'http://myblog.com/content/images/blog-logo.jpg',
|
|
title: 'The Ghost Blog',
|
|
url: 'http://myblog.com',
|
|
twitter: 'http://twitter.com/ghost',
|
|
facebook: 'https://www.facebook.com/ghost',
|
|
unsubscribe: 'http://myblog.com/unsubscribe',
|
|
post: [
|
|
{
|
|
picture: 'http://myblog.com/content/images/post-1-image.jpg',
|
|
title: 'Featured blog post',
|
|
text: 'This is a featured blog post. It’s awesome…',
|
|
url: 'http://myblog.com/featured-blog-post',
|
|
tag: 'featured',
|
|
author: 'harry potter'
|
|
},
|
|
{
|
|
picture: 'http://myblog.com/content/images/post-2-image.jpg',
|
|
title: 'Second blog post',
|
|
text: 'This is the second blog post. It’s also awesome…',
|
|
url: 'http://myblog.com/second-blog-post',
|
|
tag: 'second',
|
|
author: 'lord voldemord'
|
|
},
|
|
{
|
|
picture: 'http://myblog.com/content/images/post-3-image.jpg',
|
|
title: 'Third blog post',
|
|
text: 'This is the third blog post. It’s also awesome…',
|
|
url: 'http://myblog.com/third-blog-post',
|
|
tag: 'third',
|
|
author: 'marry poppins'
|
|
},
|
|
{
|
|
picture: 'http://myblog.com/content/images/post-4-image.jpg',
|
|
title: 'Fourth blog post',
|
|
text: 'This is the fourth blog post. It’s also awesome…',
|
|
url: 'http://myblog.com/fourth-blog-post',
|
|
tag: 'fourth',
|
|
author: 'donald duck'
|
|
},
|
|
{
|
|
picture: 'http://myblog.com/content/images/post-5-image.jpg',
|
|
title: 'Fifth blog post',
|
|
text: 'This is the fifth blog post. It’s also awesome…',
|
|
url: 'http://myblog.com/fifth-blog-post',
|
|
tag: 'fifth',
|
|
author: 'casper the ghost'
|
|
}
|
|
]
|
|
},
|
|
newsletter: {
|
|
interval: 'monthly',
|
|
date: 'june, 9th 2016'
|
|
}
|
|
}
|
|
});
|
|
|
|
assert.match(content.html, /<title>The Ghost Blog<\/title>/);
|
|
assert.match(content.html, /<span style="text-transform:capitalize">monthly<\/span> digest/);
|
|
assert.match(content.html, /<span style="text-transform:capitalize">june, 9th 2016<\/span><\/h3>/);
|
|
|
|
assert.match(content.text, /MONTHLY DIGEST — JUNE, 9TH 2016/);
|
|
assert.match(content.text, /SECOND BLOG POST \[HTTP:\/\/MYBLOG.COM\/SECOND-BLOG-POST\]/);
|
|
});
|
|
});
|