mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-06-22 04:11:55 +10:00
71 lines
2.4 KiB
TypeScript
71 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { filterFieldValues } from "./field";
|
|
|
|
describe("filterFieldValues", () => {
|
|
it("returns map of fields whose values are non-empty", () => {
|
|
const fields = [{ key: "name" as const }, { key: "email" as const }];
|
|
const result = filterFieldValues({ name: "Alice", email: "alice@example.com" }, ...fields);
|
|
|
|
expect(result.size).toBe(2);
|
|
expect(result.get("name")).toEqual({ key: "name" });
|
|
expect(result.get("email")).toEqual({ key: "email" });
|
|
});
|
|
|
|
it("filters out fields with empty string values", () => {
|
|
const fields = [{ key: "name" as const }, { key: "email" as const }];
|
|
const result = filterFieldValues({ name: "Alice", email: "" }, ...fields);
|
|
|
|
expect(result.size).toBe(1);
|
|
expect(result.has("email")).toBe(false);
|
|
expect(result.has("name")).toBe(true);
|
|
});
|
|
|
|
it("filters out fields with whitespace-only values", () => {
|
|
const fields = [{ key: "name" as const }];
|
|
const result = filterFieldValues({ name: " " }, ...fields);
|
|
|
|
expect(result.size).toBe(0);
|
|
});
|
|
|
|
it("filters out fields with null values", () => {
|
|
const fields = [{ key: "name" as const }];
|
|
const result = filterFieldValues({ name: null }, ...fields);
|
|
|
|
expect(result.size).toBe(0);
|
|
});
|
|
|
|
it("filters out fields with undefined values", () => {
|
|
const fields = [{ key: "name" as const }];
|
|
const result = filterFieldValues({ name: undefined }, ...fields);
|
|
|
|
expect(result.size).toBe(0);
|
|
});
|
|
|
|
it("filters out fields with missing keys", () => {
|
|
const fields = [{ key: "name" as const }];
|
|
const result = filterFieldValues<"name", { key: "name" }>({}, ...fields);
|
|
|
|
expect(result.size).toBe(0);
|
|
});
|
|
|
|
it("preserves additional field properties on output", () => {
|
|
const fields = [{ key: "name" as const, label: "Name", icon: "person" }];
|
|
const result = filterFieldValues({ name: "Alice" }, ...fields);
|
|
|
|
expect(result.get("name")).toEqual({ key: "name", label: "Name", icon: "person" });
|
|
});
|
|
|
|
it("returns empty map when no fields supplied", () => {
|
|
const result = filterFieldValues({ name: "Alice" });
|
|
expect(result.size).toBe(0);
|
|
});
|
|
|
|
it("preserves field order in iteration", () => {
|
|
const fields = [{ key: "a" as const }, { key: "b" as const }, { key: "c" as const }];
|
|
const result = filterFieldValues({ a: "1", b: "2", c: "3" }, ...fields);
|
|
|
|
const keys = [...result.keys()];
|
|
expect(keys).toEqual(["a", "b", "c"]);
|
|
});
|
|
});
|