test.govlab/docs/core/validators/manifest.validator.test.ts
test.govlab/docs/core/validators/manifest.validator.test.ts is a file in Codebase Testing. 44 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { validateManifest } from "@govlab/docs/core/validators/manifest.validator.ts";
const VALID = {
ecosystem: "typescript",
incompatibleWith: [],
label: "X",
maturity: "stable",
overlaps: [],
summary: "y",
supersedes: [],
visibility: { hidden: false, private: false },
};
describe("validateManifest", () => {
it("accepts a well-formed manifest and refuses one that is not an object", () => {
expect(validateManifest(VALID)).toStrictEqual([]);
expect(validateManifest("x")).toHaveLength(1);
});
it("reports missing required fields and a missing visibility block", () => {
const errors = validateManifest({ visibility: {} });
expect(errors.some((error) => error.includes("label"))).toBe(true);
expect(errors.some((error) => error.includes("maturity"))).toBe(true);
expect(
validateManifest({ label: "a", maturity: "stable", summary: "b" }).some((error) =>
error.includes("visibility"),
),
).toBe(true);
});
it("reports a declared computed field and an unknown key", () => {
const errors = validateManifest({ ...VALID, bogus: 1, requires: [] });
expect(errors.some((error) => error.includes("computed field 'requires'"))).toBe(true);
expect(errors.some((error) => error.includes("unknown key 'bogus'"))).toBe(true);
});
it("reports a malformed relationship, capability list and visibility flag", () => {
const errors = validateManifest({
...VALID,
capabilities: [""],
overlaps: [{ package: "a" }],
visibility: { private: "yes" },
});
expect(errors.some((error) => error.includes("overlaps"))).toBe(true);
expect(errors.some((error) => error.includes("capabilities"))).toBe(true);
expect(errors.some((error) => error.includes("visibility.private"))).toBe(true);
});
});