diff --git a/lib/index.js b/lib/index.js index b4eea43..e10b9a5 100755 --- a/lib/index.js +++ b/lib/index.js @@ -408,7 +408,7 @@ internals.reject = async function (/* type, message */) { const lastArg = arguments[1] || arguments[0]; const message = typeof lastArg === 'string' || lastArg instanceof RegExp ? lastArg : null; - let thrown; + let thrown = null; try { await this._ref; } @@ -431,7 +431,8 @@ internals.reject = async function (/* type, message */) { this.assert(thrown, 'reject with an error', thrown); } - return this.assert(thrown, 'reject with an error'); + this.assert(thrown, 'reject with an error'); + return thrown; } catch (err) { return new Promise((resolve, reject) => { diff --git a/package.json b/package.json index 264ccd8..6ef6e89 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "code", "description": "assertion library", - "version": "5.0.0", + "version": "5.1.0", "repository": "git://github.com/hapijs/code", "main": "lib/index.js", "keywords": [ diff --git a/test/index.js b/test/index.js index 75ab20a..a56ea5a 100755 --- a/test/index.js +++ b/test/index.js @@ -2367,19 +2367,11 @@ describe('expect()', () => { describe('reject()', () => { - const rejects = function () { - - return new Promise((resolve, reject) => { - - reject(new Error('kaboom')); - }); - }; - it('validates rejection', async () => { let exception = false; try { - await Code.expect(rejects()).to.reject(); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(); } catch (err) { exception = err; @@ -2392,7 +2384,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(new Promise((resolve, reject) => resolve(3))).to.not.reject(); + await Code.expect(Promise.resolve(3)).to.not.reject(); } catch (err) { exception = err; @@ -2405,7 +2397,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(new Promise((resolve, reject) => resolve(3))).to.reject(); + await Code.expect(Promise.resolve(3)).to.reject(); } catch (err) { exception = err; @@ -2418,7 +2410,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).rejects(); + await Code.expect(Promise.reject(new Error('kaboom'))).rejects(); } catch (err) { exception = err; @@ -2444,7 +2436,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.not.reject('message'); + await Code.expect(Promise.reject(new Error('kaboom'))).to.not.reject('message'); } catch (err) { exception = err; @@ -2457,7 +2449,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject('kaboom'); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject('kaboom'); } catch (err) { exception = err; @@ -2470,7 +2462,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(new Promise((resolve, reject) => reject(new Error('')))).to.reject(''); + await Code.expect(Promise.reject(new Error(''))).to.reject(''); } catch (err) { exception = err; @@ -2483,7 +2475,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject(/boom/); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(/boom/); } catch (err) { exception = err; @@ -2498,7 +2490,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(new Promise((resolve, reject) => reject(new Custom()))).to.reject('kaboom'); + await Code.expect(Promise.reject(new Custom())).to.reject('kaboom'); } catch (err) { exception = err; @@ -2511,7 +2503,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject('steve'); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject('steve'); } catch (err) { exception = err; @@ -2524,7 +2516,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.rejects(''); + await Code.expect(Promise.reject(new Error('kaboom'))).to.rejects(''); } catch (err) { exception = err; @@ -2537,7 +2529,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject(Error); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(Error); } catch (err) { exception = err; @@ -2552,7 +2544,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(new Promise((resolve, reject) => reject(new Custom()))).to.reject(Error); + await Code.expect(Promise.reject(new Custom())).to.reject(Error); } catch (err) { exception = err; @@ -2568,7 +2560,7 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject(Custom); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(Custom); } catch (err) { exception = err; @@ -2581,7 +2573,24 @@ describe('expect()', () => { let exception = false; try { - await Code.expect(rejects()).to.reject(Error, 'kaboom'); + await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(Error, 'kaboom'); + } + catch (err) { + exception = err; + } + + Hoek.assert(!exception, exception); + }); + + it('returns rejection error', async () => { + + const Custom = function () { }; + delete Custom.name; // Ensure that the type is anonymous + + let exception = false; + try { + const err = await Code.expect(Promise.reject(new Error('kaboom'))).to.reject(); + Code.expect(err).to.be.an.error('kaboom'); } catch (err) { exception = err;