test.govlab/docs/core/plugins/manifest.quality.plugin.test.ts

test.govlab/docs/core/plugins/manifest.quality.plugin.test.ts is a file in Codebase Testing. 26 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { isPlainRecord } from "@govlab/docs/core/predicates/record.predicate.ts";
import { plugin } from "@govlab/docs/core/plugins/manifest.quality.plugin.ts";

const KNOWN_CONCEPT = "content-strings";

const errorsOf = function errorsOf(record: Record<string, unknown>): string[] {
    return isPlainRecord(record) ? (plugin.section?.validate?.(record) ?? []) : [];
};

describe("the quality manifest plugin", () => {
    it("validates governedBy against the canonical concepts", () => {
        expect(errorsOf({ governedBy: [KNOWN_CONCEPT, "csp"] })).toStrictEqual([]);
        expect(errorsOf({})).toStrictEqual([]);
        expect(
            errorsOf({ governedBy: [KNOWN_CONCEPT, "not-a-concept"] }).some((error) => error.includes("not-a-concept")),
        ).toBe(true);
        expect(errorsOf({ governedBy: KNOWN_CONCEPT }).some((error) => error.includes("array"))).toBe(true);
        expect(plugin.section?.keys).toStrictEqual(["governedBy"]);
    });

    it("contributes a declared governedBy and leaves an undeclared module without one", () => {
        const entry = { category: null, value: "x" };
        plugin.contribute?.({ governedBy: [KNOWN_CONCEPT] }, entry);
        expect(entry).toHaveProperty("governedBy", [KNOWN_CONCEPT]);
        const empty = { category: null, value: "x" };
        plugin.contribute?.({}, empty);
        expect(empty).not.toHaveProperty("governedBy");
    });
});