// import { ActionStatus, ActionType } from '../actions/types' import { create } from '../api' import { createOldWorkflowId234OutputSnapshot, createOldWorkflowId234Snapshot, createOldWorkflowId234StepsSnapshot, } from '../mocks/old-workflow.mock' import { createOldServicesSnapshot } from '../mocks/services.mock' import { selectAllMissedActionRelations } from '../selectors' // import { RootState } from '../store' // import { VarDataType } from '../types' import { // converOutput, // convertComputeAction, convertOldWorkflowToFlowApplicationData, // convertSorceAction, } from './converter' import { atleastOneSourceAndActionRule, // noCircularActionRelationsRule, noMissedActionRelationsRule, } from './rules' describe('workflow to flow converter', () => { // it('should convert old workflow step to new correctly', () => { // const source = createOldWorkflowId234StepsSnapshot()[0] // const convertOldWorkflowStepToFlowDataExpected: Pick< // RootState, // 'actions' | 'pipeline' | 'relations' | 'labels' // > = { // actions: [ // { // id: `synthetic-${source.action}`, // name: source.action, // type: ActionType.SOURCE, // source.type // metadata: { // status: ActionStatus.PUBLISHED, // icon: '', // label: source.name, // description: source.name, // cost: 0, // time: 0, // }, // lAttributes: [], // pAttributes: ['label', 'layout', 'description'].map(name => ({ // id: `__${name}:str`, // 'osindex_:str', // globalId: '', // name: name, // datatype: VarDataType.string, // required: true, // value: String( // source.options && // source.options[name as keyof typeof source.options] // ), // label: `Form ${name}`, // description: '', // })), // rAttributes: (source.options.elements || []).map(x => ({ // id: `__${x.name}:${x.datatype}`, //'osindex_:str', // globalId: '', // name: x.name, // datatype: x.datatype as VarDataType, // required: x.required, // value: '', // label: x.label, // description: '', // })), // // For action // // rAttributes: (source.variables || []).map(x => ({ // // id: `__${x.name.toLowerCase()}:${x.datatype}`, //'osindex_:str', // // globalId: '', // // name: x.name.toLowerCase(), // // datatype: x.datatype as VarDataType, // // required: true, // // value: '', // // label: x.label, // // description: '', // // })), // }, // ], // relations: [ // { // id: `rel-${source.id}`, // actName: source.action, // rel: [`rel-${source.nextId}`], // x: source.position[0], // y: source.position[1], // }, // ], // pipeline: [ // { // id: `rel-${source.id}`, // consume: {}, // params: Object.fromEntries( // ['label', 'layout', 'description'].map(name => [ // `__${name}:str`, // String( // source.options && // source.options[name as keyof typeof source.options] // ), // ]) // ), // produce: Object.fromEntries( // (source.options.elements || []).map(el => [ // `rel-${source.id}__${el.name}:${el.datatype}`, // `__${el.name}:${el.datatype}`, // ]) // ), // }, // ], // labels: {}, // } // convertOldWorkflowStepToFlowDataExpected // const convertedSourceAction = convertSorceAction( // source as { // id: unknown // nextId: unknown // position: unknown // action: unknown // name: unknown // variables: unknown[] // rAttributes: unknown // options: { [x: string]: unknown; elements: unknown } // } // ) // console.log( // 'convertSorceAction(source)', // JSON.stringify(convertedSourceAction, null, 1) // ) // const action1 = createOldWorkflowId234StepsSnapshot()[1] // const convertedComputeAction = convertComputeAction( // action1 as { // lAttributes: string[] // rAttributes: string[] // action: unknown // name: unknown // options: { [x: string]: unknown; elements: unknown } // variables: unknown // id: unknown // nextId: unknown // position: unknown[] // }, // convertedSourceAction.__legacy_variablesMap // ) // console.log( // 'convertComputeAction(action1)', // JSON.stringify(convertedComputeAction, null, 1) // ) // const action2 = createOldWorkflowId234StepsSnapshot()[2] // const convertedComputeAction2 = convertComputeAction( // action2 as { // lAttributes: string[] // rAttributes: string[] // action: unknown // name: unknown // options: { [x: string]: unknown; elements: unknown } // variables: unknown // id: unknown // nextId: unknown // position: unknown[] // }, // convertedComputeAction.__legacy_variablesMap // ) // console.log( // 'convertComputeAction(action2)', // JSON.stringify(convertedComputeAction2, null, 1) // ) // const output = converOutput( // createOldWorkflowId234OutputSnapshot(), // convertedComputeAction2.__legacy_variablesMap // ) // console.log('output', output) // // const _actions = actions.map(convertOldWorkflowStepToFlowData) // // _actions[0] // // expect(convertOldWorkflowStepToFlowData(source)).toBe( // // convertOldWorkflowStepToFlowDataExpected // // ) // }) it('should convert old workflow to new flow correctly', () => { const snapshot = convertOldWorkflowToFlowApplicationData({ workflow: createOldWorkflowId234Snapshot(), steps: createOldWorkflowId234StepsSnapshot(), services: createOldServicesSnapshot(), outputs: [createOldWorkflowId234OutputSnapshot()], }) // console.log('snapshot', JSON.stringify(snapshot, null, 1)) const api = create(snapshot) const state = api.getState() expect(atleastOneSourceAndActionRule(state)).toBeTruthy() expect(noMissedActionRelationsRule(state)).toBeTruthy() // TODO: Implement // expect(noCircularActionRelationsRule(state)).toBeTruthy() expect(selectAllMissedActionRelations()(state)).toEqual([]) }) })