883625a072
新增 digitalhuman-release.ts(可发布判定与确认) 与 releaseDigitalHumanVersion
(POST /{version}/release)。
TDD: task-135.test.ts 8 用例 RED→GREEN。
50 lines
2.1 KiB
TypeScript
50 lines
2.1 KiB
TypeScript
import test from 'node:test'
|
||
import assert from 'node:assert/strict'
|
||
import { readSource } from './helpers.ts'
|
||
import { canReleaseDigitalHumanVersion, releaseDigitalHumanConfirmText } from '../src/pages/records/digitalhuman-release.ts'
|
||
|
||
test('test_task_135_dh_release_normal_primary_path', () => {
|
||
// 正常主路径:草稿版本可发布并给出确认文案。
|
||
assert.equal(canReleaseDigitalHumanVersion('DRAFT'), true)
|
||
assert.equal(releaseDigitalHumanConfirmText('1.0.0'), '确定发布数字人版本 1.0.0 吗?')
|
||
})
|
||
|
||
test('test_task_135_dh_release_normal_variant_input', () => {
|
||
// 正常变体:已发布版本不再提示可发布。
|
||
assert.equal(canReleaseDigitalHumanVersion('RELEASED'), false)
|
||
})
|
||
|
||
test('test_task_135_dh_release_repeated_is_idempotent', () => {
|
||
// 正常重复:文案稳定。
|
||
assert.equal(releaseDigitalHumanConfirmText('1.0.0'), releaseDigitalHumanConfirmText('1.0.0'))
|
||
})
|
||
|
||
test('test_task_135_dh_release_boundary_empty_input', () => {
|
||
// 边界空值:空版本不产出确认。
|
||
assert.equal(releaseDigitalHumanConfirmText(''), null)
|
||
})
|
||
|
||
test('test_task_135_dh_release_boundary_single_item', () => {
|
||
// 边界单元素:未知状态按不可发布处理。
|
||
assert.equal(canReleaseDigitalHumanVersion('x'), false)
|
||
})
|
||
|
||
test('test_task_135_dh_release_boundary_limit_or_missing_field', () => {
|
||
// 边界上限/缺字段:小写归一。
|
||
assert.equal(canReleaseDigitalHumanVersion('draft'), true)
|
||
})
|
||
|
||
test('test_task_135_dh_release_invalid_input_rejected', () => {
|
||
// 异常输入:非字符串状态不可发布。
|
||
assert.equal(canReleaseDigitalHumanVersion(null as unknown as string), false)
|
||
})
|
||
|
||
test('test_task_135_dh_release_dependency_failure_returns_actionable_message', () => {
|
||
// 依赖失败/提交走 adapter:POST /{version}/release。
|
||
const api = readSource('src/pages/records/digitalhuman-api.ts')
|
||
assert.match(api, /releaseDigitalHumanVersion/)
|
||
assert.match(api, /\/release/)
|
||
const model = readSource('src/pages/records/digitalhuman-release.ts')
|
||
assert.equal(/axios|http\.|vue/.test(model), false, '发布模型保持纯逻辑')
|
||
})
|