import assert from 'node:assert/strict'; import { test } from 'node:test'; import { parseWorksheetQuery, WorksheetQueryDto, } from '../src/worksheets/worksheet-query.dto'; test('题型查询参数:零年级、多个年级去重、false 与组合筛选可准确解析', () => { const query = parseWorksheetQuery({ grade: '0', ageBand: '3-4', tag: ' 数学 ', isHot: 'false', }); assert.deepEqual(query.grades, [0]); assert.equal(query.isHot, false); assert.equal(query.page, 1); assert.equal(query.pageSize, 20); assert.equal(query.tag, '数学'); assert.deepEqual( parseWorksheetQuery({ grades: '-4,0,6,0' }).grades, [-4, 0, 6], ); assert.equal(parseWorksheetQuery({ age: '0' }).age, 0); }); test('题型查询参数:非法值、重复参数和越权状态字段不能被静默忽略', () => { const bad: unknown[] = [ { page: '0' }, { page: '1e2' }, { pageSize: '101' }, { page: ['1', '2'] }, { grade: '23' }, { grade: '0', grades: '1' }, { grades: '0,,1' }, { grades: '' }, { ageBand: '3-5' }, { age: '4', ageBand: '3-4' }, { isHot: '0' }, { isNew: 'False' }, { sort: 'random' }, { tag: ['a', 'b'] }, { tag: '' }, { status: 'draft' }, { rawStats: 'true' }, ]; for (const query of bad) assert.throws(() => parseWorksheetQuery(query as WorksheetQueryDto)); });