Register 直播切片 as a video-only material type. Upload and edit flows collect required title, live date (defaults to today), optional host with user link, and live platform presets. Persist the fields on Material and skip SPU formatting for free-text titles.
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import {
|
|
formatLiveDate,
|
|
getDefaultLiveDate,
|
|
isLiveClipType,
|
|
isLiveClipPlatform,
|
|
parseLiveDate,
|
|
validateLiveClipFields,
|
|
LIVE_CLIP_PLATFORMS,
|
|
} from '../live-clip'
|
|
import { isVideoMaterialType } from '../video-material-types'
|
|
import { MATERIAL_TYPE_OPTIONS } from '../material-type-options'
|
|
|
|
describe('live-clip', () => {
|
|
test('类型注册为视频素材', () => {
|
|
expect(MATERIAL_TYPE_OPTIONS).toContain('直播切片')
|
|
expect(isLiveClipType('直播切片')).toBe(true)
|
|
expect(isLiveClipType('淘系-主图视频')).toBe(false)
|
|
expect(isVideoMaterialType('直播切片')).toBe(true)
|
|
})
|
|
|
|
test('平台预置主流直播平台', () => {
|
|
expect([...LIVE_CLIP_PLATFORMS]).toEqual(['抖音', '快手', '视频号', '淘宝直播', 'B站'])
|
|
expect(isLiveClipPlatform('抖音')).toBe(true)
|
|
expect(isLiveClipPlatform('淘宝')).toBe(false)
|
|
})
|
|
|
|
test('直播日期默认上传当天且可解析', () => {
|
|
const today = getDefaultLiveDate(new Date('2026-09-22T10:00:00'))
|
|
expect(today).toBe('2026-09-22')
|
|
expect(formatLiveDate(parseLiveDate('2026-09-22'))).toBe('2026-09-22')
|
|
expect(parseLiveDate('2026-13-01')).toBeNull()
|
|
expect(parseLiveDate('not-a-date')).toBeNull()
|
|
})
|
|
|
|
test('标题必填,平台可选但必须合法', () => {
|
|
expect(validateLiveClipFields({ title: '' })[0]?.field).toBe('title')
|
|
expect(
|
|
validateLiveClipFields({
|
|
title: '618直播切片',
|
|
liveDate: '2026-09-22',
|
|
livePlatform: '抖音',
|
|
}),
|
|
).toEqual([])
|
|
expect(
|
|
validateLiveClipFields({ title: 'ok', livePlatform: '未知平台' })[0]?.field,
|
|
).toBe('livePlatform')
|
|
})
|
|
})
|