Files
zn-ai/tests/log-helpers.test.ts

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',
}),
],
});
});
});