test.govlab/docs/core/registries/manifest.registry.test.ts
test.govlab/docs/core/registries/manifest.registry.test.ts is a file in Codebase Testing. 63 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import type { ManifestModule } from "@govlab/docs/types/manifest.types.ts";
import { ManifestRegistry } from "@govlab/docs/core/registries/manifest.registry.ts";
const REGISTRY_TIMEOUT_MS = 60_000;
const moduleOf = function moduleOf(slug: string, manifest: Record<string, unknown>, deps: string[]): ManifestModule {
return {
dir: slug,
group: slug === "app" ? "apps" : "utils",
label: slug,
manifest,
pkg: { dependencies: Object.fromEntries(deps.map((dep) => [dep, "*"])) },
relPath: slug,
slug,
};
};
const SHAPED = { label: "m", maturity: "stable", summary: "A module.", visibility: { hidden: false, private: false } };
const MODULES = [
moduleOf("app", { ...SHAPED, capabilities: ["render"], domains: [{ meta: "ai", sub: "agents" }] }, [
"@govlab/core",
]),
moduleOf("core", { ...SHAPED, visibility: { hidden: false, private: true } }, ["@govlab/leaf", "zod"]),
moduleOf("leaf", { ...SHAPED, maturity: "experimental" }, []),
];
const registry = new ManifestRegistry(MODULES, [
{
contribute: (_manifest, entry) => {
Object.assign(entry, { tagged: true });
},
name: "tag",
},
{ filter: (_manifest, module) => module?.slug === "leaf", name: "hide-leaf" },
]);
describe("ManifestRegistry", () => {
it("resolves transitive sibling requirements", () => {
expect(registry.requires("app")).toStrictEqual(["core", "leaf"]);
expect(registry.requires("leaf")).toStrictEqual([]);
});
it("queries by group, maturity, capability, domain and visibility", () => {
const slugs = (criteria: Parameters<ManifestRegistry["query"]>[0]): string[] =>
registry.query(criteria).map((module) => module.slug);
expect(slugs({ group: "apps" })).toStrictEqual(["app"]);
expect(slugs({ maturity: "experimental" })).toStrictEqual(["leaf"]);
expect(slugs({ capability: "render", domain: "ai" })).toStrictEqual(["app"]);
expect(slugs({ visibility: "private" })).toStrictEqual(["core"]);
expect(slugs({ visibility: "public" })).toStrictEqual(["app", "leaf"]);
});
it("builds the catalog through each plugin's filter and contribution", () => {
expect(registry.catalog()).toStrictEqual([
{ category: "apps", tagged: true, value: "app" },
{ category: "utils", tagged: true, value: "core" },
]);
expect(registry.validateAll()).toStrictEqual(["app: unknown key 'domains'"]);
});
it(
"creates itself from the workspace manifests and plugins",
async () => {
const live = await ManifestRegistry.create();
expect(live.modules.length).toBeGreaterThan(0);
expect(live.plugins.length).toBeGreaterThan(0);
},
REGISTRY_TIMEOUT_MS,
);
});