123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- import parseDSL from './graph-to-log-struct'
- describe('parseDSL', () => {
- it('should parse plain nodes correctly', () => {
- const dsl = 'plainNode1 -> plainNode2'
- const result = parseDSL(dsl)
- expect(result).toEqual([
- { id: 'plainNode1', node_id: 'plainNode1', title: 'plainNode1', execution_metadata: {}, status: 'succeeded' },
- { id: 'plainNode2', node_id: 'plainNode2', title: 'plainNode2', execution_metadata: {}, status: 'succeeded' },
- ])
- })
- it('should parse retry nodes correctly', () => {
- const dsl = '(retry, retryNode, 3)'
- const result = parseDSL(dsl)
- expect(result).toEqual([
- { id: 'retryNode', node_id: 'retryNode', title: 'retryNode', execution_metadata: {}, status: 'succeeded' },
- { id: 'retryNode', node_id: 'retryNode', title: 'retryNode', execution_metadata: {}, status: 'retry' },
- { id: 'retryNode', node_id: 'retryNode', title: 'retryNode', execution_metadata: {}, status: 'retry' },
- { id: 'retryNode', node_id: 'retryNode', title: 'retryNode', execution_metadata: {}, status: 'retry' },
- ])
- })
- it('should parse iteration nodes correctly', () => {
- const dsl = '(iteration, iterationNode, plainNode1 -> plainNode2)'
- const result = parseDSL(dsl)
- expect(result).toEqual([
- { id: 'iterationNode', node_id: 'iterationNode', title: 'iterationNode', node_type: 'iteration', execution_metadata: {}, status: 'succeeded' },
- { id: 'plainNode1', node_id: 'plainNode1', title: 'plainNode1', execution_metadata: { iteration_id: 'iterationNode', iteration_index: 0 }, status: 'succeeded' },
- { id: 'plainNode2', node_id: 'plainNode2', title: 'plainNode2', execution_metadata: { iteration_id: 'iterationNode', iteration_index: 0 }, status: 'succeeded' },
- ])
- })
- it('should parse parallel nodes correctly', () => {
- const dsl = '(parallel, parallelNode, nodeA, nodeB -> nodeC)'
- const result = parseDSL(dsl)
- expect(result).toEqual([
- { id: 'parallelNode', node_id: 'parallelNode', title: 'parallelNode', execution_metadata: { parallel_id: 'parallelNode' }, status: 'succeeded' },
- { id: 'nodeA', node_id: 'nodeA', title: 'nodeA', execution_metadata: { parallel_id: 'parallelNode', parallel_start_node_id: 'nodeA' }, status: 'succeeded' },
- { id: 'nodeB', node_id: 'nodeB', title: 'nodeB', execution_metadata: { parallel_id: 'parallelNode', parallel_start_node_id: 'nodeB' }, status: 'succeeded' },
- { id: 'nodeC', node_id: 'nodeC', title: 'nodeC', execution_metadata: { parallel_id: 'parallelNode', parallel_start_node_id: 'nodeB' }, status: 'succeeded' },
- ])
- })
- // TODO
- // it('should handle nested parallel nodes', () => {
- // const dsl = '(parallel, outerParallel, (parallel, innerParallel, plainNode1 -> plainNode2) -> plainNode3)'
- // const result = parseDSL(dsl)
- // expect(result).toEqual([
- // {
- // id: 'outerParallel',
- // node_id: 'outerParallel',
- // title: 'outerParallel',
- // execution_metadata: { parallel_id: 'outerParallel' },
- // status: 'succeeded',
- // },
- // {
- // id: 'innerParallel',
- // node_id: 'innerParallel',
- // title: 'innerParallel',
- // execution_metadata: { parallel_id: 'outerParallel', parallel_start_node_id: 'innerParallel' },
- // status: 'succeeded',
- // },
- // {
- // id: 'plainNode1',
- // node_id: 'plainNode1',
- // title: 'plainNode1',
- // execution_metadata: {
- // parallel_id: 'innerParallel',
- // parallel_start_node_id: 'plainNode1',
- // parent_parallel_id: 'outerParallel',
- // parent_parallel_start_node_id: 'innerParallel',
- // },
- // status: 'succeeded',
- // },
- // {
- // id: 'plainNode2',
- // node_id: 'plainNode2',
- // title: 'plainNode2',
- // execution_metadata: {
- // parallel_id: 'innerParallel',
- // parallel_start_node_id: 'plainNode1',
- // parent_parallel_id: 'outerParallel',
- // parent_parallel_start_node_id: 'innerParallel',
- // },
- // status: 'succeeded',
- // },
- // {
- // id: 'plainNode3',
- // node_id: 'plainNode3',
- // title: 'plainNode3',
- // execution_metadata: {
- // parallel_id: 'outerParallel',
- // parallel_start_node_id: 'innerParallel',
- // },
- // status: 'succeeded',
- // },
- // ])
- // })
- // iterations not support nested iterations
- // it('should handle nested iterations', () => {
- // const dsl = '(iteration, outerIteration, (iteration, innerIteration -> plainNode1 -> plainNode2))'
- // const result = parseDSL(dsl)
- // expect(result).toEqual([
- // { id: 'outerIteration', node_id: 'outerIteration', title: 'outerIteration', node_type: 'iteration', execution_metadata: {}, status: 'succeeded' },
- // { id: 'innerIteration', node_id: 'innerIteration', title: 'innerIteration', node_type: 'iteration', execution_metadata: { iteration_id: 'outerIteration', iteration_index: 0 }, status: 'succeeded' },
- // { id: 'plainNode1', node_id: 'plainNode1', title: 'plainNode1', execution_metadata: { iteration_id: 'innerIteration', iteration_index: 0 }, status: 'succeeded' },
- // { id: 'plainNode2', node_id: 'plainNode2', title: 'plainNode2', execution_metadata: { iteration_id: 'innerIteration', iteration_index: 0 }, status: 'succeeded' },
- // ])
- // })
- // it('should handle nested iterations within parallel nodes', () => {
- // const dsl = '(parallel, parallelNode, (iteration, iterationNode, plainNode1, plainNode2))'
- // const result = parseDSL(dsl)
- // expect(result).toEqual([
- // { id: 'parallelNode', node_id: 'parallelNode', title: 'parallelNode', execution_metadata: { parallel_id: 'parallelNode' }, status: 'succeeded' },
- // { id: 'iterationNode', node_id: 'iterationNode', title: 'iterationNode', node_type: 'iteration', execution_metadata: { parallel_id: 'parallelNode', parallel_start_node_id: 'iterationNode' }, status: 'succeeded' },
- // { id: 'plainNode1', node_id: 'plainNode1', title: 'plainNode1', execution_metadata: { iteration_id: 'iterationNode', iteration_index: 0, parallel_id: 'parallelNode', parallel_start_node_id: 'iterationNode' }, status: 'succeeded' },
- // { id: 'plainNode2', node_id: 'plainNode2', title: 'plainNode2', execution_metadata: { iteration_id: 'iterationNode', iteration_index: 0, parallel_id: 'parallelNode', parallel_start_node_id: 'iterationNode' }, status: 'succeeded' },
- // ])
- // })
- it('should throw an error for unknown node types', () => {
- const dsl = '(unknown, nodeId)'
- expect(() => parseDSL(dsl)).toThrowError('Unknown nodeType: unknown')
- })
- })
|