var sinon = require('sinon');
var assert = require('assert');
var GmailNotifier = require('../../../src/lib/notifiers/gmail');

describe('test gmail notifier', function() {
  it('should send an email', function() {
    var nodemailer = {};
    var transporter = {};
    nodemailer.createTransport = sinon.stub().returns(transporter);
    transporter.sendMail = sinon.stub().yields();
    var options = {};
    options.username = 'user_gmail';
    options.password = 'pass_gmail';

    var deps = {};
    deps.nodemailer = nodemailer;
    
    var sender = new GmailNotifier(options, deps);
    var subject = 'subject';

    var identity = {};
    identity.userid = 'user';
    identity.email = 'user@example.com';

    var url = 'http://test.com';

    return sender.notify(identity, subject, url)
    .then(function() {
      assert.equal(nodemailer.createTransport.getCall(0).args[0].auth.user, 'user_gmail');
      assert.equal(nodemailer.createTransport.getCall(0).args[0].auth.pass, 'pass_gmail');
      assert.equal(transporter.sendMail.getCall(0).args[0].to, 'user@example.com');
      assert.equal(transporter.sendMail.getCall(0).args[0].subject, 'subject');
      return Promise.resolve();
    });
  });
});