mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
config: tsx,packages,icons (6 files)
This commit is contained in:
159
packages/data_table/seed/scripts/tests/pagination.cases.json
Normal file
159
packages/data_table/seed/scripts/tests/pagination.cases.json
Normal file
@@ -0,0 +1,159 @@
|
||||
{
|
||||
"calculate": [
|
||||
{
|
||||
"desc": "First page of many",
|
||||
"total": 100,
|
||||
"page": 1,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Middle page",
|
||||
"total": 100,
|
||||
"page": 5,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Last page",
|
||||
"total": 100,
|
||||
"page": 10,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Single page",
|
||||
"total": 5,
|
||||
"page": 1,
|
||||
"per_page": 10,
|
||||
"expected_pages": 1,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Partial last page",
|
||||
"total": 95,
|
||||
"page": 10,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Large dataset first page",
|
||||
"total": 1000,
|
||||
"page": 1,
|
||||
"per_page": 25,
|
||||
"expected_pages": 40,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Large dataset middle page",
|
||||
"total": 1000,
|
||||
"page": 20,
|
||||
"per_page": 25,
|
||||
"expected_pages": 40,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Large dataset last page",
|
||||
"total": 1000,
|
||||
"page": 40,
|
||||
"per_page": 25,
|
||||
"expected_pages": 40,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Small per_page value",
|
||||
"total": 50,
|
||||
"page": 3,
|
||||
"per_page": 5,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Large per_page value",
|
||||
"total": 50,
|
||||
"page": 1,
|
||||
"per_page": 100,
|
||||
"expected_pages": 1,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Odd total with even per_page",
|
||||
"total": 99,
|
||||
"page": 1,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Even total with odd per_page",
|
||||
"total": 100,
|
||||
"page": 1,
|
||||
"per_page": 7,
|
||||
"expected_pages": 15,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Second page of two",
|
||||
"total": 15,
|
||||
"page": 2,
|
||||
"per_page": 10,
|
||||
"expected_pages": 2,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": false
|
||||
}
|
||||
],
|
||||
"render": [
|
||||
{
|
||||
"desc": "Renders first page",
|
||||
"total": 100,
|
||||
"page": 1,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Renders middle page",
|
||||
"total": 100,
|
||||
"page": 5,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": true
|
||||
},
|
||||
{
|
||||
"desc": "Renders last page",
|
||||
"total": 100,
|
||||
"page": 10,
|
||||
"per_page": 10,
|
||||
"expected_pages": 10,
|
||||
"expected_has_prev": true,
|
||||
"expected_has_next": false
|
||||
},
|
||||
{
|
||||
"desc": "Renders single page",
|
||||
"total": 5,
|
||||
"page": 1,
|
||||
"per_page": 10,
|
||||
"expected_pages": 1,
|
||||
"expected_has_prev": false,
|
||||
"expected_has_next": false
|
||||
}
|
||||
]
|
||||
}
|
||||
56
packages/data_table/seed/scripts/tests/pagination.test.lua
Normal file
56
packages/data_table/seed/scripts/tests/pagination.test.lua
Normal file
@@ -0,0 +1,56 @@
|
||||
-- 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)
|
||||
Reference in New Issue
Block a user