UNPKG

q

Version:

A library for promises (CommonJS/Promises/A,B,D)

115 lines (101 loc) 2.84 kB
'use strict' var Q = require('q') exports['test `when` with non-promise'] = function(assert, done) { var nextTurn = false Q.when ( 'test' , function(value) { assert.equal(value, 'test', 'value resoved as expected') assert.ok(nextTurn, 'callback is called in next turn of event loop') done() } , function(reason) { assert.fail('promise got rejected with reason: ' + reason) done() } ) nextTurn = true } exports['test promise resolution'] = function(assert, done) { var nextTurn = false , deferred = Q.defer() Q.when ( deferred.promise , function(value) { assert.equal(value, 3, 'promise fullfilled correctly: `3`') assert.ok(nextTurn, 'callback is called in next turn of event loop') done() } , function(reason) { assert.fail('promise got rejected with reason: ' + reason) done() } ) deferred.resolve(3) nextTurn = true } exports['test promise rejection'] = function(assert, done) { var nextTurn = false , deferred = Q.defer() , error = new Error('Boom !!') Q.when ( deferred.promise , function(value) { assert.fail('resolve callback was called on rejected promise') done() } , function(reason) { assert.ok(nextTurn, 'callback is called in next turn of event loop') assert.equal(reason, error, 'rejection reason is correct') done() } ) deferred.reject(error) nextTurn = true } exports['test resolve/reject resoved promise'] = function(assert, done) { var nextTurn = false , deferred = Q.defer() , resolution = {} Q.when ( deferred.promise , function(value) { assert.ok(nextTurn, 'callback is called in next turn of event loop') assert.equal(value, resolution, 'resolved as expected') done() } , function(reason) { assert.ok(nextTurn, 'callback is called in next turn of event loop') assert.equal(reason, error, 'rejection reason is correct') done() } ) deferred.resolve(resolution) // all the following resolve / rejects are ignored deferred.resolve(3) deferred.reject('die!') nextTurn = true } exports['test resolve/reject rejected promise'] = function(assert, done) { var nextTurn = false , deferred = Q.defer() , error = new Error('Boom !!') Q.when ( deferred.promise , function(value) { assert.fail('resolve callback was called on rejected promise') done() } , function(reason) { assert.ok(nextTurn, 'callback is called in next turn of event loop') assert.equal(reason, error, 'rejection reason is correct') done() } ) deferred.reject(error) // all the following resolve / rejects are ignored deferred.resolve('taram!') deferred.reject('die!') nextTurn = true } if (module == require.main) require('test').run(exports)