import { describe, expect, it } from "vitest"; import { z } from "zod"; import cases from "../../../../tests/fixtures/chart-publication-cases.json"; import examples from "../../../../tests/fixtures/unified-presentation.jsonl?raw"; import { createViewSchemas, safeChartInput, safeChartPublicationInput } from "./command-schema"; describe("shared chart publication conformance", () => { it.each(cases)("$name", ({ chart, accepted }) => { expect(safeChartPublicationInput.safeParse(chart).success).toBe(accepted); for (const publication of [false, true]) { const schema = createViewSchemas(z, publication, true).command; expect(schema.safeParse({ action: "open_chart", chart_id: "comparison", evidence_refs: ["dev:synthetic"], chart }).success).toBe(accepted); } }); it("keeps historical mixed charts structurally readable", () => { expect(safeChartInput.safeParse(cases.find((item) => item.name === "old mixed charts are read only")!.chart).success).toBe(true); }); it("accepts every exported command example through the publication schema", () => { const schema = createViewSchemas(z, true).command; for (const record of examples.trim().split("\n").map((line) => JSON.parse(line))) if (record.record_type === "presentation") expect(schema.safeParse(record.command).success).toBe(true); }); });