import { createWorkflowStoreSnapshot } from '../mocks/store.mock' import { selectAllActionRelationsProducedAttributes } from '../selectors' import { create, createRelId } from '.' describe('connect two actions', () => { it('should connect actions and attributes available', () => { const api = create() const snapshot = createWorkflowStoreSnapshot() const relAId = createRelId() const relBId = createRelId() api.attach(relAId, snapshot.actions[0]) api.attach(relBId, snapshot.actions[1]) api.connect(relAId, relBId) api.connect(relAId, relBId) const state = api.getState() expect(state.relations[0].rel).toEqual([relBId]) expect(state.relations[1].rel).toEqual([]) const attrs = selectAllActionRelationsProducedAttributes()(state) expect(attrs.length).toEqual(4) }) it('should auto assign attributes', () => { const api = create() const snapshot = createWorkflowStoreSnapshot() const relAId = createRelId() const relBId = createRelId() const relCId = createRelId() api.attach(relAId, snapshot.actions[0]) api.attach(relBId, snapshot.actions[1]) api.attach(relCId, snapshot.actions[2]) api.connect(relAId, relBId) api.connect(relBId, relCId) api.autoAssignLeftAttributes(relBId) api.autoAssignLeftAttributes(relCId) const state = api.getState() const [first, second, third] = state.pipeline expect(second.consume).toEqual({ '__pipe-text:text': Object.keys(first.produce)[0], '__pipe-url:url': Object.keys(first.produce)[1], }) expect(third.consume).toEqual({ '__var-a-text:text': Object.keys(second.produce)[0], '__var-b-url:url': Object.keys(second.produce)[1], }) }) it('should verify a connection possibility', () => { const api = create() const snapshot = createWorkflowStoreSnapshot() const relAId = createRelId() const relBId = createRelId() const relCId = createRelId() api.attach(relAId, snapshot.actions[0]) api.attach(relBId, snapshot.actions[1]) api.attach(relCId, snapshot.actions[2]) const canConnectRelAToRelB = api.canConnect(relAId, relBId) canConnectRelAToRelB && api.connect(relAId, relBId) expect(canConnectRelAToRelB).toBeTruthy() const canConnectRelBToRelC = api.canConnect(relBId, relCId) canConnectRelBToRelC && api.connect(relBId, relCId) expect(canConnectRelBToRelC).toBeTruthy() expect(api.canConnect(relBId, relAId)).toBeFalsy() expect(api.canConnect(relCId, relBId)).toBeFalsy() try { api.canConnect(relCId, relCId) } catch (ex) { expect(ex).toBeDefined() } }) it('should auto assign if attributes are $empty_empty:null ', () => { // TODO: Implement expect(true).toEqual(true) }) })