|
|
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(); }); }); });
|