UNPKG

@novo-learning/novo-sdk

Version:

SDK for the Novolanguage Speech Analysis API

55 lines (43 loc) 1.88 kB
import { formatError } from './format-error'; describe('formatError', () => { it('formats a standard Error object', () => { const error = new Error('Something went wrong'); const output = formatError(error); expect(output).toContain('Name: Error'); expect(output).toContain('Message: Something went wrong'); expect(output).toContain('Stacktrace:'); }); it('formats a TypeError with extra properties', () => { const error: TypeError & { code?: number } = new TypeError('Invalid type'); error.code = 400; const output = formatError(error); expect(output).toContain('Name: TypeError'); expect(output).toContain('Message: Invalid type'); expect(output).toContain('code: 400'); }); it('handles AggregateError with nested errors', () => { const error = new AggregateError([new Error('First'), new TypeError('Second')], 'Multiple errors'); const output = formatError(error); expect(output).toContain('Name: AggregateError'); expect(output).toContain('Message: Multiple errors'); expect(output).toContain('-- Error 1 --'); expect(output).toContain('Message: First'); expect(output).toContain('-- Error 2 --'); expect(output).toContain('Message: Second'); }); it('handles non-object errors like strings', () => { const output = formatError('Oops!'); expect(output).toBe('Unknown error: Oops!'); }); it('handles null and undefined', () => { expect(formatError(null)).toBe('Unknown error: null'); expect(formatError(undefined)).toBe('Unknown error: undefined'); }); it('handles circular references gracefully', () => { const error: Error & { meta?: { [key: string]: unknown } } = new Error('Circular'); error.meta = {}; error.meta.self = error; const output = formatError(error); expect(output).toContain('meta: unable to stringify'); }); });