import { nanoid } from 'nanoid' import * as actions from './actions/actions.slice' import { ActionStatus, ActionType } from './actions/types' import * as metadata from './metadata/metadata.slice' import * as labels from './pipeline/labels.slice' import * as pipeline from './pipeline/pipeline.slice' import * as relations from './relations/relations.slice' import { createStore } from './store' describe('store', () => { it('should create a store', () => { const store = createStore() const state = store.getState() store.dispatch( metadata.setMetadata({ ...state.metadata, name: 'New Flow', description: 'A new flow description', tags: ['__industry__', 'new', 'flow'], }) ) const act1: actions.ActionState = { id: nanoid(7), name: 'core__search@1.0', type: ActionType.SOURCE, metadata: { status: ActionStatus.ANNOUNCED, label: 'New Action', description: 'A new action description', icon: 'new-icon', cost: 0, time: 0, }, lAttributes: [], pAttributes: [], rAttributes: [], } const act2: actions.ActionState = { id: nanoid(7), name: 'core__api@1.0', type: ActionType.ACTION, metadata: { status: ActionStatus.ANNOUNCED, label: 'New Action #2', description: 'A new action description', icon: 'new-icon', cost: 0, time: 0, }, lAttributes: [], pAttributes: [], rAttributes: [], } const act3: actions.ActionState = { id: nanoid(7), name: 'core__ai@1.0', type: ActionType.ACTION, metadata: { status: ActionStatus.ANNOUNCED, label: 'New Action #3', description: 'A new action description', icon: 'new-icon', cost: 0, time: 0, }, lAttributes: [ /* ... */ ], pAttributes: [ /* ... */ ], rAttributes: [ /* ... */ ], } const rel1: relations.RelationState = { id: act1.id, actName: 'core__search@1.0', label: 'New Action', rel: [act2.id], x: 100, y: 0, } const rel2: relations.RelationState = { id: act2.id, actName: 'core__api@1.0', label: 'New Action #2', rel: [act3.id], x: 200, y: 0, } const rel3: relations.RelationState = { id: act3.id, actName: 'core__ai@1.0', label: 'New Action #3', rel: [], x: 300, y: 0, } store.dispatch(actions.addAction(act1)) store.dispatch(relations.addRelation(rel1)) store.dispatch(actions.addAction(act2)) store.dispatch(relations.addRelation(rel2)) store.dispatch(actions.addAction(act3)) store.dispatch(relations.addRelation(rel3)) const pip1: pipeline.PipelineState = { id: act1.id, params: {}, consume: {}, produce: { 'act1id__web_text:text': 'web_text:text', 'act1id__web_url:url': 'web_url:url', }, } const pip2: pipeline.PipelineState = { id: act2.id, params: {}, consume: { var_a: 'act1id__web_text:text', var_b: 'act1id__web_url:url', }, produce: { 'act2id__pipe_text:text': 'ai_text:text', 'act2id__pipe_url:url': 'ai_url:url', }, } const pip3: pipeline.PipelineState = { id: act3.id, params: {}, consume: { var_b: 'act1id__web_text:text', var_c: 'act2id__pipe_url:url', }, produce: { 'act3id__pipe_text:text': 'api_text:text', 'act3id__pipe_url:url': 'api_url:url', 'act3id__pipe_version:num': 'api_version:num', }, } const _labels: labels.LabelsState = { 'act1id__web_text:text': 'Drafter | Product Text ', 'act1id__web_url:url': 'Drafter | Product Url', } store.dispatch(pipeline.addPipeline(pip1)) store.dispatch(pipeline.addPipeline(pip2)) store.dispatch(pipeline.addPipeline(pip3)) store.dispatch(labels.setLabels(_labels)) }) })