test.build/core/predicates/exclusion.predicate.test.ts

test.build/core/predicates/exclusion.predicate.test.ts is a file in Codebase Testing. 25 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { exclusionOf, isPublished } from "@banes-lab/build-scripts/core/predicates/exclusion.predicate.ts";
import { absolutePath } from "@ssot/paths";
import { join } from "node:path";

describe("exclusionOf", () => {
    it("names the reason a file stays out of a published tree", () => {
        const vendorFile = join(absolutePath("govlab.quality.catalog.data"), "rules.json");
        expect(exclusionOf(vendorFile)).toBe("third-party-rule-text");
        expect(exclusionOf("/member/runtime/backups/nginx.backup.conf")).toBe("backup");
        expect(exclusionOf("/member/cards/home.PNG")).toBe("rendered-media");
        expect(exclusionOf("/member/grammars/tree-sitter.wasm")).toBe("binary");
    });

    it("publishes a file that is not excluded or inherited, and a generated one only where the tree allows it", () => {
        const facts = { generated: false, inherited: false };
        expect(isPublished(facts, false)).toBe(true);
        expect(isPublished({ ...facts, excluded: "backup" }, true)).toBe(false);
        expect(isPublished({ ...facts, inherited: true }, true)).toBe(false);
        expect(isPublished({ ...facts, generated: true }, false)).toBe(false);
        expect(isPublished({ ...facts, generated: true }, true)).toBe(true);
    });

    it("keeps a text file in the tree", () => {
        expect(exclusionOf("/member/core/a.ts")).toBeNull();
        expect(exclusionOf("/member/assets/logo.svg")).toBeNull();
    });
});