import { describe, expect, it, vi } from "vitest"; import { createHttpClient } from "../../../src/adapters/http/client.ts"; import { createDemoSessionAdapter } from "../../../src/adapters/auth/external-session-adapter.ts"; import { createReferenceHttpGateway, } from "../../../src/features/reference-feature/adapters/reference-http-gateway.ts"; import { createReferenceFeatureInput } from "../../../src/features/reference-feature/application/reference-feature-api.ts"; import { REFERENCE_FEATURE_CONTRACT } from "../../../src/features/reference-feature/contracts/reference-feature-contract.ts"; import { mapReferenceOperation } from "../../../src/features/reference-feature/contracts/reference-mapper.ts"; import { validateReferencePayload, validateReferenceRequest, } from "../../../src/features/reference-feature/contracts/reference-schemas.ts"; describe("reference feature diagnostics correlation", () => { it("preserves route, operation and request correlation through the vertical path", async () => { const record = vi.fn(); const operations = REFERENCE_FEATURE_CONTRACT.apiOperations as Readonly< Record< string, ReturnType< NonNullable[0]["getOperation"]> > > >; const client = createHttpClient({ baseUrl: "https://api.test", authSession: createDemoSessionAdapter("authenticated"), fetcher: async () => Response.json({ success: true, data: [{ id: "reference-1", name: "Reference" }], meta: { requestId: "safe-request", traceId: "safe-trace" }, }), getOperation(operationId) { const operation = operations[operationId]; if (!operation) throw new Error("Unregistered reference operation"); return operation; }, validatePayload: validateReferencePayload, validateRequest: validateReferenceRequest, mapPayload: mapReferenceOperation, correlationIdFactory: () => "reference-correlation", diagnostics: { record }, scheduler: { setTimeout: () => 1, clearTimeout: () => {}, }, }); const application = createReferenceFeatureInput( createReferenceHttpGateway(client), ); await expect( application.listResources({ limit: 20 }), ).resolves.toMatchObject({ ok: true }); expect(record).toHaveBeenCalledOnce(); expect(record).toHaveBeenCalledWith({ level: "info", eventId: "http.request.completed", context: expect.objectContaining({ route_id: "REFERENCE_RESOURCE_LIST", operation_id: "LIST_REFERENCE_RESOURCES", correlation_id: "reference-correlation", outcome: "success", }), }); }); });