diff --git a/test/api/v3/unit/libs/email.test.js b/test/api/v3/unit/libs/email.test.js index 731f24e347..5760fd2a99 100644 --- a/test/api/v3/unit/libs/email.test.js +++ b/test/api/v3/unit/libs/email.test.js @@ -1,9 +1,8 @@ import request from 'request'; -import { - send as sendEmail, - sendTxn as sendTxnEmail, - getUserInfo, -} from '../../../../../website/src/libs/api-v3/email'; +import nconf from 'nconf'; +import nodemailer from 'nodemailer'; +import Q from 'q'; +import logger from '../../../../../website/src/libs/api-v3/logger'; function getUser () { return { @@ -32,8 +31,10 @@ function getUser () { }; describe('emails', () => { + let pathToEmailLib = '../../../../../website/src/libs/api-v3/email'; beforeEach(() => { + delete require.cache[require.resolve(pathToEmailLib)]; sandbox.stub(request, 'post'); }); @@ -42,15 +43,48 @@ describe('emails', () => { }); describe('sendEmail', () => { + it('can send an email using the default transport', () => { + let sendMailSpy = sandbox.stub().returns(Q.defer().promise); + sandbox.stub(nodemailer, 'createTransport').returns({ + sendMail: sendMailSpy, + }); + + let attachEmail = require(pathToEmailLib); + attachEmail.send(); + expect(sendMailSpy).to.be.calledOnce; + }); + + it('logs errors', (done) => { + let deferred = Q.defer(); + let sendMailSpy = sandbox.stub().returns(deferred.promise); + + sandbox.stub(nodemailer, 'createTransport').returns({ + sendMail: sendMailSpy, + }); + sandbox.stub(logger, 'error'); + + let attachEmail = require(pathToEmailLib); + attachEmail.send(); + expect(sendMailSpy).to.be.calledOnce; + deferred.reject(); + deferred.promise.catch((err) => { + expect(logger.error).to.be.calledOnce; + done(); + }); + }); }); describe('getUserInfo', () => { it('returns an empty object if no field request', () => { + let attachEmail = require(pathToEmailLib); + let getUserInfo = attachEmail.getUserInfo; expect(getUserInfo({}, [])).to.be.empty; }); it('returns correct user data', () => { + let attachEmail = require(pathToEmailLib); + let getUserInfo = attachEmail.getUserInfo; let user = getUser(); let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); @@ -61,6 +95,8 @@ describe('emails', () => { }); it('returns correct user data [facebook users]', () => { + let attachEmail = require(pathToEmailLib); + let getUserInfo = attachEmail.getUserInfo; let user = getUser(); delete user.profile['name']; delete user.auth['local']; @@ -74,6 +110,8 @@ describe('emails', () => { }); it('has fallbacks for missing data', () => { + let attachEmail = require(pathToEmailLib); + let getUserInfo = attachEmail.getUserInfo; let user = getUser(); delete user.profile['name']; delete user.auth.local['email'] @@ -89,6 +127,6 @@ describe('emails', () => { }); describe('sendTxnEmail', () => { - + it }); });