47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { serializeError, serializeUnknownError, serializeUnknownForLog } from '../electron/utils/log-helpers';
|
|
|
|
describe('log helpers', () => {
|
|
it('serializes Error instances with code and cause', () => {
|
|
const cause = new Error('inner failure');
|
|
const error = new Error('outer failure') as Error & { code?: string; cause?: unknown };
|
|
error.code = 'E_TEST';
|
|
error.cause = cause;
|
|
|
|
expect(serializeError(error)).toMatchObject({
|
|
name: 'Error',
|
|
message: 'outer failure',
|
|
code: 'E_TEST',
|
|
cause: {
|
|
name: 'Error',
|
|
message: 'inner failure',
|
|
},
|
|
});
|
|
});
|
|
|
|
it('normalizes string and object rejection values', () => {
|
|
expect(serializeUnknownError('boom')).toEqual({ message: 'boom' });
|
|
expect(serializeUnknownError({ message: 'failed', code: 500 })).toEqual({
|
|
message: 'failed',
|
|
code: 500,
|
|
});
|
|
});
|
|
|
|
it('recursively serializes nested error values for structured logging', () => {
|
|
const payload = serializeUnknownForLog({
|
|
task: 'bootstrap',
|
|
errors: [new Error('bad dependency')],
|
|
});
|
|
|
|
expect(payload).toEqual({
|
|
task: 'bootstrap',
|
|
errors: [
|
|
expect.objectContaining({
|
|
name: 'Error',
|
|
message: 'bad dependency',
|
|
}),
|
|
],
|
|
});
|
|
});
|
|
});
|