26 lines
801 B
TypeScript
26 lines
801 B
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { asArray, asNumber, asRecord, asString } from "./projection";
|
|
|
|
describe("projection guards", () => {
|
|
it("asRecord accepts plain objects only", () => {
|
|
expect(asRecord({ a: 1 })).toEqual({ a: 1 });
|
|
expect(asRecord([1])).toBeNull();
|
|
expect(asRecord("x")).toBeNull();
|
|
expect(asRecord(null)).toBeNull();
|
|
});
|
|
|
|
it("asString / asNumber narrow primitives", () => {
|
|
expect(asString("s")).toBe("s");
|
|
expect(asString(1)).toBeNull();
|
|
expect(asNumber(4)).toBe(4);
|
|
expect(asNumber("4")).toBeNull();
|
|
expect(asNumber(NaN)).toBeNull();
|
|
});
|
|
|
|
it("asArray defaults to empty", () => {
|
|
expect(asArray([1, 2])).toEqual([1, 2]);
|
|
expect(asArray(undefined)).toEqual([]);
|
|
expect(asArray({})).toEqual([]);
|
|
});
|
|
});
|