@incdevco/framework
Version:
node.js lambda framework
111 lines (58 loc) • 1.84 kB
JavaScript
var Expect = require("chai").expect;
var Promise = require("bluebird");
function Call(name, expectation) {
"use strict";
this.expectation = expectation;
this.name = name;
}
Call.prototype.execute = function (args) {
"use strict";
var exp, name = this.name;
if (!this.expectation) {
throw new Error("'" + name + "'"
+ " was not expected to be called.");
}
exp = this.expectation;
exp._withArgs.forEach(function (argument, index) {
var type = typeof argument;
if (type === "object" || type === "function") {
Expect(args[index]).to.deep.equal(argument, name + " argument " + index);
} else {
Expect(args[index]).to.equal(argument, name + " argument " + index);
}
});
exp._met = true;
if (exp._sideEffect) {
exp._sideEffect();
}
if (exp._will === "executeCallback") {
var callback = args[args.length - 1];
//console.log('args', args, callback);
return callback.apply(callback, exp._callbackArguments);
} else if (exp._will === "reject") {
if (exp._reject === undefined) {
return Promise.reject(args[0]);
} else {
return Promise.reject(exp._reject);
}
} else if (exp._will === "resolve") {
if (exp._resolve === undefined) {
return Promise.resolve(args[0]);
} else {
return Promise.resolve(exp._resolve);
}
} else if (exp._will === "return") {
if (exp._return === undefined) {
return args[0];
}
return exp._return;
} else if (exp._will === "throw") {
if (exp._throw === undefined) {
return args[0];
}
return exp._throw;
} else {
throw new Error("function mocked without will");
}
};
module.exports = Call;