Files
metabuilder/packages/data_table/seed/scripts/tests/selection.test.lua
2025-12-30 14:15:18 +00:00

72 lines
2.2 KiB
Lua

-- Selection tests
-- Uses lua_test framework with parameterized test cases
describe("Data Table Selection", function()
local cases = load_cases("selection.cases.json")
local toggle_row = require("selection.toggle_row")
local select_range = require("selection.select_range")
describe("toggleRow", function()
it_each(cases.toggleRow.single_mode, "$desc", function(tc)
local state = {
selected = tc.initial_selected,
mode = "single"
}
local result = toggle_row.toggleRow(state, tc.index)
expect(result.mode).toBe("single")
expect(result.lastSelected).toBe(tc.index)
-- Check selected state
for idx, should_be_selected in pairs(tc.expected_selected) do
if should_be_selected then
expect(result.selected[idx]).toBe(true)
else
expect(result.selected[idx]).toBeNil()
end
end
end)
it_each(cases.toggleRow.multiple_mode, "$desc", function(tc)
local state = {
selected = tc.initial_selected,
mode = "multiple"
}
local result = toggle_row.toggleRow(state, tc.index)
expect(result.mode).toBe("multiple")
expect(result.lastSelected).toBe(tc.index)
-- Check selected state
for idx, should_be_selected in pairs(tc.expected_selected) do
if should_be_selected then
expect(result.selected[idx]).toBe(true)
else
expect(result.selected[idx]).toBeNil()
end
end
end)
end)
describe("selectRange", function()
it_each(cases.selectRange, "$desc", function(tc)
local state = {
selected = tc.initial_selected,
mode = "multiple"
}
local result = select_range.selectRange(state, tc.from_index, tc.to_index)
expect(result.lastSelected).toBe(tc.to_index)
-- Check all expected indices are selected
for idx = tc.expected_start, tc.expected_end do
expect(result.selected[idx]).toBe(true)
end
-- Check preserved selections
if tc.preserve_indices then
for _, idx in ipairs(tc.preserve_indices) do
expect(result.selected[idx]).toBe(true)
end
end
end)
end)
end)