diff --git a/package-lock.json b/package-lock.json index 6ca4ab6..9cc0fcf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hckrnews/error", - "version": "0.3.5", + "version": "0.3.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@hckrnews/error", - "version": "0.3.5", + "version": "0.3.6", "license": "MIT", "dependencies": { "@hckrnews/validator": "^5.0.1" diff --git a/package.json b/package.json index 145bf93..291b917 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@hckrnews/error", "description": "Extended Errors", - "version": "0.3.5", + "version": "0.3.6", "author": { "name": "Pieter Wigboldus", "url": "https://hckr.news/" diff --git a/src/__tests__/app-error.unit.js b/src/__tests__/app-error.unit.js index a37b628..246ae6b 100644 --- a/src/__tests__/app-error.unit.js +++ b/src/__tests__/app-error.unit.js @@ -103,4 +103,85 @@ describe('App Error test', () => { expect(error.stack.includes('AppError: Invalid error')).toEqual(true); expect(error.me).toEqual(AppError); }); + + it('It should catch the error from the stack', () => { + const DoTwo = () => { + throw new AppError({ + value: 'test', + type: String, + message: 'Example from two', + me: AppError, + }); + }; + + const DoOne = () => { + try { + DoTwo(); + } catch (error) { + throw new AppError({ + value: 'test', + type: String, + message: 'Example from one', + me: AppError, + }); + } + }; + + expect(() => { + DoOne(); + }).toThrowError('Example from one'); + + try { + DoOne(); + } catch (error) { + expect(error instanceof AppError).toEqual(true); + expect(error instanceof Error).toEqual(true); + expect(error.name).toEqual('AppError'); + expect(error.message).toEqual('Example from one'); + expect(error.value).toEqual('test'); + expect(error.status).toEqual(500); + expect(error.type).toEqual(String); + expect(error.date.constructor).toEqual(Date); + expect(error.stack.includes('AppError: Example from one')).toEqual( + true + ); + expect(error.me).toEqual(AppError); + } + }); + + it('It should catch the error from the sub stack', () => { + const DoFour = () => { + throw new AppError({ + value: 'test', + type: String, + message: 'Example from four', + me: AppError, + }); + }; + + const DoThree = () => { + DoFour(); + }; + + expect(() => { + DoThree(); + }).toThrowError('Example from four'); + + try { + DoThree(); + } catch (error) { + expect(error instanceof AppError).toEqual(true); + expect(error instanceof Error).toEqual(true); + expect(error.name).toEqual('AppError'); + expect(error.message).toEqual('Example from four'); + expect(error.value).toEqual('test'); + expect(error.status).toEqual(500); + expect(error.type).toEqual(String); + expect(error.date.constructor).toEqual(Date); + expect(error.stack.includes('AppError: Example from four')).toEqual( + true + ); + expect(error.me).toEqual(AppError); + } + }); });