import { describe, expect, it } from 'vitest' import { filterNormalVideoModelOptions, isFirstLastFrameOnlyModel, supportsFirstLastFrame, } from '@/lib/model-capabilities/video-model-options' import type { VideoModelOption } from '@/lib/novel-promotion/stages/video-stage-runtime/types' describe('video model options partition', () => { const models: VideoModelOption[] = [ { value: 'p::normal', label: 'normal', capabilities: { video: { generationModeOptions: ['normal'], firstlastframe: false, }, }, }, { value: 'p::firstlast-only', label: 'firstlast-only', capabilities: { video: { generationModeOptions: ['firstlastframe'], firstlastframe: true, }, }, }, { value: 'p::both', label: 'both', capabilities: { video: { generationModeOptions: ['normal', 'firstlastframe'], firstlastframe: true, }, }, }, { value: 'p::custom-no-capability', label: 'custom-no-capability', }, ] it('detects firstlastframe support and firstlastframe-only capability', () => { expect(supportsFirstLastFrame(models[0])).toBe(false) expect(supportsFirstLastFrame(models[1])).toBe(true) expect(supportsFirstLastFrame(models[2])).toBe(true) expect(supportsFirstLastFrame(models[3])).toBe(false) expect(isFirstLastFrameOnlyModel(models[0])).toBe(false) expect(isFirstLastFrameOnlyModel(models[1])).toBe(true) expect(isFirstLastFrameOnlyModel(models[2])).toBe(false) expect(isFirstLastFrameOnlyModel(models[3])).toBe(false) }) it('filters out firstlastframe-only models from normal video model list', () => { const normalModels = filterNormalVideoModelOptions(models) expect(normalModels.map((item) => item.value)).toEqual([ 'p::normal', 'p::both', 'p::custom-no-capability', ]) }) })