test.govlab/docs/core/loaders/manifest.loader.test.ts

test.govlab/docs/core/loaders/manifest.loader.test.ts is a file in Codebase Testing. 64 lines of code and 0 definitions.

import { afterAll, describe, expect, it } from "vitest";
import {
    declaredEntries,
    discoverManifests,
    discoverModules,
    manifestBarrels,
    readManifest,
    readPackageJson,
    unresolvedEntryPatterns,
} from "@govlab/docs/core/loaders/manifest.loader.ts";
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
import { absolutePath } from "@ssot/paths";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { writeVerbatim } from "@govlab/canonical-write";

const SHAPED = { label: "My Mod", maturity: "stable", visibility: { hidden: false, private: false } };

const moduleRoot = mkdtempSync(join(tmpdir(), "doclab-module-"));
writeVerbatim(join(moduleRoot, "_manifest.json"), JSON.stringify({ ...SHAPED, entries: ["index.ts", "missing/*.ts"] }));
writeVerbatim(
    join(moduleRoot, "package.json"),
    JSON.stringify({ dependencies: { a: "1", b: 2 }, exports: { ".": { default: "x" } }, name: "m" }),
);
writeVerbatim(join(moduleRoot, "index.ts"), "");

const tree = mkdtempSync(join(tmpdir(), "doclab-tree-"));
mkdirSync(join(tree, "mymod"));
mkdirSync(join(tree, "other"));
writeVerbatim(join(tree, "mymod", "_manifest.json"), JSON.stringify(SHAPED));
writeVerbatim(join(tree, "other", "_manifest.json"), JSON.stringify({ label: "no maturity" }));

afterAll(() => {
    rmSync(moduleRoot, { force: true, recursive: true });
    rmSync(tree, { force: true, recursive: true });
});

describe("readManifest and readPackageJson", () => {
    it("read the typed fields and fall back to empty records", () => {
        expect(readManifest(moduleRoot)["label"]).toBe("My Mod");
        expect(readPackageJson(moduleRoot)).toStrictEqual({
            dependencies: { a: "1" },
            exports: { ".": { default: "x" } },
            name: "m",
        });
        expect(readManifest(join(moduleRoot, "absent"))).toStrictEqual({});
    });
});

describe("discoverManifests and discoverModules", () => {
    it("find a docs-shaped manifest under any root and ignore an unshaped one", () => {
        expect(discoverManifests(tree).map((module) => [module.slug, module.group])).toStrictEqual([
            ["mymod", "mymod"],
        ]);
    });

    it("tag each workspace module with its ecosystem", () => {
        expect(discoverModules().every((module) => typeof module.ecosystemHint === "string")).toBe(true);
    });
});

describe("the declared entries", () => {
    it("expand the declared patterns and report one that matches nothing", () => {
        expect(declaredEntries(moduleRoot)).toStrictEqual(["index.ts", "missing/*.ts"]);
        expect(manifestBarrels(moduleRoot)).toStrictEqual([join(moduleRoot, "index.ts")]);
        expect(unresolvedEntryPatterns(moduleRoot)).toStrictEqual(["missing/*.ts"]);
    });

    it("tell an absent declaration from an explicitly empty one", () => {
        expect(declaredEntries(absolutePath("govlab.context"))).toBeNull();
        expect(declaredEntries(absolutePath("codebase.testing"))).toStrictEqual([]);
    });
});