Files
KDL_WORK/kdl-wasm/web/tests/docs/flowAssetCoverage.test.ts
2026-06-28 08:20:33 +08:00

29 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { join } from "node:path";
import { FLOW_ASSET_MAPPINGS, validateFlowAssetCoverage } from "../../src/docs/index.js";
const FLOW_ROOT = join(process.cwd(), "work/doc/通用机器人项目功能与数据流程图-png");
describe("flow asset coverage", () => {
it("maps every Mermaid and PNG flow asset to tasks and evidence", () => {
const result = validateFlowAssetCoverage(FLOW_ROOT);
expect(result.ok).toBe(true);
expect(result.assets.map((asset) => asset.id)).toEqual(["flow-01", "flow-02", "flow-03", "flow-04", "flow-05"]);
expect(result.assets.every((asset) => asset.mermaidBytes > 0 && asset.pngBytes > 0)).toBe(true);
expect(result.assets.every((asset) => asset.evidence === "EV-211")).toBe(true);
expect(result.assets.every((asset) => asset.tasks.some((task) => task.startsWith("KW-211")))).toBe(true);
expect(result.diagnostics).toEqual([]);
});
it("keeps the expected coverage contract stable", () => {
expect(FLOW_ASSET_MAPPINGS).toEqual([
expect.objectContaining({ id: "flow-01", tasks: expect.arrayContaining(["KW-211.1"]) }),
expect.objectContaining({ id: "flow-02", tasks: expect.arrayContaining(["KW-211.2"]) }),
expect.objectContaining({ id: "flow-03", tasks: expect.arrayContaining(["KW-211.3"]) }),
expect.objectContaining({ id: "flow-04", tasks: expect.arrayContaining(["KW-211.4"]) }),
expect.objectContaining({ id: "flow-05", tasks: expect.arrayContaining(["KW-211.5"]) })
]);
});
});