29 lines
1.5 KiB
TypeScript
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"]) })
|
|
]);
|
|
});
|
|
});
|