diff --git a/ghost/email-content-generator/test/email-content-generator.test.js b/ghost/email-content-generator/test/email-content-generator.test.js new file mode 100644 index 0000000000..4c02b56149 --- /dev/null +++ b/ghost/email-content-generator/test/email-content-generator.test.js @@ -0,0 +1,107 @@ +const should = require('should'); +const sinon = require('sinon'); +const mail = require('../../../../../core/server/services/mail'); +const configUtils = require('../../../../utils/configUtils'); + +describe('Mail: Utils', function () { + const scope = {ghostMailer: null}; + + beforeEach(function () { + configUtils.set({mail: {transport: 'stub'}}); + scope.ghostMailer = new mail.GhostMailer(); + }); + + afterEach(function () { + sinon.restore(); + configUtils.restore(); + }); + + it('generate welcome', function (done) { + mail.utils.generateContent({ + template: 'welcome', + data: { + ownerEmail: 'test@example.com' + } + }).then(function (result) { + return scope.ghostMailer.send({ + to: 'test@example.com', + subject: 'lol', + html: result.html, + text: result.text + }); + }).then(function () { + done(); + }).catch(done); + }); + + it('generates newsletter template', function (done) { + mail.utils.generateContent({ + 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' + } + } + }).then(function (result) { + return scope.ghostMailer.send({ + to: 'jbloggs@example.com', + subject: 'The Newsletter Blog', + html: result.html, + text: result.text + }); + }).then(function () { + done(); + }).catch(done); + }); +});