test.build/core/registries/producer.registry.test.ts

test.build/core/registries/producer.registry.test.ts is a file in Codebase Testing. 27 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { registerProducer, registeredProducers } from "@banes-lab/build-scripts/core/registries/producer.registry.ts";
import { PRODUCER_SUFFIX } from "@banes-lab/build-scripts/configuration/constants/graph.constants.ts";
import { defineProducer } from "@banes-lab/build-scripts/core/factories/producer.factory.ts";
import { duplicateProducer } from "@banes-lab/build-scripts/configuration/strings/graph.strings.ts";
import { importFolder } from "@banes-lab/build-scripts/core/loaders/folder.loader.ts";

const EMPTY = { edges: [], nodes: [] };

describe("the graph producer registry", () => {
    it("registers every producer file the discovery folder holds, once each", async () => {
        await importFolder("app.graphProducers", PRODUCER_SUFFIX);
        const names = registeredProducers().map((producer) => producer.name);
        expect(names).toContain("ontology");
        expect(names).toContain("source");
        expect(new Set(names).size).toBe(names.length);
    });

    it("refuses a second producer under a registered name", () => {
        defineProducer({ name: "probe-producer", produce: () => EMPTY });
        expect(() => defineProducer({ name: "probe-producer", produce: () => EMPTY })).toThrow(
            duplicateProducer("probe-producer"),
        );
    });

    it("lists a producer registered directly among the registered ones", () => {
        const producer = { name: "direct-producer", produce: () => EMPTY };
        registerProducer(producer);
        expect(registeredProducers()).toContain(producer);
    });
});