UNPKG

serialize-every-error

Version:

This package strives to be an exhaustive alternative to normal error serialization for logging

58 lines (42 loc) 1.72 kB
import { test } from 'tap'; import createSerializer from '../index.js'; test('serializes nested causes with just the base serializer', async (t) => { const baz = new Error('baz'); const bar = new Error('bar', { cause: baz }); const foo = new Error('foo', { cause: bar }); const serializeError = await createSerializer({ include: [] }); const serialized = serializeError(foo); t.equal(serialized.message, 'foo'); t.equal(serialized.cause.message, 'bar'); t.equal(serialized.cause.cause.message, 'baz'); }); test('serializes custom keys added to errors with just the base serializer', async (t) => { const foo = new Error('foo'); foo.statistics = 2; const serializeError = await createSerializer({ include: [] }); const serialized = serializeError(foo); t.equal(serialized.statistics, 2); }); [ undefined, null ].forEach((value) => { test(`serializes ${value} fields out of existence`, async (t) => { const foo = {'foo': value}; const serializeError = await createSerializer({ include: [] }); const serialized = serializeError(foo); t.ok(serialized); t.equal(serialized.foo, undefined); }); }); test('serializes falsy 0 value correctly', async (t) => { const foo = {'foo': 0}; const serializeError = await createSerializer({ include: [] }); const serialized = serializeError(foo); t.ok(serialized); t.equal(serialized.foo, 0); }); test('serializes falsy empty string value correctly', async (t) => { const foo = {'foo': 0}; const serializeError = await createSerializer({ include: [] }); const serialized = serializeError(foo); t.ok(serialized); t.same(serialized.foo, ''); });