|
|
@ -2,16 +2,16 @@ const assert = require('assert') |
|
|
|
const nodeify = require('../../../app/scripts/lib/nodeify') |
|
|
|
const nodeify = require('../../../app/scripts/lib/nodeify') |
|
|
|
|
|
|
|
|
|
|
|
describe('nodeify', function () { |
|
|
|
describe('nodeify', function () { |
|
|
|
var obj = { |
|
|
|
const obj = { |
|
|
|
foo: 'bar', |
|
|
|
foo: 'bar', |
|
|
|
promiseFunc: function (a) { |
|
|
|
promiseFunc: function (a) { |
|
|
|
var solution = this.foo + a |
|
|
|
const solution = this.foo + a |
|
|
|
return Promise.resolve(solution) |
|
|
|
return Promise.resolve(solution) |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
it('should retain original context', function (done) { |
|
|
|
it('should retain original context', function (done) { |
|
|
|
var nodified = nodeify(obj.promiseFunc, obj) |
|
|
|
const nodified = nodeify(obj.promiseFunc, obj) |
|
|
|
nodified('baz', function (err, res) { |
|
|
|
nodified('baz', function (err, res) { |
|
|
|
if (!err) { |
|
|
|
if (!err) { |
|
|
|
assert.equal(res, 'barbaz') |
|
|
|
assert.equal(res, 'barbaz') |
|
|
@ -22,7 +22,7 @@ describe('nodeify', function () { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
it('should allow the last argument to not be a function', function (done) { |
|
|
|
it('no callback - should allow the last argument to not be a function', function (done) { |
|
|
|
const nodified = nodeify(obj.promiseFunc, obj) |
|
|
|
const nodified = nodeify(obj.promiseFunc, obj) |
|
|
|
try { |
|
|
|
try { |
|
|
|
nodified('baz') |
|
|
|
nodified('baz') |
|
|
@ -31,4 +31,45 @@ describe('nodeify', function () { |
|
|
|
done(new Error('should not have thrown if the last argument is not a function')) |
|
|
|
done(new Error('should not have thrown if the last argument is not a function')) |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('no callback - should asyncly throw an error if underlying function does', function (done) { |
|
|
|
|
|
|
|
const nodified = nodeify(async () => { throw new Error('boom!') }, obj) |
|
|
|
|
|
|
|
process.prependOnceListener('uncaughtException', function (err) { |
|
|
|
|
|
|
|
assert.ok(err, 'got expected error') |
|
|
|
|
|
|
|
assert.ok(err.message.includes('boom!'), 'got expected error message') |
|
|
|
|
|
|
|
done() |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
nodified('baz') |
|
|
|
|
|
|
|
} catch (err) { |
|
|
|
|
|
|
|
done(new Error('should not have thrown an error synchronously')) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('sync functions - returns value', function (done) { |
|
|
|
|
|
|
|
const nodified = nodeify(() => 42) |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
nodified((err, result) => { |
|
|
|
|
|
|
|
if (err) return done(new Error(`should not have thrown any error: ${err.message}`)) |
|
|
|
|
|
|
|
assert.equal(42, result, 'got expected result') |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
done() |
|
|
|
|
|
|
|
} catch (err) { |
|
|
|
|
|
|
|
done(new Error(`should not have thrown any error: ${err.message}`)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
it('sync functions - handles errors', function (done) { |
|
|
|
|
|
|
|
const nodified = nodeify(() => { throw new Error('boom!') }) |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
nodified((err, result) => { |
|
|
|
|
|
|
|
if (result) return done(new Error('should not have returned any result')) |
|
|
|
|
|
|
|
assert.ok(err, 'got expected error') |
|
|
|
|
|
|
|
assert.ok(err.message.includes('boom!'), 'got expected error message') |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
done() |
|
|
|
|
|
|
|
} catch (err) { |
|
|
|
|
|
|
|
done(new Error(`should not have thrown any error: ${err.message}`)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
}) |
|
|
|
}) |
|
|
|