test.govlab/patterns/core/converters/finding.distribution.converter.test.ts

test.govlab/patterns/core/converters/finding.distribution.converter.test.ts is a file in Codebase Testing. 36 lines of code and 0 definitions.

import { describe, expect, it } from "vitest";
import { DistributionAccumulator } from "@govlab/patterns/core/aggregators/representation.distribution.aggregator.ts";
import { distributionFindings } from "@govlab/patterns/core/converters/finding.distribution.converter.ts";
import { isReasoningRung } from "@govlab/patterns/core/predicates/axis.predicate.ts";

const summaryOf = function summaryOf(records: readonly unknown[]): ReturnType<DistributionAccumulator["result"]> {
    const accumulator = new DistributionAccumulator("color");
    accumulator.update(records);
    return accumulator.result();
};

describe("distributionFindings", () => {
    const findings = distributionFindings(
        "color",
        summaryOf([{ color: "red" }, { color: "red" }, { color: "blue" }, { color: "green" }]),
    );

    it("emits coordinate-complete findings for every analysis it runs", () => {
        const names = findings.map((finding) => finding.name);
        expect(names).toStrictEqual([
            "frequency",
            "uniformity",
            "recency",
            "temperature",
            "drift",
            "complexity",
            "mode-prediction",
        ]);
        expect(findings.every((finding) => isReasoningRung(finding.coordinate.reasoning))).toBe(true);
    });

    it("attaches the uniformity null model to its finding and the support to every finding", () => {
        expect(findings.find((finding) => finding.name === "uniformity")?.significance?.nullModel).toBe("uniformity");
        expect(findings.every((finding) => finding.support === 4)).toBe(true);
    });

    it("adds a seasonality finding for ISO date values", () => {
        const dated = distributionFindings("day", summaryOf([{ color: "2026-01-01" }, { color: "2026-02-01" }]));
        expect(dated.map((finding) => finding.name)).toContain("seasonality");
    });
});