58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { TASK_TYPE } from '@/lib/task/types'
|
|
import { getWorkflowDefinition, resolveWorkflowRetryInvalidationStepKeys } from '@/lib/workflow-engine/registry'
|
|
|
|
describe('workflow registry', () => {
|
|
it('returns stable workflow definitions for run-centric flows', () => {
|
|
const storyToScript = getWorkflowDefinition(TASK_TYPE.STORY_TO_SCRIPT_RUN)
|
|
const scriptToStoryboard = getWorkflowDefinition(TASK_TYPE.SCRIPT_TO_STORYBOARD_RUN)
|
|
|
|
expect(storyToScript?.orderedSteps.map((step) => step.key)).toEqual([
|
|
'analyze_characters',
|
|
'analyze_locations',
|
|
'analyze_props',
|
|
'split_clips',
|
|
'screenplay_convert',
|
|
'persist_script_artifacts',
|
|
])
|
|
expect(scriptToStoryboard?.orderedSteps.map((step) => step.key)).toEqual([
|
|
'plan_panels',
|
|
'detail_panels',
|
|
'voice_analyze',
|
|
'persist_storyboard_artifacts',
|
|
])
|
|
})
|
|
|
|
it('invalidates downstream story-to-script screenplay steps when split inputs change', () => {
|
|
expect(resolveWorkflowRetryInvalidationStepKeys({
|
|
workflowType: TASK_TYPE.STORY_TO_SCRIPT_RUN,
|
|
stepKey: 'analyze_props',
|
|
existingStepKeys: ['analyze_props', 'split_clips', 'screenplay_clip-a', 'screenplay_clip-b'],
|
|
}).sort()).toEqual([
|
|
'analyze_props',
|
|
'screenplay_clip-a',
|
|
'screenplay_clip-b',
|
|
'split_clips',
|
|
])
|
|
})
|
|
|
|
it('invalidates only the affected storyboard branch plus voice analyze', () => {
|
|
expect(resolveWorkflowRetryInvalidationStepKeys({
|
|
workflowType: TASK_TYPE.SCRIPT_TO_STORYBOARD_RUN,
|
|
stepKey: 'clip_clip-1_phase2_cinematography',
|
|
existingStepKeys: [
|
|
'clip_clip-1_phase1',
|
|
'clip_clip-1_phase2_cinematography',
|
|
'clip_clip-1_phase2_acting',
|
|
'clip_clip-1_phase3_detail',
|
|
'clip_clip-2_phase3_detail',
|
|
'voice_analyze',
|
|
],
|
|
}).sort()).toEqual([
|
|
'clip_clip-1_phase2_cinematography',
|
|
'clip_clip-1_phase3_detail',
|
|
'voice_analyze',
|
|
])
|
|
})
|
|
})
|