import * as sinon from "sinon"; import * as Assert from "assert"; import BluebirdPromise = require("bluebird"); import { MailSenderStub } from "../mocks/notifiers/MailSenderStub"; import EMailNotifier = require("../../src/lib/notifiers/EMailNotifier"); describe("test email notifier", function () { it("should send an email to given user", function () { const mailSender = new MailSenderStub(); const options = { username: "user_gmail", password: "pass_gmail", sender: "admin@example.com", service: "gmail" }; mailSender.sendStub.returns(BluebirdPromise.resolve()); const sender = new EMailNotifier.EMailNotifier(options, mailSender); const subject = "subject"; const url = "http://test.com"; return sender.notify("user@example.com", subject, url) .then(function () { Assert.equal(mailSender.sendStub.getCall(0).args[0].to, "user@example.com"); Assert.equal(mailSender.sendStub.getCall(0).args[0].subject, "subject"); return BluebirdPromise.resolve(); }); }); it("should fail while sending an email", function () { const mailSender = new MailSenderStub(); const options = { username: "user_gmail", password: "pass_gmail", sender: "admin@example.com", service: "gmail" }; mailSender.sendStub.returns(BluebirdPromise.reject(new Error("Failed to send mail"))); const sender = new EMailNotifier.EMailNotifier(options, mailSender); const subject = "subject"; const url = "http://test.com"; return sender.notify("user@example.com", subject, url) .then(function () { return BluebirdPromise.reject(new Error()); }, function() { Assert.equal(mailSender.sendStub.getCall(0).args[0].from, "admin@example.com"); return BluebirdPromise.resolve(); }); }); });