Files

72 lines
2.9 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import test from 'node:test'
import assert from 'node:assert/strict'
import { readSource } from './helpers.ts'
import {
imageVideoGeneratedAt,
imageVideoHasDisplayUrl,
toImageVideoRow,
type ImageVideoCard,
type ImageVideoRow,
} from '../src/pages/tasks/image-video-model.ts'
/** 对齐 admin.js:1328-1353 renderImageVideoCard:任务模式/生成时间(completed||submitted)/调试链接复制/下载禁用。 */
function row(overrides: Partial<ImageVideoRow> = {}): ImageVideoRow {
return {
taskId: '1',
username: '张三',
groupName: 'A组',
status: 'RUNNING',
cozeStatus: '',
cozeExecuteId: '',
videos: [],
videoUrl: '',
debugUrl: '',
archiveStatus: '',
archiveError: '',
...overrides,
}
}
test('align_image_video_mode_parsed_from_row', () => {
const task = toImageVideoRow({ task_id: 7, mode: 'text2video' })
assert.equal(task?.mode, 'text2video')
assert.equal(toImageVideoRow({ task_id: 8 })?.mode, undefined)
})
test('align_image_video_generated_at_completed_first', () => {
assert.equal(imageVideoGeneratedAt(row({ submittedAt: '2026-09-01 10:00:00', completedAt: '2026-09-01 10:05:00' })), '2026-09-01 10:05:00')
assert.equal(imageVideoGeneratedAt(row({ submittedAt: '2026-09-01 10:00:00' })), '2026-09-01 10:00:00')
assert.equal(imageVideoGeneratedAt(row()), '-')
})
test('align_image_video_has_display_url', () => {
const card: ImageVideoCard = {
key: '1:0',
task: row(),
video: { sourceUrl: '', archivedUrl: '', displayUrl: 'https://cdn/1.mp4', objectKey: '', archiveStatus: '', archiveError: '' },
videoIndex: 0,
}
assert.equal(imageVideoHasDisplayUrl(card), true)
assert.equal(imageVideoHasDisplayUrl({ ...card, video: null }), false)
})
test('align_image_video_page_card_info_wiring', () => {
const page = readSource('src/pages/tasks/ImageVideoTasksPage.vue')
assert.match(page, /任务模式/, '卡片补任务模式信息行')
assert.match(page, /所属分组/, '卡片信息行对齐参考')
assert.match(page, /生成时间/, '生成时间口径 completed||submitted')
assert.match(page, /imageVideoGeneratedAt/, '生成时间走纯模型')
assert.match(page, /调试链接/, '卡片补调试链接行')
assert.match(page, /copyLink\(task\.debugUrl\)/, '调试链接复制接线')
assert.match(page, /:disabled="!video\.displayUrl"|!hasDisplayUrl/, '下载按钮无视频禁用')
})
test('align_image_video_permission_table_pagination', () => {
// 权限配置弹窗用户表全量渲染无分页:补共享 OldPagination10/20/50/100)。
const page = readSource('src/pages/tasks/ImageVideoTasksPage.vue')
assert.match(page, /import OldPagination from '@\/components\/OldPagination\.vue'/, '分页组件已 import(曾缺失导致分页器不渲染)')
assert.match(page, /:data="pagedPermissionItems"/, '权限表绑定分页切片')
assert.match(page, /:total="permissionItems\.length"/, '权限表有分页器')
})