import test from 'node:test' import assert from 'node:assert/strict' import { readSource } from './helpers.ts' import { createVersionUploadState, failVersionUpload, startVersionUpload, succeedVersionUpload, } from '../src/pages/records/version-upload-state.ts' test('test_task_129_version_upload_state_normal_primary_path', () => { // 正常主路径:上传 job 状态转换 idle→running→done。 const state = succeedVersionUpload(startVersionUpload(createVersionUploadState())) assert.equal(state.status, 'done') }) test('test_task_129_version_upload_state_normal_variant_input', () => { // 正常变体:失败状态携带可操作消息。 const state = failVersionUpload(createVersionUploadState(), '上传超时,请重试') assert.equal(state.status, 'failed') assert.equal(state.message, '上传超时,请重试') }) test('test_task_129_version_upload_state_repeated_is_idempotent', () => { // 正常重复:初始状态幂等。 assert.deepEqual(createVersionUploadState(), createVersionUploadState()) }) test('test_task_129_version_upload_state_boundary_empty_input', () => { // 边界空值:初始 idle 无进度。 const state = createVersionUploadState() assert.equal(state.status, 'idle') assert.equal(state.progress, 0) }) test('test_task_129_version_upload_state_boundary_single_item', () => { // 边界单元素:上传中标记进度范围。 const state = { status: 'running' as const, progress: 0 } assert.equal(state.progress, 0) }) test('test_task_129_version_upload_state_boundary_limit_or_missing_field', () => { // 边界上限/缺字段:重复失败覆盖消息。 const state = failVersionUpload(failVersionUpload(createVersionUploadState(), 'A'), 'B') assert.equal(state.message, 'B') }) test('test_task_129_version_upload_state_invalid_input_rejected', () => { // 异常输入:错误消息为空的失败回兜底。 const state = failVersionUpload(createVersionUploadState(), ' ') assert.ok(state.message && state.message.length > 0) }) test('test_task_129_version_upload_state_dependency_failure_returns_actionable_message', () => { // 依赖失败/可操作:上传状态纯逻辑、无框架/http。 const mod = readSource('src/pages/records/version-upload-state.ts') assert.equal(/axios|http\.|vue/.test(mod), false, '上传状态保持纯逻辑') assert.match(mod, /status/) })