test.build/core/resolvers/rule.resolver.test.ts

test.build/core/resolvers/rule.resolver.test.ts is a file in Codebase Testing. 34 lines of code and 0 definitions.

import { catalogRuleRecord, ruleRecordsOf } from "@banes-lab/build-scripts/core/resolvers/rule.resolver.ts";
import { describe, expect, it } from "vitest";

const TRANSIT = "architecture:encryption-in-transit";
const ACCESS = "architecture:access-control";

describe("ruleRecordsOf", () => {
    it("resolves a rule id to the one site record its canonical concepts declare", () => {
        const resolved = ruleRecordsOf(
            [
                { canonical: ["encryption-in-transit"], ruleId: "tls/only" },
                { canonical: ["encryption-in-transit", "access-control"], ruleId: "mixed/rule" },
                { ruleId: "bare/rule" },
            ],
            new Set([TRANSIT, ACCESS]),
        );
        expect(resolved.get("tls/only")).toBe(TRANSIT);
        expect(resolved.has("mixed/rule")).toBe(false);
        expect(resolved.has("bare/rule")).toBe(false);
    });

    it("merges the concepts every tool declares for one rule id", () => {
        const resolved = ruleRecordsOf(
            [
                { canonical: ["encryption-in-transit"], ruleId: "shared" },
                { canonical: ["access-control"], ruleId: "shared" },
            ],
            new Set([TRANSIT, ACCESS]),
        );
        expect(resolved.has("shared")).toBe(false);
    });
});

describe("catalogRuleRecord", () => {
    it("answers no record for a rule id when the site holds none of its records", () => {
        expect(catalogRuleRecord(new Set())("no-var")).toBeNull();
    });
});