Files
t8y2--dbx/packages/app-tests/dataGridColumnHeaderInteraction.test.ts
T
2026-07-13 13:09:14 +08:00

45 lines
2.6 KiB
TypeScript
Vendored

import { strict as assert } from "node:assert";
import { test } from "vitest";
import { columnHeaderCanvasPointerDisabled, columnHeaderClickShouldBeSuppressed, columnHeaderPreviewEnabled, columnHeaderPreviewOffsetForColumn, columnHeaderTooltipDisabled } from "../../apps/desktop/src/lib/dataGrid/dataGridColumnHeaderInteraction";
test("keeps column header tooltips closed during column pointer interactions", () => {
assert.equal(columnHeaderTooltipDisabled({ columnDragActive: false, columnResizeActive: false }), false);
assert.equal(columnHeaderTooltipDisabled({ columnDragActive: true, columnResizeActive: false }), true);
assert.equal(columnHeaderTooltipDisabled({ columnDragActive: false, columnResizeActive: true }), true);
assert.equal(columnHeaderTooltipDisabled({ columnDragActive: true, columnResizeActive: true }), true);
});
test("enables live column header reorder preview while dragging", () => {
assert.equal(columnHeaderPreviewEnabled({ columnDragActive: false }), false);
assert.equal(columnHeaderPreviewEnabled({ columnDragActive: true }), true);
});
test("ignores canvas pointer hit testing during column header interactions", () => {
assert.equal(columnHeaderCanvasPointerDisabled({ columnDragActive: false, columnResizeActive: false }), false);
assert.equal(columnHeaderCanvasPointerDisabled({ columnDragActive: true, columnResizeActive: false }), true);
assert.equal(columnHeaderCanvasPointerDisabled({ columnDragActive: false, columnResizeActive: true }), true);
});
test("suppresses the synthetic click that follows a column header drag", () => {
assert.equal(columnHeaderClickShouldBeSuppressed({ now: 1000, guardUntil: 0, suppressNextClick: false }), false);
assert.equal(columnHeaderClickShouldBeSuppressed({ now: 1000, guardUntil: 900, suppressNextClick: false }), false);
assert.equal(columnHeaderClickShouldBeSuppressed({ now: 1000, guardUntil: 1200, suppressNextClick: false }), true);
assert.equal(columnHeaderClickShouldBeSuppressed({ now: 1000, guardUntil: 0, suppressNextClick: true }), true);
});
test("calculates live reorder preview offsets for dragged and displaced columns", () => {
const base = {
columnDragActive: true,
sourceVisibleIndex: 1,
targetVisibleIndex: 3,
startX: 100,
currentX: 175,
sourceWidth: 240,
};
assert.equal(columnHeaderPreviewOffsetForColumn({ ...base, visibleColIdx: 1 }), 75);
assert.equal(columnHeaderPreviewOffsetForColumn({ ...base, visibleColIdx: 2 }), -240);
assert.equal(columnHeaderPreviewOffsetForColumn({ ...base, visibleColIdx: 3 }), -240);
assert.equal(columnHeaderPreviewOffsetForColumn({ ...base, visibleColIdx: 4 }), 0);
});