2017-11-01 19:17:35 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Module dependencies.
|
|
|
|
*/
|
2017-11-02 21:29:02 +00:00
|
|
|
const emailNotifications = require('../../libs/send-email-notifications'),
|
|
|
|
constants = require('../../libs/constants'),
|
|
|
|
mockTransport = require("nodemailer").createTransport("Stub"),
|
|
|
|
config = require('../../../config/config');
|
2017-11-01 19:17:35 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Globals
|
|
|
|
*/
|
2017-11-02 21:29:02 +00:00
|
|
|
const validFormFields = [
|
2017-11-02 16:18:41 +00:00
|
|
|
{fieldType:'textfield', title:'First Name', fieldValue: 'John Smith', deletePreserved: false, globalId:'56340745f59a6fc9e22028e9'},
|
|
|
|
{fieldType:'link', title:'Your Website', fieldValue: 'https://johnsmith.me', deletePreserved: false, globalId:'5c9e22028e907634f45f59a6'},
|
|
|
|
{fieldType:'number', title:'Your Age', fieldValue: 45, deletePreserved: false, globalId:'56e90745f5934fc9e22028a6'}
|
2017-11-01 19:17:35 +00:00
|
|
|
];
|
|
|
|
|
2017-11-02 21:29:02 +00:00
|
|
|
const validFieldDict = {
|
2017-11-01 19:17:35 +00:00
|
|
|
'56340745f59a6fc9e22028e9': 'John Smith',
|
|
|
|
'5c9e22028e907634f45f59a6': 'https://johnsmith.me',
|
|
|
|
'56e90745f5934fc9e22028a6': 45
|
|
|
|
};
|
|
|
|
|
2017-11-02 21:29:02 +00:00
|
|
|
const invalidFormFields = [
|
2017-11-01 19:17:35 +00:00
|
|
|
{fieldType:'textfield', title:'First Name', fieldValue: 'John Smith', deletePreserved: false},
|
|
|
|
{fieldType:'link', title:'Your Website', deletePreserved: false, _id:'5c9e22028e907634f45f59a6'},
|
|
|
|
{fieldType:'number', title:'Your Age'}
|
2017-11-01 19:46:15 +00:00
|
|
|
];
|
2017-11-01 19:17:35 +00:00
|
|
|
|
2017-11-02 21:29:02 +00:00
|
|
|
const htmlTemplate = '<p><var class="tag" id="field:56340745f59a6fc9e22028e9">First Name</var> \
|
2017-11-01 19:53:52 +00:00
|
|
|
<br><var class="tag" id="field:5c9e22028e907634f45f59a6">Your Website</var> \
|
|
|
|
<br><var class="tag" id="field:56e90745f5934fc9e22028a6">Your Age</var></p>';
|
|
|
|
|
2017-11-02 21:29:02 +00:00
|
|
|
const renderedTemplate = '<p>John Smith \
|
2017-11-01 19:53:52 +00:00
|
|
|
<br>https://johnsmith.me \
|
|
|
|
<br>45</p>';
|
|
|
|
|
2017-11-01 19:17:35 +00:00
|
|
|
/**
|
|
|
|
* Unit tests
|
|
|
|
*/
|
|
|
|
describe('Send Email Notification Unit Tests', function() {
|
|
|
|
|
|
|
|
describe('Method createFieldDict', function() {
|
|
|
|
it('should be return a fieldDict from valid form fields', function() {
|
|
|
|
var actualFieldDict = emailNotifications.createFieldDict(validFormFields);
|
|
|
|
actualFieldDict.should.deepEqual(validFieldDict);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return empty object if form fields are invalid or empty ', function() {
|
|
|
|
var actualFieldDict = emailNotifications.createFieldDict(invalidFormFields);
|
|
|
|
actualFieldDict.should.be.empty();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-11-01 19:53:52 +00:00
|
|
|
describe('Method parseTemplate', function(){
|
2017-11-02 21:29:02 +00:00
|
|
|
it('should properly render a template given a valid field dict', function() {
|
2017-11-01 20:38:42 +00:00
|
|
|
var actualRenderedTemplate = emailNotifications.parseTemplate(htmlTemplate, validFieldDict, constants.varFormat).replace((/ |\r\n|\n|\r|\t/gm),'');
|
|
|
|
actualRenderedTemplate.should.equal(renderedTemplate.replace((/ |\r\n|\n|\r|\t/gm),''));
|
2017-11-01 19:53:52 +00:00
|
|
|
});
|
2017-11-01 19:17:35 +00:00
|
|
|
});
|
|
|
|
|
2017-11-01 19:53:52 +00:00
|
|
|
describe('Method replaceTemplateVal', function() {
|
2017-11-02 21:29:02 +00:00
|
|
|
it('should properly replace a template var in a valid template', function() {
|
2017-11-01 20:38:42 +00:00
|
|
|
var expectedHtml = '<p>John Smith \
|
|
|
|
<br><var class="tag" id="field:5c9e22028e907634f45f59a6">Your Website</var> \
|
|
|
|
<br><var class="tag" id="field:56e90745f5934fc9e22028a6">Your Age</var></p>';
|
|
|
|
|
|
|
|
var actualRenderedTemplate = emailNotifications.replaceTemplateVal('56340745f59a6fc9e22028e9', validFieldDict['56340745f59a6fc9e22028e9'], htmlTemplate, constants.varFormat).replace((/ |\r\n|\n|\r|\t/gm),'');
|
|
|
|
actualRenderedTemplate.should.equal(expectedHtml.replace((/ |\r\n|\n|\r|\t/gm),''));
|
|
|
|
});
|
2017-11-01 19:17:35 +00:00
|
|
|
});
|
|
|
|
|
2017-11-01 19:53:52 +00:00
|
|
|
describe('Method send', function() {
|
2017-11-02 21:29:02 +00:00
|
|
|
this.timeout(10000);
|
|
|
|
const emailSettings = {
|
|
|
|
fromEmails: 'somewhere@somewhere.com',
|
|
|
|
toEmails: 'there@there.com',
|
|
|
|
subject: 'Hello <var class="tag" id="field:56340745f59a6fc9e22028e9">First Name</var>!',
|
|
|
|
htmlTemplate: htmlTemplate
|
|
|
|
};
|
|
|
|
|
|
|
|
const emailTemplateVars = validFieldDict;
|
|
|
|
const varFormat = constants.varFormat;
|
|
|
|
|
|
|
|
it('should properly replace a template var in a valid template', function(done) {
|
|
|
|
emailNotifications.send(emailSettings, emailTemplateVars, mockTransport, varFormat, function(err){
|
|
|
|
should.not.exist(err);
|
|
|
|
done();
|
|
|
|
});
|
|
|
|
});
|
2017-11-01 19:17:35 +00:00
|
|
|
});
|
|
|
|
});
|