From 0e08d29df32b733f627d8c4436348dbfb944d926 Mon Sep 17 00:00:00 2001 From: MythEclipse Date: Tue, 19 May 2026 02:16:50 +0700 Subject: [PATCH] test: cover logger metadata serialization --- tests/logger.test.ts | 57 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 tests/logger.test.ts diff --git a/tests/logger.test.ts b/tests/logger.test.ts new file mode 100644 index 0000000..2c94a41 --- /dev/null +++ b/tests/logger.test.ts @@ -0,0 +1,57 @@ +import { describe, expect, it } from "vitest"; +import { formatLogMetadataForTest, serializeLogValueForTest } from "../src/logger"; + +class TestError extends Error { + public code = "TEST_CODE"; + public statusCode = 418; + + constructor() { + super("test failure"); + this.name = "TestError"; + } +} + +describe("logger serialization", () => { + it("serializes Error values with stable fields", () => { + const serialized = serializeLogValueForTest(new TestError()); + + expect(serialized).toMatchObject({ + name: "TestError", + message: "test failure", + code: "TEST_CODE", + statusCode: 418, + }); + expect(serialized).toHaveProperty("stack"); + }); + + it("serializes nested error metadata keys", () => { + const error = new TestError(); + + expect(formatLogMetadataForTest({ error, err: error, reason: error })).toMatchObject({ + error: { + name: "TestError", + message: "test failure", + code: "TEST_CODE", + statusCode: 418, + }, + err: { + name: "TestError", + message: "test failure", + code: "TEST_CODE", + statusCode: 418, + }, + reason: { + name: "TestError", + message: "test failure", + code: "TEST_CODE", + statusCode: 418, + }, + }); + }); + + it("preserves plain metadata", () => { + expect( + formatLogMetadataForTest({ context: "bot", signal: "SIGINT", count: 2 }), + ).toEqual({ context: "bot", signal: "SIGINT", count: 2 }); + }); +}); \ No newline at end of file