67223f8950
- F9 新增 useTablePaging composable 并接入 7 个工具页"匹配结果"表(只切渲染窗口, 不加选择语义;每页 100 条)+ 深色分页样式 - F6 历史任务抽屉渲染截断(默认 50 条 + "显示全部/收起"),全选口径改为当前可见条目 - F5 新增 task-progress-polling 适配器:等待任务终态的紧循环走 /tasks/progress/light, 异常或空响应回退重型 batch;已接入跟价/定时匹配的 waitForTaskTerminal - F12 背景图 bg.jpg 251KB → 166KB(1920 宽 + quality 80,image-set 仍优先 webp) - G3 抽出共享纯逻辑 task-queue-state(开始时间表序列化校验 + 记录缺失错误判定), 5 个工具页删除逐字重复实现 - 新增 4 个单测文件(分页切片/历史截断/轻量轮询归一/任务队列纯逻辑)
39 lines
1.7 KiB
TypeScript
39 lines
1.7 KiB
TypeScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { DEFAULT_TABLE_PAGE_SIZE, clampPage, paginateSlice } from '../src/shared/composables/useTablePaging.ts'
|
|
|
|
const items = (n) => Array.from({ length: n }, (_, i) => i + 1)
|
|
|
|
test('切片返回当前页窗口', () => {
|
|
assert.deepEqual(paginateSlice(items(250), 1, 100), items(100))
|
|
assert.deepEqual(paginateSlice(items(250), 3, 100), items(250).slice(200, 250), '末页只到最后一行为止')
|
|
assert.deepEqual(paginateSlice(items(5), 2, 100), items(5), '只有一页时任何页码都落在首页')
|
|
})
|
|
|
|
test('越界页码自动收敛到有效范围', () => {
|
|
assert.deepEqual(paginateSlice(items(250), 99, 100), items(250).slice(200, 250), '超出末页回到末页')
|
|
assert.deepEqual(paginateSlice(items(250), 0, 100), items(100), '小于 1 回到首页')
|
|
assert.deepEqual(paginateSlice(items(250), -3, 100), items(100))
|
|
})
|
|
|
|
test('非法分页参数安全降级', () => {
|
|
assert.deepEqual(paginateSlice(null, 1, 100), [])
|
|
assert.deepEqual(paginateSlice(undefined, 1, 100), [])
|
|
assert.equal(paginateSlice(items(10), 1, 0).length, 10, '非法 pageSize 回退默认值')
|
|
assert.equal(paginateSlice(items(DEFAULT_TABLE_PAGE_SIZE + 1), 1, Number.NaN).length, DEFAULT_TABLE_PAGE_SIZE)
|
|
})
|
|
|
|
test('clampPage 与切片口径一致', () => {
|
|
assert.equal(clampPage(1, 250, 100), 1)
|
|
assert.equal(clampPage(3, 250, 100), 3)
|
|
assert.equal(clampPage(9, 250, 100), 3)
|
|
assert.equal(clampPage(0, 0, 100), 1, '空列表仍有 1 页')
|
|
assert.equal(clampPage(5, 0, 100), 1)
|
|
})
|
|
|
|
test('恰好整除时不多出空页', () => {
|
|
assert.equal(clampPage(2, 200, 100), 2)
|
|
assert.equal(clampPage(3, 200, 100), 2)
|
|
assert.deepEqual(paginateSlice(items(200), 2, 100).length, 100)
|
|
})
|