import { afterEach, describe, expect, it, vi } from "vitest"; import { createConsoleSink } from "../src/index"; import type { LogEvent } from "../src/index"; function event(overrides: Partial = {}): LogEvent { return { level: "debug", namespace: "API", arguments: ["hello"], timestamp: new Date(), environment: "development", sendToSentryLogs: false, sendToSentryIssue: false, sendToConsole: true, ...overrides, }; } describe("createConsoleSink", () => { afterEach(() => { vi.restoreAllMocks(); }); it("appends [async] to the namespace label when event.async is set", () => { const debug = vi.spyOn(console, "debug").mockImplementation(() => undefined); createConsoleSink().emit(event({ async: true })); expect(debug).toHaveBeenCalled(); const first = debug.mock.calls[0]?.[0]; expect(String(first)).toContain("[API][async]"); }); it("omits [async] for synchronous events", () => { const debug = vi.spyOn(console, "debug").mockImplementation(() => undefined); createConsoleSink().emit(event()); expect(debug).toHaveBeenCalled(); const first = debug.mock.calls[0]?.[0]; expect(String(first)).toContain("[API]"); expect(String(first)).not.toContain("[async]"); }); });