/** * Products list selection + export helpers (node:test). */ import assert from "node:assert/strict"; import { describe, it } from "node:test"; import { canOpenExportDialog, normalizeStatusBadgeLabel, selectableProductIds, selectedRawProductIds, selectionHas, setProductSelected, toExportProductIds, toggleSelectAllIds } from "./products-selection.ts"; describe("setProductSelected / selectionHas", () => { it("adds and removes without duplicate string/number ids", () => { assert.deepEqual(setProductSelected([], 1, true), [1]); assert.deepEqual(setProductSelected([1], "1", true), [1]); assert.deepEqual(setProductSelected([1, 2], "1", false), [2]); assert.equal(selectionHas(["1", 2], 1), true); assert.equal(selectionHas([2], 1), false); }); }); describe("toggleSelectAllIds / selectableProductIds", () => { it("selects then clears visible ids, keeping off-page selection", () => { assert.deepEqual(toggleSelectAllIds([9], [1, 2]), [9, 1, 2]); assert.deepEqual(toggleSelectAllIds([9, 1, 2], [1, 2]), [9]); assert.deepEqual(toggleSelectAllIds([], []), []); }); it("skips in-flight processing rows for select-all", () => { assert.deepEqual( selectableProductIds([ { id: 1, processing_status: "completed" }, { id: 2, processing_status: "processing" }, { id: 3 } ]), [1, 3] ); }); }); describe("selectedRawProductIds", () => { it("resolves raw ids by list kind", () => { const rows = [ { id: "p1", raw_product_id: "r1" }, { id: "p2", raw_product_id: null }, { id: "r3" } ]; assert.deepEqual(selectedRawProductIds(rows, ["p1", "p2"], "processed"), ["r1"]); assert.deepEqual(selectedRawProductIds(rows, ["r3"], "raw"), ["r3"]); }); }); describe("export helpers + status badge label", () => { it("stringifies export ids and gates the dialog", () => { assert.deepEqual(toExportProductIds([1, "2"]), ["1", "2"]); assert.equal(canOpenExportDialog(0), false); assert.equal(canOpenExportDialog(3), true); }); it("normalizeStatusBadgeLabel matches badge empty handling", () => { assert.equal(normalizeStatusBadgeLabel("completed"), "completed"); assert.equal(normalizeStatusBadgeLabel(" "), "unknown"); assert.equal(normalizeStatusBadgeLabel(null), "unknown"); }); });