test.govlab/docs/core/formatters/coverage.formatter.test.ts
test.govlab/docs/core/formatters/coverage.formatter.test.ts is a file in Codebase Testing. 30 lines of code and 0 definitions.
import { blockingGaps, coverageRow, renderCoverage } from "@govlab/docs/core/formatters/coverage.formatter.ts";
import { describe, expect, it } from "vitest";
import type { ManifestModule } from "@govlab/docs/types/manifest.types.ts";
const moduleOf = function moduleOf(label: string, manifest: Record<string, unknown>): ManifestModule {
return { dir: label, group: "g", label, manifest, pkg: {}, relPath: label, slug: label };
};
const COMPLETE = moduleOf("complete", { capabilities: ["x"], docs: { aiContext: "a" }, overlaps: [{}] });
const BARE = moduleOf("bare", {});
const PRIVATE = moduleOf("private", { capabilities: ["x"], visibility: { private: true } });
describe("coverageRow", () => {
it("lists the enrichment gaps of a module, sparing a private module the AI context", () => {
expect(coverageRow(COMPLETE).gaps).toStrictEqual([]);
expect(coverageRow(BARE).gaps).toStrictEqual(["no-capabilities", "no-ai-context", "no-relationships"]);
expect(coverageRow(PRIVATE)).toStrictEqual({ gaps: ["no-relationships"], isPrivate: true, slug: "private" });
});
});
describe("blockingGaps and renderCoverage", () => {
it("count only the blocking gaps and rank the modules with the most gaps first", () => {
const rows = [COMPLETE, BARE, PRIVATE].map(coverageRow);
expect(blockingGaps(rows)).toBe(2);
const lines = renderCoverage(rows);
expect(lines[0]).toContain("3 modules");
expect(lines.slice(4, 6)).toStrictEqual([
" bare — no-capabilities, no-ai-context, no-relationships",
" private [private] — no-relationships",
]);
expect(lines.at(-1)).toContain("2 enrichment gap(s)");
expect(renderCoverage([coverageRow(COMPLETE)]).at(-1)).toContain("complete");
});
});