mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
57 lines
2.0 KiB
Lua
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)
|