add send email tests

This commit is contained in:
Matteo Pagliazzi
2015-11-14 18:13:17 +01:00
parent 3b75fe6ade
commit a8b3780cc0

View File

@@ -1,9 +1,8 @@
import request from 'request'; import request from 'request';
import { import nconf from 'nconf';
send as sendEmail, import nodemailer from 'nodemailer';
sendTxn as sendTxnEmail, import Q from 'q';
getUserInfo, import logger from '../../../../../website/src/libs/api-v3/logger';
} from '../../../../../website/src/libs/api-v3/email';
function getUser () { function getUser () {
return { return {
@@ -32,8 +31,10 @@ function getUser () {
}; };
describe('emails', () => { describe('emails', () => {
let pathToEmailLib = '../../../../../website/src/libs/api-v3/email';
beforeEach(() => { beforeEach(() => {
delete require.cache[require.resolve(pathToEmailLib)];
sandbox.stub(request, 'post'); sandbox.stub(request, 'post');
}); });
@@ -42,15 +43,48 @@ describe('emails', () => {
}); });
describe('sendEmail', () => { 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', () => { describe('getUserInfo', () => {
it('returns an empty object if no field request', () => { it('returns an empty object if no field request', () => {
let attachEmail = require(pathToEmailLib);
let getUserInfo = attachEmail.getUserInfo;
expect(getUserInfo({}, [])).to.be.empty; expect(getUserInfo({}, [])).to.be.empty;
}); });
it('returns correct user data', () => { it('returns correct user data', () => {
let attachEmail = require(pathToEmailLib);
let getUserInfo = attachEmail.getUserInfo;
let user = getUser(); let user = getUser();
let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']); let data = getUserInfo(user, ['name', 'email', '_id', 'canSend']);
@@ -61,6 +95,8 @@ describe('emails', () => {
}); });
it('returns correct user data [facebook users]', () => { it('returns correct user data [facebook users]', () => {
let attachEmail = require(pathToEmailLib);
let getUserInfo = attachEmail.getUserInfo;
let user = getUser(); let user = getUser();
delete user.profile['name']; delete user.profile['name'];
delete user.auth['local']; delete user.auth['local'];
@@ -74,6 +110,8 @@ describe('emails', () => {
}); });
it('has fallbacks for missing data', () => { it('has fallbacks for missing data', () => {
let attachEmail = require(pathToEmailLib);
let getUserInfo = attachEmail.getUserInfo;
let user = getUser(); let user = getUser();
delete user.profile['name']; delete user.profile['name'];
delete user.auth.local['email'] delete user.auth.local['email']
@@ -89,6 +127,6 @@ describe('emails', () => {
}); });
describe('sendTxnEmail', () => { describe('sendTxnEmail', () => {
it
}); });
}); });