test.govlab/docs/core/selectors/record.selector.test.ts
test.govlab/docs/core/selectors/record.selector.test.ts is a file in Codebase Testing. 32 lines of code and 0 definitions.
import {
arrayField,
isNonEmptyStringArray,
recordField,
stringField,
stringsOf,
} from "@govlab/docs/core/selectors/record.selector.ts";
import { describe, expect, it } from "vitest";
import { byString } from "@govlab/docs/core/selectors/base.selector.ts";
const RECORD = { list: [1, "a"], name: "x", nested: { k: "v" } };
describe("the record selectors", () => {
it("read a field by its shape and fall back when the shape differs", () => {
expect(recordField(RECORD, "nested")).toStrictEqual({ k: "v" });
expect(recordField(RECORD, "list")).toBeNull();
expect(stringField(RECORD, "name")).toBe("x");
expect(stringField(RECORD, "list")).toBeNull();
expect(arrayField(RECORD, "list")).toStrictEqual([1, "a"]);
expect(arrayField(RECORD, "name")).toStrictEqual([]);
expect(stringsOf(RECORD.list)).toStrictEqual(["a"]);
expect([
isNonEmptyStringArray(["a"]),
isNonEmptyStringArray(["a", " "]),
isNonEmptyStringArray("a"),
]).toStrictEqual([true, false, false]);
});
});
describe("byString", () => {
it("builds a comparator over a string key", () => {
const sorted = [{ id: "b" }, { id: "a" }].toSorted(byString((item) => item.id));
expect(sorted.map((item) => item.id)).toStrictEqual(["a", "b"]);
});
});