feat: harden workflow graph contracts
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, test } from 'vitest'
|
||||
|
||||
import { createPresetWorkflowConfig } from '../../api/workflows'
|
||||
import { createPresetWorkflowConfig, createStarterWorkflowConfig, normalizeWorkflowConfig } from '../../api/workflows'
|
||||
|
||||
describe('workflow preset config builders', () => {
|
||||
test('builds a non-legacy still graph preset', () => {
|
||||
@@ -12,20 +12,54 @@ describe('workflow preset config builders', () => {
|
||||
|
||||
expect(config.ui?.preset).toBe('still_graph')
|
||||
expect(config.ui?.execution_mode).toBe('graph')
|
||||
expect(config.ui?.family).toBe('order_line')
|
||||
expect(config.nodes.map(node => node.step)).toEqual([
|
||||
'order_line_setup',
|
||||
'auto_populate_materials',
|
||||
'resolve_template',
|
||||
'auto_populate_materials',
|
||||
'glb_bbox',
|
||||
'material_map_resolve',
|
||||
'blender_still',
|
||||
'output_save',
|
||||
'notify',
|
||||
])
|
||||
expect(config.nodes.find(node => node.step === 'blender_still')?.params).toMatchObject({
|
||||
use_custom_render_settings: true,
|
||||
render_engine: 'cycles',
|
||||
samples: 128,
|
||||
width: 1600,
|
||||
height: 900,
|
||||
})
|
||||
})
|
||||
|
||||
test('builds family-specific starter configs', () => {
|
||||
const cadStarter = createStarterWorkflowConfig('cad_file')
|
||||
const orderStarter = createStarterWorkflowConfig('order_line')
|
||||
|
||||
expect(cadStarter.ui?.blueprint).toBe('starter_cad_intake')
|
||||
expect(cadStarter.ui?.family).toBe('cad_file')
|
||||
expect(cadStarter.nodes.map(node => node.step)).toEqual(['resolve_step_path'])
|
||||
|
||||
expect(orderStarter.ui?.blueprint).toBe('starter_order_rendering')
|
||||
expect(orderStarter.ui?.family).toBe('order_line')
|
||||
expect(orderStarter.nodes.map(node => node.step)).toEqual(['order_line_setup'])
|
||||
})
|
||||
|
||||
test('preserves ui.family during normalization', () => {
|
||||
const config = normalizeWorkflowConfig({
|
||||
version: 1,
|
||||
ui: {
|
||||
preset: 'custom',
|
||||
execution_mode: 'shadow',
|
||||
family: 'order_line',
|
||||
},
|
||||
nodes: [
|
||||
{ id: 'setup', step: 'order_line_setup', params: {} },
|
||||
],
|
||||
edges: [],
|
||||
})
|
||||
|
||||
expect(config.ui?.family).toBe('order_line')
|
||||
expect(config.ui?.execution_mode).toBe('shadow')
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user