# test.govlab/docs/core/selectors/record.selector.test.ts

> 32 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-docs-core-selectors-record-selector-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/docs/core/selectors/record.selector.test.ts.txt

Listed in [test.govlab/docs/core/selectors](https://banes-lab.com/api/source/testing/test.govlab/docs/core/selectors.md), after [test.govlab/docs/core/selectors/metadata.selector.test.ts](https://banes-lab.com/source/testing/test.govlab/docs/core/selectors/metadata.selector.test.ts.md).

## Contained in

- [test.govlab/docs/core/selectors](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-docs-core-selectors.md)

## Source

```typescript
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"]);
    });
});
```
