test.govlab/quality/core/selectors/record.selector.test.ts
test.govlab/quality/core/selectors/record.selector.test.ts is a file in Codebase Testing. 46 lines of code and 0 definitions.
import {
arrayField,
boolField,
firstNumberField,
firstRecord,
hasField,
isRecord,
numberField,
numericField,
recordAt,
recordsAt,
stringArrayField,
stringArrayFieldOr,
stringField,
} from "@govlab/quality/core/selectors/record.selector.ts";
import { expect, test } from "vitest";
const DEFAULT = 7;
const record = {
a: "x",
flags: ["b", 1],
list: [{ n: 1 }, 2],
n: 3,
nested: { k: 1 },
numeric: "4",
on: true,
span: [5],
};
test("record selectors read typed fields with fallbacks", () => {
expect(isRecord(record)).toBe(true);
expect(recordAt(record, "nested")).toStrictEqual({ k: 1 });
expect(recordAt(record, "a")).toStrictEqual({});
expect(recordsAt(record, "list")).toStrictEqual([{ n: 1 }]);
expect(firstRecord([])).toStrictEqual({});
expect(stringField(record, "a")).toBe("x");
expect(stringField(record, "n", "none")).toBe("none");
expect(numberField(record, "n", DEFAULT)).toBe(3);
expect(numberField(record, "a", DEFAULT)).toBe(DEFAULT);
expect(boolField(record, "on")).toBe(true);
expect(hasField(record, "missing")).toBe(false);
expect(arrayField(record, "flags")).toStrictEqual(["b", 1]);
expect(stringArrayField(record, "flags")).toStrictEqual(["b"]);
expect(stringArrayFieldOr(record, "missing", ["d"])).toStrictEqual(["d"]);
expect(numericField(record, "numeric", DEFAULT)).toBe(4);
expect(firstNumberField(record, "span", DEFAULT)).toBe(5);
expect(firstNumberField(record, "a", DEFAULT)).toBe(DEFAULT);
});