40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
import { expect, test } from "vitest";
|
|
|
|
import { pruneFields } from "./prune-fields";
|
|
|
|
test("drops empty/null/undefined scalars, keeps real scalars", () => {
|
|
const out = pruneFields(
|
|
{ a: "x", b: "", c: null, d: undefined, e: 0, f: false },
|
|
new Set(),
|
|
"en",
|
|
);
|
|
expect(out).toEqual({ a: "x", e: 0, f: false });
|
|
});
|
|
|
|
test("a localized_text key keeps only the default-language entry", () => {
|
|
const out = pruneFields(
|
|
{ title: { en: "Bowl", sv: "Skål" } },
|
|
new Set(["title"]),
|
|
"sv",
|
|
);
|
|
expect(out).toEqual({ title: { sv: "Skål" } });
|
|
});
|
|
|
|
test("a non-localized object value keeps all non-empty entries", () => {
|
|
const out = pruneFields(
|
|
{ dims: { w: "10", h: "", d: "5" } },
|
|
new Set(),
|
|
"en",
|
|
);
|
|
expect(out).toEqual({ dims: { w: "10", d: "5" } });
|
|
});
|
|
|
|
test("an object value left with no entries is dropped entirely", () => {
|
|
const out = pruneFields(
|
|
{ title: { en: "Bowl" }, empty: { en: "", sv: "" } },
|
|
new Set(["title", "empty"]),
|
|
"sv",
|
|
);
|
|
expect(out).toEqual({});
|
|
});
|