test.govlab/docs/core/validators/reference.validator.test.ts
test.govlab/docs/core/validators/reference.validator.test.ts is a file in Codebase Testing. 47 lines of code and 0 definitions.
import { DOC_VERBS, REF_CLAIMS } from "@govlab/docs/configuration/constants/verb.constants.ts";
import { describe, expect, it } from "vitest";
import { refConstructs, resolveRefs } from "@govlab/docs/core/validators/reference.validator.ts";
import { ROOT } from "@ssot/paths";
const options = { claims: REF_CLAIMS, verbs: DOC_VERBS };
const context = { roots: [ROOT], verbs: DOC_VERBS };
const defectCodes = function defectCodes(source: string): string[] {
return refConstructs(source, options).defects.map((defect) => defect.code);
};
describe("refConstructs", () => {
it("reads a declared verb with a backticked identifier and a quoted path as a construct", () => {
const scan = refConstructs('body\n\ndefined at: `ROOT` "`package.json`"\n', options);
expect(scan.defects).toStrictEqual([]);
expect(
scan.constructs.map((construct) => [construct.verb, construct.identifier, construct.path]),
).toStrictEqual([["defined at", "ROOT", "package.json"]]);
});
it("reports an undeclared verb and yields nothing for plain prose", () => {
expect(defectCodes('body\n\nproved by: `ROOT` "`package.json`"\n')).toStrictEqual(["unknown-verb"]);
expect(refConstructs("body\n\nsee: the guide next door.\n", options)).toStrictEqual({
constructs: [],
defects: [],
});
});
it("reports an unsatisfied claim and an unknown claim", () => {
expect(defectCodes("---\nvalidates: [identifiers]\n---\n\nbody\n")).toStrictEqual(["unsatisfied-claim"]);
expect(defectCodes("---\nvalidates: [colors]\n---\n\nbody\n")).toStrictEqual(["unknown-claim"]);
});
it("skips a construct inside a fence", () => {
expect(
refConstructs('body\n\n```\ndefined at: `ROOT` "`package.json`"\n```\n', options).constructs,
).toStrictEqual([]);
});
});
describe("resolveRefs", () => {
it("reports an undeclared verb and a path no root resolves, and stays silent on nothing", () => {
const unknown = resolveRefs(
[{ col: 1, identifier: "ROOT", line: 3, path: "package.json", verb: "proved by" }],
context,
);
expect(unknown.map((finding) => finding.line)).toStrictEqual([3]);
expect(
resolveRefs([{ col: 1, identifier: "ROOT", line: 1, path: "no/such/file.ts", verb: "see" }], context),
).toHaveLength(1);
expect(resolveRefs([], context)).toStrictEqual([]);
});
});