test.content/core/loaders/coordination.loader.test.ts

test.content/core/loaders/coordination.loader.test.ts is a file in Codebase Testing. 44 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
import {
    packageFiles,
    packagePath,
    populatedFolders,
    shippedEntries,
} from "@banes-lab/content/core/loaders/coordination.loader.ts";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const seeded = function seeded(): string {
    const root = mkdtempSync(join(tmpdir(), "coordination-"));
    mkdirSync(join(root, "roles"));
    mkdirSync(join(root, "findings"));
    mkdirSync(join(root, "node_modules"));
    writeVerbatim(join(root, "package.json"), JSON.stringify({ files: ["README.md", "roles", "findings", "gone.md"] }));
    writeVerbatim(join(root, "README.md"), "a readme\n");
    writeVerbatim(join(root, "roles", ".gitkeep"), "");
    writeVerbatim(join(root, "findings", "a.finding.md"), "a deployment's finding\n");
    writeVerbatim(join(root, "findings", "image.png"), "binary\n");
    writeVerbatim(join(root, "node_modules", "dependency.ts"), "a dependency\n");
    return root;
};

describe("coordination loader", () => {
    it("reads the ship list from the manifest and drops entries that do not exist", () => {
        const root = seeded();
        const entries = shippedEntries(root);
        rmSync(root, { force: true, recursive: true });
        expect(entries).toStrictEqual(["package.json", "README.md", "roles", "findings"]);
    });

    it("walks the text files the package ships and nothing it does not", () => {
        const root = seeded();
        const files = packageFiles(root).map((file) => packagePath(root, file));
        rmSync(root, { force: true, recursive: true });
        expect(files).toStrictEqual(["findings/a.finding.md", "package.json", "README.md"]);
    });

    it("reports a born-empty folder holding more than its keep file", () => {
        const root = seeded();
        const populated = populatedFolders(root);
        rmSync(root, { force: true, recursive: true });
        expect(populated).toStrictEqual(["findings/a.finding.md", "findings/image.png"]);
    });
});