specify("gh-232", function() { function f() { var args = [].slice.call(arguments, 0, -1); assert.deepEqual(args, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); var cb = [].slice.call(arguments, -1)[0]; cb(null, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } var fAsync = Promise.promisify(f); return fAsync(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).then(function(result) { assert.strictEqual(result, 1); }); });
describe("github 1063", function() { specify("should not cause error when called with no arguments", function() { return Promise.promisify(function(cb) { cb(); }, { multiArgs: true})().then(function(values) { assert(Array.isArray(values)); assert.strictEqual(values.length, 0); }); }) });
it('should not modify the input string', function () { var parser = new Parser(); var input = 'The Quick Brown Fox Jumps Over The Lazy Dog'; var email = parser.parse(input); assert.strictEqual('The Quick Brown Fox Jumps Over The Lazy Dog', input); });
var assertToken = function(val) { assert.strictEqual(token, val); }
specify("multiArgs option disabled single value", function() { var o = { get: function(cb) { cb(null, 1) } }; Promise.promisifyAll(o); return o.getAsync().then(function(value) { assert.strictEqual(value, 1); }); });
describe("OperationalError -- bb test - divergence!", function() { it("should not work without new", function() { try { var a = Promise.OperationalError("msg"); } catch (e) {} if(a) assert.fail(); }); it("should work with new", function() { var a = new Promise.OperationalError("msg"); assert.strictEqual(a.message, "msg"); assert(a instanceof Error); }); });
specify("should work on prototypes and not mix-up the instances", function() { var a = new Test(15); var b = new Test(30); var c = new Test(45); return Promise.all([ a.getAsync(1, 2, 3).then(function(result){ assert.strictEqual(result, 1); }), b.getAsync(4, 5, 6).then(function(result){ assert.strictEqual(result, 4); }), c.getAsync(7, 8, 9).then(function(result){ assert.strictEqual(result, 7); }) ]); });
describe("github 680", function() { before(function() { Function.prototype.method = function() {}; }); after(function() { delete Function.prototype.method; }); specify("should not try to promisify methods from Function.prototype, native or otherwise", function() { var a = function() {}; a.fn = function() {}; Promise.promisifyAll(a); assert.strictEqual(undefined, a.methodAsync); assert.strictEqual(undefined, a.applyAsync); assert(typeof a.fnAsync === "function"); }); });
describe("Spawn", function() { it("should work", function() { return Promise.spawn(function*() { return yield Promise.resolve(1); }).then(function(value) { assert.strictEqual(value, 1); }); }); it("should return rejected promise when passed non function", function() { return Promise.spawn({}).then(assert.fail, function(err) { assert(err instanceof Promise.TypeError); }); }); });
describe("identifier getter", function() { var p = Promise.resolve(new RegExp("", "")); specify("gets property", function() { var ci = p.get("ignoreCase"); var g = p.get("global"); var lastIndex = p.get("lastIndex"); var multiline = p.get("multiline"); return join(ci, g, lastIndex, multiline, function(ci, g, lastIndex, multiline) { assert(ci === false); assert(g === false); assert(lastIndex === 0); assert(multiline === false); }); }); specify("gets same property", function() { var o = {o: 1}; var o2 = {o: 2}; o = Promise.resolve(o).get("o"); o2 = Promise.resolve(o2).get("o"); return join(o, o2, function(one, two) { assert.strictEqual(1, one); assert.strictEqual(2, two); }); }); });
specify("Should lookup method dynamically if 'this' is given", function() { var obj = { fn: function(cb) { cb(null, 1); } }; Promise.promisifyAll(obj); obj.fn = function(cb) { cb(null, 2); }; return obj.fnAsync().then(function(val) { assert.strictEqual(2, val); }); });
describe("non identifier getters", function() { var p = Promise.resolve({"-": "val"}); specify("get property", function() { return p.get("-").then(function(val) { assert(val === "val"); }); }); specify("overflow cache", function() { var a = new Array(1024); var o = {}; for (var i = 0; i < a.length; ++i) { a[i] = "get" + i; o["get" + i] = i*2; } var b = Promise.map(a, function(item, index) { return Promise.resolve(o).get(a[index]); }).then(function(items) { return items.filter((value, index) => value === index * 2); }).then(function(values) { assert.strictEqual(values.length, a.length); }); return b; }); });
describe("filter", function() { specify("gets an argument whether default filter was passed", function() { Promise.promisifyAll({ abc: function() {} }, { filter: function(_, __, ___, passesDefaultFilter) { assert.strictEqual(passesDefaultFilter, true); } }) }); specify("doesn't fail when allowing non-identifier methods", function() { var a = Promise.promisifyAll({ " a s d ": function(cb) { cb(null, 1); } }, { filter: function() { return true; } }); a[" a s d Async"]().then(function(val) { assert.strictEqual(1, val); }); }); });
specify("should work on prototypes and not mix-up the instances with more than 5 arguments", function() { var a = new Test(15); var b = new Test(30); var c = new Test(45); return Promise.all([ a.getManyAsync(1, 2, 3, 4, 5, 6, 7).then(function(result){ assert.strictEqual(result, 1); }), b.getManyAsync(4, 5, 6, 7, 8, 9, 10).then(function(result){ assert.strictEqual(result, 4); }), c.getManyAsync(7, 8, 9, 10, 11, 12, 13).then(function(result){ assert.strictEqual(result, 7); }) ]); });
specify("multiArgs option disabled multi value", function() { var o = { get: function(cb) { cb(null, 1) } }; Promise.promisifyAll(o); return o.getAsync().then(function(value) { assert.strictEqual(value, 1); }); });