| 1234567891011121314151617181920212223242526272829 |
- import { test } from 'node:test';
- import assert from 'node:assert/strict';
- import { paginate, readCardQuery, patchOf, pageNumber } from '../src/utils/card-view.js';
- test('报告分页覆盖全部记录且无重复;首尾页与空清单保持有效', () => {
- const all = Array.from({ length: 38 }, (_, i) => `report-${i}`);
- const pages = Array.from({ length: paginate(all, 1).pages }, (_, i) => paginate(all, i + 1));
- assert.deepEqual(pages.flatMap(p => p.items), all);
- assert.deepEqual(paginate(all, 999).items, all.slice(36));
- assert.deepEqual(paginate([], 3), { items: [], page: 1, pages: 1, size: 12, total: 0 });
- });
- test('损坏或非整数 URL 页码不会漏记录、返回空页或 NaN', () => {
- const all = Array.from({ length: 25 }, (_, i) => i);
- for (const page of ['NaN', 'Infinity', '-5', '0', undefined]) {
- assert.equal(readCardQuery({ page }).page, 1);
- assert.equal(paginate(all, page).page, 1);
- assert.equal(paginate(all, page).items.length, 12);
- }
- assert.equal(paginate(all, '2.7').page, 2);
- assert.equal(pageNumber('2.7'), 2);
- assert.equal(paginate(all, 1, Infinity).size, 12);
- });
- test('翻页与刷新保留证据、阶段、排序和列表视图', () => {
- const q = readCardQuery({ stage: 'S3,S4', ev: '高', sort: 'ev', view: 'list', page: '2' });
- const restored = readCardQuery(patchOf(q, 3));
- assert.deepEqual(restored, { ...q, page: 3 });
- });
|