UNPKG

@incdevco/framework

Version:
111 lines (58 loc) 1.84 kB
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;