import { test } from "node:test"; import assert from "node:assert/strict"; import { reportSiteKeysFromForm } from "./reportSiteKeys"; // Run with: pnpm -C editor exec tsx --test "app/**/*.test.ts" function form(entries: Record): FormData { const fd = new FormData(); for (const [k, v] of Object.entries(entries)) fd.set(k, v); return fd; } test("search checked writes no key; unchecked (no field) writes search: false", () => { assert.deepEqual(reportSiteKeysFromForm(form({ search: "on" }), undefined), {}); assert.deepEqual(reportSiteKeysFromForm(form({}), undefined), { search: false }); // The old select's field is not read: only the checkbox decides. assert.deepEqual(reportSiteKeysFromForm(form({ search: "on", publish: "cited" }), undefined), {}); }); test("the stored report list is carried over in order; the form cannot set it", () => { const stored = { reports: ["second", "first"] }; assert.deepEqual( reportSiteKeysFromForm(form({ search: "on", reports: "injected" }), stored), { reports: ["second", "first"] }, ); // An empty or missing stored list writes no key; a bad stored id is dropped. assert.deepEqual(reportSiteKeysFromForm(form({ search: "on" }), { reports: [] }), {}); assert.deepEqual(reportSiteKeysFromForm(form({ search: "on" }), { reports: ["ok", "NOT OK"] }), { reports: ["ok"], }); });