From c1373069241980b4cc5263f5a9f6f4bf2b010e3d Mon Sep 17 00:00:00 2001 From: Shay Date: Tue, 23 Jun 2026 15:51:45 -0700 Subject: [PATCH] test(workbench-ui): cover practice endpoint helpers --- .../trace/practiceEvidenceEndpoint.test.ts | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 workbench-ui/src/app/trace/practiceEvidenceEndpoint.test.ts diff --git a/workbench-ui/src/app/trace/practiceEvidenceEndpoint.test.ts b/workbench-ui/src/app/trace/practiceEvidenceEndpoint.test.ts new file mode 100644 index 00000000..81b7887a --- /dev/null +++ b/workbench-ui/src/app/trace/practiceEvidenceEndpoint.test.ts @@ -0,0 +1,38 @@ +import { describe, expect, it, vi } from "vitest"; +import type { PracticeEvidence } from "../../types/practiceEvidence"; +import { + fetchTracePracticeWith, + tracePracticePath, + tracePracticeReproducer, +} from "./practiceEvidenceEndpoint"; + +const evidence: PracticeEvidence = { + schema_version: "practice_evidence_v1", + turn_id: 7, + status: "missing_evidence", + missing_reason: "sealed practice evidence was not persisted for this turn", + record_kind: null, + practice_disposition: null, + chain: [], + sealed_trace: null, + trace_refusal: null, + diagnostic_only: true, + serving_allowed: false, + mutation_allowed: false, + replay_execution_allowed: false, + replay_executed_by_workbench: false, +}; + +describe("practice evidence endpoint helpers", () => { + it("builds encoded trace practice paths", () => { + expect(tracePracticePath(7)).toBe("/trace/7/practice"); + expect(tracePracticeReproducer(7)).toBe("curl /trace/7/practice"); + }); + + it("fetches practice evidence through an injected fetcher", async () => { + const fetcher = vi.fn((_path: string): Promise => Promise.resolve(evidence as T)); + + await expect(fetchTracePracticeWith(7, fetcher)).resolves.toBe(evidence); + expect(fetcher).toHaveBeenCalledWith("/trace/7/practice"); + }); +});