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 个单测文件(分页切片/历史截断/轻量轮询归一/任务队列纯逻辑)
58 lines
2.2 KiB
TypeScript
58 lines
2.2 KiB
TypeScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import {
|
|
isRecordMissingError,
|
|
parseTaskStartTimes,
|
|
removeTaskStartTime,
|
|
upsertTaskStartTime,
|
|
} from '../src/shared/utils/task-queue-state.ts'
|
|
|
|
test('解析开始时间表:保留正整数 id 与非空时间戳', () => {
|
|
const parsed = parseTaskStartTimes(JSON.stringify({ '12': '2026-09-14T00:00:00Z', '0': 'x', '-3': 'y', 'abc': 'z', '15': ' ' }))
|
|
|
|
assert.deepEqual(parsed, { 12: '2026-09-14T00:00:00Z' })
|
|
})
|
|
|
|
test('解析开始时间表:坏 JSON 与非字符串值安全降级', () => {
|
|
assert.deepEqual(parseTaskStartTimes('{bad json'), {})
|
|
assert.deepEqual(parseTaskStartTimes(null), {})
|
|
assert.deepEqual(parseTaskStartTimes(undefined), {})
|
|
assert.deepEqual(parseTaskStartTimes('{"7": 123, "8": null}'), {})
|
|
})
|
|
|
|
test('写入开始时间:非法 taskId 不改动内容且不共享引用', () => {
|
|
const base = { 1: 'a' }
|
|
const next = upsertTaskStartTime(base, 0, 'b')
|
|
|
|
assert.deepEqual(next, { 1: 'a' })
|
|
assert.notEqual(next, base)
|
|
|
|
assert.deepEqual(upsertTaskStartTime(base, 2, 'b'), { 1: 'a', 2: 'b' })
|
|
})
|
|
|
|
test('移除开始时间:不存在时返回内容相同的新对象', () => {
|
|
const base = { 1: 'a' }
|
|
const next = removeTaskStartTime(base, 9)
|
|
|
|
assert.deepEqual(next, { 1: 'a' })
|
|
assert.notEqual(next, base)
|
|
assert.deepEqual(removeTaskStartTime(base, 1), {})
|
|
assert.deepEqual(removeTaskStartTime(base, null), { 1: 'a' })
|
|
})
|
|
|
|
test('记录缺失错误判定:中文关键词与 404 命中', () => {
|
|
assert.equal(isRecordMissingError(new Error('记录不存在')), true)
|
|
assert.equal(isRecordMissingError(new Error('任务不存在')), true)
|
|
assert.equal(isRecordMissingError(new Error('该记录已删除')), true)
|
|
assert.equal(isRecordMissingError(new Error('request failed with 404')), true)
|
|
assert.equal(isRecordMissingError(new Error('Not Found')), true)
|
|
assert.equal(isRecordMissingError('不存在'), true)
|
|
})
|
|
|
|
test('记录缺失错误判定:其它错误不误判', () => {
|
|
assert.equal(isRecordMissingError(new Error('服务器繁忙,请稍后重试')), false)
|
|
assert.equal(isRecordMissingError(new Error('网络超时')), false)
|
|
assert.equal(isRecordMissingError(null), false)
|
|
assert.equal(isRecordMissingError(undefined), false)
|
|
})
|