test.govlab/context/configuration/constants/reason.constants.test.ts

test.govlab/context/configuration/constants/reason.constants.test.ts is a file in Codebase Testing. 29 lines of code and 0 definitions.

import {
    EVIDENCE_SOURCE_VALUES,
    PREDICATE_TYPE_VALUES,
    VERDICTS,
} from "@govlab/context/configuration/constants/reason.constants.ts";
import { asClosed, asClosedArray } from "@govlab/context/core/normalizers/field.normalizer.ts";
import assert from "node:assert/strict";
import { test } from "vitest";

const acceptedOf = (values: readonly string[]): string[] =>
    values.map((value) => asClosed(values, value, "reason: a planted value"));

const refusal =
    (planted: string) =>
    (error: unknown): boolean =>
        error instanceof Error && error.message.includes(`declares "${planted}"`);

test("a verdict outside the verdict vocabulary fails the load", () => {
    assert.deepEqual(acceptedOf(VERDICTS), [...VERDICTS]);
    assert.throws(
        () => asClosedArray(VERDICTS, ["pass", "maybe"], "reason: a planted verdict domain"),
        refusal("maybe"),
    );
});

test("an evidence source outside the evidence source vocabulary fails the load", () => {
    assert.deepEqual(acceptedOf(EVIDENCE_SOURCE_VALUES), [...EVIDENCE_SOURCE_VALUES]);
    assert.throws(() => asClosed(EVIDENCE_SOURCE_VALUES, "hearsay", "reason: a planted source"), refusal("hearsay"));
});

test("a predicate type outside the predicate type vocabulary fails the load", () => {
    assert.deepEqual(acceptedOf(PREDICATE_TYPE_VALUES), [...PREDICATE_TYPE_VALUES]);
    assert.throws(() => asClosed(PREDICATE_TYPE_VALUES, "vibes", "reason: a planted type"), refusal("vibes"));
});