| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- const { getFullInfo, getFullStack, hasCauseInstanceOf } = require('..')
- describe('OError.getFullInfo', () => {
- it('works on a normal error', () => {
- const err = new Error('foo')
- expect(getFullInfo(err)).to.deep.equal({ })
- })
- it('works on an error with .info', () => {
- const err = new Error('foo')
- err.info = { userId: 123 }
- expect(getFullInfo(err)).to.deep.equal({ userId: 123 })
- })
- it('merges info from a cause chain', () => {
- const err1 = new Error('foo')
- const err2 = new Error('bar')
- err1.cause = err2
- err2.info = { userId: 123 }
- expect(getFullInfo(err1)).to.deep.equal({ userId: 123 })
- })
- it('merges info from a cause chain with no info', () => {
- const err1 = new Error('foo')
- const err2 = new Error('bar')
- err1.cause = err2
- expect(getFullInfo(err1)).to.deep.equal({})
- })
- it('merges info from a cause chain with duplicate keys', () => {
- const err1 = new Error('foo')
- const err2 = new Error('bar')
- err1.cause = err2
- err1.info = { userId: 123 }
- err2.info = { userId: 456 }
- expect(getFullInfo(err1)).to.deep.equal({ userId: 123 })
- })
- it('works on an error with .info set to a string', () => {
- const err = new Error('foo')
- err.info = 'test'
- expect(getFullInfo(err)).to.deep.equal({})
- })
- })
- describe('OError.getFullStack', () => {
- it('works on a normal error', () => {
- const err = new Error('foo')
- const fullStack = getFullStack(err)
- expect(fullStack).to.match(/^Error: foo$/m)
- expect(fullStack).to.match(/^\s+at /m)
- })
- it('works on an error with a cause', () => {
- const err1 = new Error('foo')
- const err2 = new Error('bar')
- err1.cause = err2
- const fullStack = getFullStack(err1)
- expect(fullStack).to.match(/^Error: foo$/m)
- expect(fullStack).to.match(/^\s+at /m)
- expect(fullStack).to.match(/^caused by: Error: bar$/m)
- })
- })
- describe('OError.hasCauseInstanceOf', () => {
- it('works on a normal error', () => {
- const err = new Error('foo')
- expect(hasCauseInstanceOf(null, Error)).to.be.false
- expect(hasCauseInstanceOf(err, Error)).to.be.true
- expect(hasCauseInstanceOf(err, RangeError)).to.be.false
- })
- it('works on an error with a cause', () => {
- const err1 = new Error('foo')
- const err2 = new RangeError('bar')
- err1.cause = err2
- expect(hasCauseInstanceOf(err1, Error)).to.be.true
- expect(hasCauseInstanceOf(err1, RangeError)).to.be.true
- expect(hasCauseInstanceOf(err1, TypeError)).to.be.false
- })
- })
|