Files
2026-07-13 13:09:14 +08:00

44 lines
1.6 KiB
TypeScript
Vendored

import { strict as assert } from "node:assert";
import { test } from "vitest";
import { canApplyGridSelectionValue, matchesRowStatusFilter, rowStatusFilterAfterAddingRow, type RowStatus } from "../../apps/desktop/src/lib/dataGrid/gridRowStatus.ts";
const statuses: RowStatus[] = ["clean", "edited", "new", "deleted"];
test("status filter includes every row in all mode", () => {
assert.deepEqual(
statuses.filter((status) => matchesRowStatusFilter(status, "all")),
["clean", "edited", "new", "deleted"],
);
});
test("status filter includes only changed rows in changed mode", () => {
assert.deepEqual(
statuses.filter((status) => matchesRowStatusFilter(status, "changed")),
["edited", "new", "deleted"],
);
});
test("status filter can isolate a single changed status", () => {
assert.deepEqual(
statuses.filter((status) => matchesRowStatusFilter(status, "edited")),
["edited"],
);
assert.deepEqual(
statuses.filter((status) => matchesRowStatusFilter(status, "deleted")),
["deleted"],
);
});
test("adding a row switches filters that would hide new rows back to all", () => {
assert.equal(rowStatusFilterAfterAddingRow("deleted"), "all");
assert.equal(rowStatusFilterAfterAddingRow("edited"), "all");
assert.equal(rowStatusFilterAfterAddingRow("changed"), "changed");
assert.equal(rowStatusFilterAfterAddingRow("new"), "new");
});
test("selection value fill skips quick entry draft rows", () => {
assert.equal(canApplyGridSelectionValue({ isDraft: false }), true);
assert.equal(canApplyGridSelectionValue({ isDraft: true }), false);
assert.equal(canApplyGridSelectionValue({ isDraft: true, allowDraft: true }), true);
});