Files
crawler-plugin/admin-frontend-vue/tests/align-digital-human.test.ts
T

74 lines
4.1 KiB
TypeScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { readSource } from './helpers.ts'
import {
digitalHumanChangelogShort,
digitalHumanVersionFileSizeText,
normalizeDigitalHumanStatus,
} from '../src/pages/records/digitalhuman-dto.ts'
import { digitalHumanStatusDisplay } from '../src/pages/records/digitalhuman-status-display.ts'
import { releaseDigitalHumanConfirmText } from '../src/pages/records/digitalhuman-release.ts'
import { setLatestDigitalHumanConfirmText } from '../src/pages/records/digitalhuman-latest.ts'
import { validateDigitalHumanUpload } from '../src/pages/records/digitalhuman-upload-model.ts'
/** 对齐 admin.js:6331-6358/6520-6550:三态、固定两位MB、50字符说明、下载按钮条件、确认文案、zip 校验、上传进度。 */
test('align_digital_human_status_three_states', () => {
assert.equal(normalizeDigitalHumanStatus('DRAFT'), 'DRAFT')
assert.equal(normalizeDigitalHumanStatus('RELEASED'), 'RELEASED')
assert.equal(normalizeDigitalHumanStatus('DEPRECATED'), 'DEPRECATED')
assert.equal(normalizeDigitalHumanStatus('unknown'), 'DEPRECATED')
assert.equal(normalizeDigitalHumanStatus(''), 'DEPRECATED')
assert.deepEqual(digitalHumanStatusDisplay('DRAFT'), { text: '草稿', tag: 'info' })
assert.deepEqual(digitalHumanStatusDisplay('RELEASED'), { text: '已发布', tag: 'success' })
assert.deepEqual(digitalHumanStatusDisplay('DEPRECATED'), { text: '已废弃', tag: 'danger' })
})
test('align_digital_human_file_size_fixed_two_decimals_mb', () => {
assert.equal(digitalHumanVersionFileSizeText(2 * 1024 * 1024), '2.00 MB')
assert.equal(digitalHumanVersionFileSizeText(1.5 * 1024 * 1024), '1.50 MB')
assert.equal(digitalHumanVersionFileSizeText(undefined), '-')
assert.equal(digitalHumanVersionFileSizeText(0), '-')
})
test('align_digital_human_changelog_50_char_truncate', () => {
assert.equal(digitalHumanChangelogShort(''), '-')
assert.equal(digitalHumanChangelogShort('短说明'), '短说明')
const long = 'x'.repeat(60)
assert.equal(digitalHumanChangelogShort(long), 'x'.repeat(50) + '...')
})
test('align_digital_human_confirm_texts', () => {
assert.equal(releaseDigitalHumanConfirmText('1.0.1'), '确认发布版本 1.0.1 吗?')
assert.equal(setLatestDigitalHumanConfirmText('1.0.1'), '确认将版本 1.0.1 设为最新吗?客户端会自动检测更新。')
})
test('align_digital_human_upload_zip_only', () => {
// 仅 zip + 对应错误文案(对齐 admin.js:6520-6523)。
const { errors } = validateDigitalHumanUpload({ version: '1.0.1', file: { name: 'pkg.rar', size: 100 } })
assert.equal(errors.file, '仅支持 .zip 格式')
assert.equal(validateDigitalHumanUpload({ version: '1.0.1', file: { name: 'pkg.zip', size: 100 } }).valid, true)
})
test('align_digital_human_api_download_url', () => {
const api = readSource('src/pages/records/digitalhuman-api.ts')
assert.match(api, /download-url/, '含下载链接端点')
assert.match(api, /onUploadProgress/, '上传带进度回调')
})
test('align_digital_human_page_wiring', () => {
const page = readSource('src/pages/records/RecordsDigitalHumanVersionPage.vue')
assert.match(page, /pageSize\s*=\s*20|:page-size="20"/, '分页大小 20')
assert.match(page, /page-nums/, '数字页码分页(像素复刻旧版)')
assert.match(page, /设为最新/, '按钮名对齐“设为最新”')
assert.match(page, /上传新版本/, '页头上传按钮名对齐')
assert.match(page, /上传数字人程序 ZIP 包,系统会自动计算 MD5 并存储到 OSS。上传后状态为草稿,需要手动发布/, '上传弹窗描述对齐')
assert.match(page, /正在上传/, '上传进度文案')
assert.match(page, /digitalHumanDeleteConfirmText/, '删除确认文案走对齐模型')
assert.match(page, /fetchDigitalHumanDownloadUrl/, 'RELEASED 下载按钮点击取链接')
assert.match(page, /digitalHumanStatusDisplay/, '状态走展示层模型')
const display = readSource('src/pages/records/digitalhuman-status-display.ts')
assert.match(display, /已废弃/, '状态三态接入(草稿/已发布/已废弃)')
assert.match(page, /digitalHumanChangelogShort/, '更新说明 50 字符截断')
})