| var tape = require("tape"); |
| |
| var asPromise = require(".."); |
| |
| tape.test("aspromise", function(test) { |
| |
| test.test(this.name + " - resolve", function(test) { |
| |
| function fn(arg1, arg2, callback) { |
| test.equal(this, ctx, "function should be called with this = ctx"); |
| test.equal(arg1, 1, "function should be called with arg1 = 1"); |
| test.equal(arg2, 2, "function should be called with arg2 = 2"); |
| callback(null, arg2); |
| } |
| |
| var ctx = {}; |
| |
| var promise = asPromise(fn, ctx, 1, 2); |
| promise.then(function(arg2) { |
| test.equal(arg2, 2, "promise should be resolved with arg2 = 2"); |
| test.end(); |
| }).catch(function(err) { |
| test.fail("promise should not be rejected (" + err + ")"); |
| }); |
| }); |
| |
| test.test(this.name + " - reject", function(test) { |
| |
| function fn(arg1, arg2, callback) { |
| test.equal(this, ctx, "function should be called with this = ctx"); |
| test.equal(arg1, 1, "function should be called with arg1 = 1"); |
| test.equal(arg2, 2, "function should be called with arg2 = 2"); |
| callback(arg1); |
| } |
| |
| var ctx = {}; |
| |
| var promise = asPromise(fn, ctx, 1, 2); |
| promise.then(function() { |
| test.fail("promise should not be resolved"); |
| }).catch(function(err) { |
| test.equal(err, 1, "promise should be rejected with err = 1"); |
| test.end(); |
| }); |
| }); |
| |
| test.test(this.name + " - resolve twice", function(test) { |
| |
| function fn(arg1, arg2, callback) { |
| test.equal(this, ctx, "function should be called with this = ctx"); |
| test.equal(arg1, 1, "function should be called with arg1 = 1"); |
| test.equal(arg2, 2, "function should be called with arg2 = 2"); |
| callback(null, arg2); |
| callback(null, arg1); |
| } |
| |
| var ctx = {}; |
| var count = 0; |
| |
| var promise = asPromise(fn, ctx, 1, 2); |
| promise.then(function(arg2) { |
| test.equal(arg2, 2, "promise should be resolved with arg2 = 2"); |
| if (++count > 1) |
| test.fail("promise should not be resolved twice"); |
| test.end(); |
| }).catch(function(err) { |
| test.fail("promise should not be rejected (" + err + ")"); |
| }); |
| }); |
| |
| test.test(this.name + " - reject twice", function(test) { |
| |
| function fn(arg1, arg2, callback) { |
| test.equal(this, ctx, "function should be called with this = ctx"); |
| test.equal(arg1, 1, "function should be called with arg1 = 1"); |
| test.equal(arg2, 2, "function should be called with arg2 = 2"); |
| callback(arg1); |
| callback(arg2); |
| } |
| |
| var ctx = {}; |
| var count = 0; |
| |
| var promise = asPromise(fn, ctx, 1, 2); |
| promise.then(function() { |
| test.fail("promise should not be resolved"); |
| }).catch(function(err) { |
| test.equal(err, 1, "promise should be rejected with err = 1"); |
| if (++count > 1) |
| test.fail("promise should not be rejected twice"); |
| test.end(); |
| }); |
| }); |
| |
| test.test(this.name + " - reject error", function(test) { |
| |
| function fn(callback) { |
| test.ok(arguments.length === 1 && typeof callback === "function", "function should be called with just a callback"); |
| throw 3; |
| } |
| |
| var promise = asPromise(fn, null); |
| promise.then(function() { |
| test.fail("promise should not be resolved"); |
| }).catch(function(err) { |
| test.equal(err, 3, "promise should be rejected with err = 3"); |
| test.end(); |
| }); |
| }); |
| |
| test.test(this.name + " - reject and error", function(test) { |
| |
| function fn(callback) { |
| callback(3); |
| throw 4; |
| } |
| |
| var count = 0; |
| |
| var promise = asPromise(fn, null); |
| promise.then(function() { |
| test.fail("promise should not be resolved"); |
| }).catch(function(err) { |
| test.equal(err, 3, "promise should be rejected with err = 3"); |
| if (++count > 1) |
| test.fail("promise should not be rejected twice"); |
| test.end(); |
| }); |
| }); |
| }); |