test.govlab/docs/core/validators/section.validator.test.ts
test.govlab/docs/core/validators/section.validator.test.ts is a file in Codebase Testing. 36 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { offSchema } from "@govlab/docs/core/validators/section.validator.ts";
const schema = {
metaConcerns: [
{ concern: "Purpose", order: 1, required: true },
{ concern: "API", order: 2, required: true },
{ concern: "Notes", order: 3, required: false },
],
type: "readme",
};
describe("offSchema", () => {
it("reports a missing required section", () => {
const defects = offSchema("## Purpose\n\nx\n", schema);
expect(defects.map((defect) => defect.concern)).toStrictEqual(["API"]);
expect(defects[0]?.remediation).toContain("Missing required section");
});
it("reports required sections out of order", () => {
const defects = offSchema("## API\n\nx\n\n## Purpose\n\ny\n", schema);
expect(defects.some((defect) => defect.concern === "API" && defect.remediation.includes("out of order"))).toBe(
true,
);
});
it("accepts reordered sections when the schema is unordered, and an alias for a section", () => {
const unordered = { ...schema, ordered: false };
expect(offSchema("## API\n\nx\n\n## Purpose\n\ny\n", unordered)).toStrictEqual([]);
const aliased = {
metaConcerns: [
{ aliases: ["What is it"], concern: "Purpose", order: 1, required: true },
{ concern: "API", order: 2, required: true },
],
type: "readme",
};
expect(offSchema("## What is it\n\nx\n\n## API\n\ny\n", aliased)).toStrictEqual([]);
expect(offSchema("## What is it\n\nx\n", aliased).map((defect) => defect.concern)).toStrictEqual(["API"]);
});
});