mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
add send email tests
This commit is contained in:
@@ -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
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user