Files
logger/test/sentry.test.ts
T
mifi 44f471653e
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/publish Pipeline was successful
feat(logger): add explicit Sentry event channel
2026-08-05 13:05:06 -03:00

29 lines
1.3 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import { createLogger } from "../src/index.js";
import { createSentrySink } from "../src/sentry.js";
describe("createSentrySink", () => {
it("captures errors and explicitly selected events with namespace and structured context", () => {
const scope = { setLevel: vi.fn(), setTag: vi.fn(), setExtras: vi.fn() };
const sentry = {
withScope: (callback: (value: typeof scope) => void) => callback(scope),
captureException: vi.fn(),
captureMessage: vi.fn(),
};
const logger = createLogger({
environment: "production",
namespace: "API",
sinks: [createSentrySink(sentry)],
});
const error = new Error("offline");
logger.warn("ignored");
logger.sentry.info("Cache warmed");
logger.error("Request failed", error, { requestId: "req_1" });
expect(sentry.captureMessage).toHaveBeenCalledWith("Cache warmed", "info");
expect(sentry.captureException).toHaveBeenCalledWith(error);
expect(scope.setLevel).toHaveBeenCalledWith("info");
expect(scope.setTag).toHaveBeenCalledWith("logger.namespace", "API");
expect(scope.setExtras).toHaveBeenCalledWith({ context_0: { requestId: "req_1" } });
});
});