test.scripts/core/selectors/rate.selector.test.ts
test.scripts/core/selectors/rate.selector.test.ts is a file in Codebase Testing. 24 lines of code and 0 definitions.
import { describe, expect, it } from "vitest";
import { recordsIn, statedCount, statedUpdate } from "@project/scripts/core/selectors/rate.selector.ts";
import { PAGE } from "../analyzers/rate.fixture.ts";
import { unreadableRecord } from "@project/scripts/configuration/strings/rate.strings.ts";
describe("recordsIn and the stated header", () => {
it("reads every embedded record once, and the count and update date the page states", () => {
expect(recordsIn(PAGE).map((record) => record.id)).toStrictEqual(["a", "b", "c", "d"]);
expect(statedCount(PAGE)).toBe(4);
expect(statedUpdate(PAGE)).toBe("23 Mar 2026");
});
it("reads a range as its midpoint and skips a record with no rate", () => {
const ranged = '{"source":"reddit","externalId":"r","dayRateMin":600,"dayRateMax":800,"jobTitle":"Tech Lead"}';
const rateless = '{"source":"reddit","externalId":"n","jobTitle":"Tech Lead"}';
expect(recordsIn(ranged + rateless).map((record) => [record.id, record.rate])).toStrictEqual([["r", 700]]);
});
it("reads nothing from a page with no records and no header", () => {
expect(recordsIn("<html></html>")).toStrictEqual([]);
expect(statedCount("<html></html>")).toBeNull();
});
it("fails loudly on a record that is not valid JSON, naming where it starts", () => {
const broken = '<i>{"source":"x", oops}</i>';
expect(() => recordsIn(broken)).toThrow(unreadableRecord(broken.indexOf("{")));
});
});