test.govlab/patterns/core/factories/axis.factory.test.ts

test.govlab/patterns/core/factories/axis.factory.test.ts is a file in Codebase Testing. 25 lines of code and 0 definitions.

import { CoordinateError, coordinate } from "@govlab/patterns/core/factories/axis.factory.ts";
import { describe, expect, it } from "vitest";
import { REPRESENTATION_AXIS } from "@govlab/patterns/configuration/generated/axis.generated.ts";
import { unknownTag } from "@govlab/patterns/configuration/strings/axis.strings.ts";

const INPUT = { analysis: "frequency", ontology: "probability", reasoning: "explanation", representation: "symbolic" };

describe("coordinate", () => {
    it("stamps all four axes and freezes the result", () => {
        const stamped = coordinate(INPUT);
        expect(stamped).toStrictEqual(INPUT);
        expect(Object.isFrozen(stamped)).toBe(true);
    });

    it("accepts every representation the ontology declares", () => {
        for (const representation of REPRESENTATION_AXIS) {
            expect(coordinate({ ...INPUT, representation }).representation).toBe(representation);
        }
    });

    it("refuses an off-vocabulary tag on any axis with a CoordinateError", () => {
        expect(() => coordinate({ ...INPUT, ontology: "nonsense" })).toThrow(CoordinateError);
        expect(() => coordinate({ ...INPUT, analysis: "nonsense" })).toThrow(CoordinateError);
        expect(() => coordinate({ ...INPUT, reasoning: "guessing" })).toThrow(CoordinateError);
        expect(() => coordinate({ ...INPUT, representation: "graphical" })).toThrow(
            unknownTag("representation", "graphical"),
        );
    });
});