Files
metabuilder/packages/data_table/seed/scripts/tests/pagination.test.lua
2025-12-30 14:14:52 +00:00

57 lines
2.0 KiB
Lua

-- Pagination tests
-- Uses lua_test framework with parameterized test cases
describe("Pagination", function()
local cases = load_cases("pagination.cases.json")
local pagination = require("pagination")
describe("calculate", function()
it_each(cases.calculate, "$desc", function(tc)
local result = pagination.calculate(tc.total, tc.page, tc.per_page)
expect(result.total).toBe(tc.total)
expect(result.page).toBe(tc.page)
expect(result.per_page).toBe(tc.per_page)
expect(result.pages).toBe(tc.expected_pages)
expect(result.has_prev).toBe(tc.expected_has_prev)
expect(result.has_next).toBe(tc.expected_has_next)
end)
end)
describe("render", function()
it_each(cases.render, "$desc", function(tc)
local state = pagination.calculate(tc.total, tc.page, tc.per_page)
local result = pagination.render(state)
expect(result.type).toBe("pagination")
expect(result.props.current).toBe(tc.page)
expect(result.props.total).toBe(tc.expected_pages)
expect(result.props.show_prev).toBe(tc.expected_has_prev)
expect(result.props.show_next).toBe(tc.expected_has_next)
expect(result.props.on_prev).toBe("prev_page")
expect(result.props.on_next).toBe("next_page")
end)
end)
describe("edge cases", function()
it("handles zero items", function()
local result = pagination.calculate(0, 1, 10)
expect(result.pages).toBe(0)
expect(result.has_prev).toBe(false)
expect(result.has_next).toBe(false)
end)
it("handles single item", function()
local result = pagination.calculate(1, 1, 10)
expect(result.pages).toBe(1)
expect(result.has_prev).toBe(false)
expect(result.has_next).toBe(false)
end)
it("handles exact page boundary", function()
local result = pagination.calculate(100, 1, 10)
expect(result.pages).toBe(10)
expect(result.has_prev).toBe(false)
expect(result.has_next).toBe(true)
end)
end)
end)