131 lines
4.4 KiB
JavaScript
131 lines
4.4 KiB
JavaScript
|
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();
|
||
|
});
|
||
|
});
|
||
|
});
|