/*
Unit tests for logger covering createKernelLogger. It also guards the documented public contract and regression-sensitive edge cases.
- Not a contract source of truth — the module under test owns the authoritative behavior; fixtures are minimal scaffolding only.
- Fixtures stay inline and minimal so each case states its own setup.
- RFC-1311: Compass header sweep — declares the logger suite's contract for test-file scaffold coverage.
*/
// @ai-invariant fixtures must not couple to kernel internals beyond the public surface under test
import { test, expect, describe } from "vitest";
import { createKernelLogger } from "../logger.ts";
describe("createKernelLogger", () => {
test("creates a logger with all methods", () => {
const logger = createKernelLogger("pretty");
expect(typeof logger.info).toBe("function");
expect(typeof logger.warn).toBe("function");
expect(typeof logger.error).toBe("function");
expect(typeof logger.success).toBe("function");
expect(typeof logger.section).toBe("function");
expect(typeof logger.event).toBe("function");
expect(typeof logger.getEvents).toBe("function");
});
test("records info events", () => {
const logger = createKernelLogger("pretty");
logger.info("test message");
const events = logger.getEvents();
expect(events).toHaveLength(1);
expect(events[0]!.level).toBe("info");
expect(events[0]!.message).toBe("test message");
});
test("records warn events", () => {
const logger = createKernelLogger("pretty");
logger.warn("warning");
const events = logger.getEvents();
expect(events[0]!.level).toBe("warn");
});
test("records error events", () => {
const logger = createKernelLogger("pretty");
logger.error("error");
const events = logger.getEvents();
expect(events[0]!.level).toBe("error");
});
test("records section events", () => {
const logger = createKernelLogger("pretty");
logger.section("section title");
const events = logger.getEvents();
expect(events[0]!.level).toBe("section");
});
test("records success events", () => {
const logger = createKernelLogger("pretty");
logger.success("done");
const events = logger.getEvents();
expect(events[0]!.level).toBe("success");
});
test("event() records with default info level", () => {
const logger = createKernelLogger("pretty");
logger.event({ message: "custom event" });
const events = logger.getEvents();
expect(events[0]!.level).toBe("info");
expect(events[0]!.message).toBe("custom event");
});
test("getEvents returns empty array initially", () => {
const logger = createKernelLogger("pretty");
expect(logger.getEvents()).toEqual([]);
});
});