Add new code new version
Change-Id: Ic02a76313503b526f17c3df29eb387a29fe6a42a
Signed-off-by: Michael Lando <ml636r@att.com>
diff --git a/openecomp-ui/test/flows/FlowsListEditor.test.js b/openecomp-ui/test/flows/FlowsListEditor.test.js
new file mode 100644
index 0000000..5342535
--- /dev/null
+++ b/openecomp-ui/test/flows/FlowsListEditor.test.js
@@ -0,0 +1,279 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+import expect from 'expect';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+import {mapStateToProps} from 'sdc-app/flows/FlowsListEditor.js';
+import FlowsListEditorView from 'sdc-app/flows/FlowsListEditorView.jsx';
+
+describe('Flows List Editor Mapper and View Classes: ', function () {
+
+ it('mapStateToProps mapper exists', () => {
+ expect(mapStateToProps).toExist();
+ });
+
+ it('mapStateToProps mapper - without flowList', () => {
+ let flows = {
+ isDisplayModal: true,
+ isModalInEditMode: false,
+ shouldShowWorkflowsEditor: undefined
+ };
+ let results = mapStateToProps({flows});
+ expect(results.flowList).toExist();
+ expect(results.flowList.length).toEqual(0);
+ expect(results.shouldShowWorkflowsEditor).toBe(true);
+ });
+
+ it('mapStateToProps mapper - populated flowList', () => {
+ let artifactName = 'test1', description = 'desc';
+ let flows = {
+ flowList: [{artifactName, description}],
+ isDisplayModal: true,
+ isModalInEditMode: false,
+ shouldShowWorkflowsEditor: false
+ };
+ let results = mapStateToProps({flows});
+ expect(results.flowList).toExist();
+ expect(results.flowList.length).toEqual(1);
+ expect(results.shouldShowWorkflowsEditor).toBe(false);
+ });
+
+ it('mapStateToProps mapper - populated flowList and currentFlow is in readonly', () => {
+ let artifactName = 'test1', description = 'desc';
+ let currentFlow = {artifactName, description, readonly: true};
+ let flows = {
+ flowList: [currentFlow],
+ currentFlow,
+ isDisplayModal: true,
+ isModalInEditMode: false,
+ shouldShowWorkflowsEditor: false
+ };
+ let results = mapStateToProps({flows});
+ expect(results.currentFlow).toExist();
+ expect(results.isCheckedOut).toEqual(false);
+ });
+
+ it('mapStateToProps mapper - populated flowList and currentFlow is in not readonly', () => {
+ let artifactName = 'test1', description = 'desc';
+ let currentFlow = {artifactName, description, readonly: false};
+ let flows = {
+ flowList: [currentFlow],
+ currentFlow,
+ isDisplayModal: true,
+ isModalInEditMode: false,
+ shouldShowWorkflowsEditor: false
+ };
+ let results = mapStateToProps({flows});
+ expect(results.currentFlow).toExist();
+ expect(results.isCheckedOut).toEqual(true);
+ });
+
+ it('basic view component run with empty flowList and should show the list', () => {
+ let renderer = TestUtils.createRenderer();
+ let artifactName = 'test1', description = 'desc';
+ let currentFlow = {artifactName, description, readonly: false};
+ renderer.render(<FlowsListEditorView shouldShowWorkflowsEditor={true} flowList={[currentFlow]}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toExist();
+ });
+
+ it('basic view component run with empty flowList and should show the diagram', () => {
+ const flow = {
+ 'artifactType': 'WORKFLOW',
+ 'participants': [
+ {
+ 'id': '1',
+ 'name': 'Customer'
+ },
+ {
+ 'id': '2',
+ 'name': 'CCD'
+ },
+ {
+ 'id': '3',
+ 'name': 'Infrastructure'
+ },
+ {
+ 'id': '4',
+ 'name': 'MSO'
+ },
+ {
+ 'id': '5',
+ 'name': 'SDN-C'
+ },
+ {
+ 'id': '6',
+ 'name': 'A&AI'
+ },
+ {
+ 'id': '7',
+ 'name': 'APP-C'
+ },
+ {
+ 'id': '8',
+ 'name': 'Cloud'
+ },
+ {
+ 'id': '9',
+ 'name': 'DCAE'
+ },
+ {
+ 'id': '10',
+ 'name': 'ALTS'
+ },
+ {
+ 'id': '11',
+ 'name': 'VF'
+ }
+ ],
+ 'serviceID': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b',
+ 'artifactDisplayName': 'zizizi',
+ 'artifactGroupType': 'INFORMATIONAL',
+ 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'artifactName': 'zizizi',
+ 'artifactLabel': 'zizizi',
+ 'artifactUUID': '0295a7cc-8c02-4105-9d7e-c30ce67ecd07',
+ 'artifactVersion': '1',
+ 'creationDate': 1470144601623,
+ 'lastUpdateDate': 1470144601623,
+ 'description': 'aslkjdfl asfdasdf',
+ 'mandatory': false,
+ 'timeout': 0,
+ 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'artifactChecksum': 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=',
+ 'heatParameters': [],
+ 'sequenceDiagramModel': {
+ 'diagram': {
+ 'metadata': {
+ 'id': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'name': 'zizizi',
+ 'ref': 'BLANK'
+ },
+ 'lifelines': [
+ {
+ 'id': '1',
+ 'name': 'Customer',
+ 'index': 1,
+ 'x': 175
+ },
+ {
+ 'id': '2',
+ 'name': 'CCD',
+ 'index': 2,
+ 'x': 575
+ },
+ {
+ 'id': '3',
+ 'name': 'Infrastructure',
+ 'index': 3,
+ 'x': 975
+ },
+ {
+ 'id': '4',
+ 'name': 'MSO',
+ 'index': 4,
+ 'x': 1375
+ },
+ {
+ 'id': '5',
+ 'name': 'SDN-C',
+ 'index': 5,
+ 'x': 1775
+ },
+ {
+ 'id': '6',
+ 'name': 'A&AI',
+ 'index': 6,
+ 'x': 2175
+ },
+ {
+ 'id': '7',
+ 'name': 'APP-C',
+ 'index': 7,
+ 'x': 2575
+ },
+ {
+ 'id': '8',
+ 'name': 'Cloud',
+ 'index': 8,
+ 'x': 2975
+ },
+ {
+ 'id': '9',
+ 'name': 'DCAE',
+ 'index': 9,
+ 'x': 3375
+ },
+ {
+ 'id': '10',
+ 'name': 'ALTS',
+ 'index': 10,
+ 'x': 3775
+ },
+ {
+ 'id': '11',
+ 'name': 'VF',
+ 'index': 11,
+ 'x': 4175
+ }
+ ],
+ 'steps': [
+ {
+ 'message': {
+ 'id': '9377-5036-c011-cb95-3a8b-82c6-bbb5-bc84',
+ 'name': '[Unnamed Message]',
+ 'type': 'request',
+ 'from': '1',
+ 'to': '2',
+ 'index': 1
+ }
+ },
+ {
+ 'message': {
+ 'id': '64c4-4fd1-b1da-4355-a060-6e48-ee47-c85c',
+ 'name': '[Unnamed Message]',
+ 'type': 'request',
+ 'from': '1',
+ 'to': '2',
+ 'index': 2
+ }
+ }
+ ]
+ }
+ }
+ };
+ let renderer = TestUtils.createRenderer();
+ renderer.render(<FlowsListEditorView currentFlow={flow} shouldShowWorkflowsEditor={false} flowList={[flow]}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toExist();
+ });
+
+ it('basic view component run with empty flowList and should show popup modal', () => {
+ let renderer = TestUtils.createRenderer();
+ let artifactName = 'test1', description = 'desc';
+ let currentFlow = {artifactName, description, readonly: false};
+ renderer.render(<FlowsListEditorView isDisplayModal={true} shouldShowWorkflowsEditor={true} flowList={[currentFlow]}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toExist();
+ });
+
+
+});
diff --git a/openecomp-ui/test/flows/flowsEditorModal.test.js b/openecomp-ui/test/flows/flowsEditorModal.test.js
new file mode 100644
index 0000000..d8da97a
--- /dev/null
+++ b/openecomp-ui/test/flows/flowsEditorModal.test.js
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+import expect from 'expect';
+import React from 'react';
+import TestUtils from 'react-addons-test-utils';
+import {mapStateToProps} from 'sdc-app/flows/FlowsEditorModal.js';
+import FlowsEditorModalView from 'sdc-app/flows/FlowsEditorModalView.jsx';
+
+describe('Flows Editor Modal Mapper and View Classes: ', function () {
+
+ it('mapStateToProps mapper exists', () => {
+ expect(mapStateToProps).toExist();
+ });
+
+ it('mapStateToProps mapper - without currentFlow', () => {
+ var flows = {
+ serviceID: '123',
+ diagramType: 'SOME_TYPE'
+ };
+ var results = mapStateToProps({flows});
+ expect(results.currentFlow).toExist();
+ expect(results.currentFlow.artifactName).toBe('');
+ expect(results.currentFlow.description).toBe('');
+ });
+
+ it('mapStateToProps mapper - populated currentFlow', () => {
+ let artifactName = 'test1', description = 'desc';
+ var flows = {
+ currentFlow: {artifactName, description},
+ serviceID: '123',
+ diagramType: 'SOME_TYPE'
+ };
+ var results = mapStateToProps({flows});
+ expect(results.currentFlow).toExist();
+ expect(results.currentFlow.artifactName).toBe(artifactName);
+ expect(results.currentFlow.description).toBe(description);
+ expect(results.currentFlow.serviceID).toBe(flows.serviceID);
+ expect(results.currentFlow.artifactType).toBe(flows.diagramType);
+ });
+
+ it('basic modal view component run with empty artifact', () => {
+ let renderer = TestUtils.createRenderer();
+ renderer.render(
+ <FlowsEditorModalView
+ onCancel={()=>{}}
+ onDataChanged={()=>{}}
+ currentFlow={{artifactName: '', description: ''}}/>);
+ let renderedOutput = renderer.getRenderOutput();
+ expect(renderedOutput).toExist();
+ });
+
+ it('modal view component run with data changed handler', done => {
+ let handler = () => done();
+ let document = TestUtils.renderIntoDocument(
+ <FlowsEditorModalView
+ onCancel={()=>{}}
+ onDataChanged={handler}
+ currentFlow={{artifactName: '', description: ''}}/>);
+ let result = TestUtils.scryRenderedDOMComponentsWithTag(document, 'input');
+ expect(result).toExist();
+ expect(result.length).toExist();
+ TestUtils.Simulate.change(result[0]);
+ });
+
+ it('modal view component - on save click', done => {
+ let handler = () => done();
+ var flowsEditorModalView = new FlowsEditorModalView({currentFlow: {}, onSubmit: handler});
+ flowsEditorModalView.onSaveClicked();
+ });
+
+});
diff --git a/openecomp-ui/test/flows/test.js b/openecomp-ui/test/flows/test.js
new file mode 100644
index 0000000..4c5ab78
--- /dev/null
+++ b/openecomp-ui/test/flows/test.js
@@ -0,0 +1,497 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+import expect from 'expect';
+import deepFreeze from 'deep-freeze';
+import mockRest from 'test-utils/MockRest.js';
+import store from 'sdc-app/AppStore.js';
+import FlowsActions from 'sdc-app/flows/FlowsActions.js';
+import {enums} from 'sdc-app/flows/FlowsConstants.js';
+
+const NEW_FLOW = true;
+
+let assertFlowDataAfterCreateFetchAndUpdate = (data) => {
+ let {flowList, serviceID, diagramType} = store.getState().flows;
+ expect(serviceID).toBe(data.serviceID);
+ expect(diagramType).toBe(data.artifactType);
+ let uniqueId = data.uniqueId || `${data.serviceID}.${data.artifactName}`;
+ let index = flowList.findIndex(flow => flow.uniqueId === uniqueId);
+ expect(index).toNotBe(-1);
+};
+
+describe('Workflows and Management Flows Module Tests:', function () {
+
+
+ it('empty artifact should open flow creation modal', done => {
+
+ const artifacts = {};
+
+ deepFreeze(store.getState());
+ deepFreeze(artifacts);
+ FlowsActions.fetchFlowArtifacts(store.dispatch, {
+ artifacts,
+ diagramType: enums.WORKFLOW,
+ participants: [],
+ serviceID: '1234'
+ });
+ setTimeout(() => {
+ let state = store.getState();
+ expect(state.flows.isDisplayModal).toBe(true);
+ expect(state.flows.isModalInEditMode).toBe(false);
+ done();
+ }, 50);
+ });
+
+ it('Close flow details editor modal', done => {
+ deepFreeze(store.getState());
+ FlowsActions.closeFlowDetailsEditor(store.dispatch);
+ setTimeout(() => {
+ let state = store.getState();
+ expect(state.flows.isDisplayModal).toBe(false);
+ expect(state.flows.isModalInEditMode).toBe(false);
+ done();
+ }, 50);
+ });
+
+ it('Get Flows List from loaded artifact', done => {
+
+ deepFreeze(store.getState());
+
+ const artifacts = {
+ 'test1': {
+ 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test1',
+ 'artifactType': 'NETWORK_CALL_FLOW',
+ 'artifactName': 'test1',
+ 'artifactChecksum': 'MzYxZGIyNjlkNjRmMTM4ZWMxM2FjNDUyNDQwMTI3NzM=',
+ 'attUidLastUpdater': 'cs0008',
+ 'updaterFullName': 'Carlos Santana',
+ 'creationDate': 1468164899724,
+ 'lastUpdateDate': 1468164899724,
+ 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test1',
+ 'artifactLabel': 'test1',
+ 'artifactCreator': 'cs0008',
+ 'description': 'www',
+ 'mandatory': false,
+ 'artifactDisplayName': 'test1',
+ 'serviceApi': false,
+ 'artifactGroupType': 'INFORMATIONAL',
+ 'timeout': 0,
+ 'artifactVersion': '1',
+ 'artifactUUID': '28d4cb95-bb46-4666-b858-e333671e6444',
+ 'payloadUpdateDate': 1468164900232
+ },
+ 'kukuriku': {
+ 'uniqueId': '0280b577-2c7b-426e-b7a2-f0dc16508c37.kukuriku',
+ 'artifactType': 'PUPPET',
+ 'artifactName': 'fuel.JPG',
+ 'artifactChecksum': 'OWEyYTVjMWFiNWQ4ZDIwZDUxYTE3Y2EzZmI3YTYyMjA=',
+ 'attUidLastUpdater': 'cs0008',
+ 'updaterFullName': 'Carlos Santana',
+ 'creationDate': 1467877631512,
+ 'lastUpdateDate': 1467877631512,
+ 'esId': '0280b577-2c7b-426e-b7a2-f0dc16508c37.kukuriku',
+ 'artifactLabel': 'kukuriku',
+ 'artifactCreator': 'cs0008',
+ 'description': 'asdfasdf',
+ 'mandatory': false,
+ 'artifactDisplayName': 'kukuriku',
+ 'serviceApi': false,
+ 'artifactGroupType': 'INFORMATIONAL',
+ 'timeout': 0,
+ 'artifactVersion': '1',
+ 'artifactUUID': 'c1e98336-03f4-4b2a-b6a5-08eca44fe3c4',
+ 'payloadUpdateDate': 1467877632722
+ },
+ 'test3': {
+ 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test3',
+ 'artifactType': 'NETWORK_CALL_FLOW',
+ 'artifactName': 'test3',
+ 'artifactChecksum': 'ZmJkZGU1M2M2ZWUxZTdmNGU5NTNiNTdiYTAzMmM1YzU=',
+ 'attUidLastUpdater': 'cs0008',
+ 'updaterFullName': 'Carlos Santana',
+ 'creationDate': 1468165068570,
+ 'lastUpdateDate': 1468165128827,
+ 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.test3',
+ 'artifactLabel': 'test3',
+ 'artifactCreator': 'cs0008',
+ 'description': '333',
+ 'mandatory': false,
+ 'artifactDisplayName': 'test3',
+ 'serviceApi': false,
+ 'artifactGroupType': 'INFORMATIONAL',
+ 'timeout': 0,
+ 'artifactVersion': '2',
+ 'artifactUUID': '0988027c-d19c-43db-8315-2c68fc773775',
+ 'payloadUpdateDate': 1468165129335
+ }
+ };
+
+ const artifactsArray = Object.keys(artifacts).map(artifact => artifact);
+
+ deepFreeze(artifacts);
+
+ deepFreeze(store.getState());
+
+ let actionData = {
+ artifacts,
+ diagramType: enums.WORKFLOW,
+ participants: [],
+ serviceID: '1234'
+ };
+ FlowsActions.fetchFlowArtifacts(store.dispatch, actionData);
+
+ setTimeout(() => {
+ let state = store.getState();
+ expect(state.flows.isDisplayModal).toBe(false);
+ expect(state.flows.isModalInEditMode).toBe(false);
+ expect(state.flows.flowList.length).toEqual(artifactsArray.length);
+ expect(state.flows.flowParticipants).toEqual(actionData.participants);
+ expect(state.flows.serviceID).toBe(actionData.serviceID);
+ expect(state.flows.diagramType).toBe(actionData.diagramType);
+ done();
+ }, 50);
+
+ });
+
+
+ it('Add New Flow', done => {
+
+ deepFreeze(store.getState());
+
+ const flowCreateData = deepFreeze({
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ description: 'aslkjdfl asfdasdf',
+ serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b',
+ });
+
+
+ let expectedDataToBeSentInTheRequest = {
+ artifactGroupType: 'INFORMATIONAL',
+ artifactLabel: 'zizizi',
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ description: 'aslkjdfl asfdasdf',
+ payloadData: 'eyJWRVJTSU9OIjp7Im1ham9yIjoxLCJtaW5vciI6MH0sImRlc2NyaXB0aW9uIjoiYXNsa2pkZmwgYXNmZGFzZGYifQ=='
+ };
+ mockRest.addHandler('create', ({data, baseUrl, options}) => {
+ expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowCreateData.serviceID}/artifacts/`);
+ expect(data.artifactLabel).toBe(expectedDataToBeSentInTheRequest.artifactLabel);
+ expect(data.artifactName).toBe(expectedDataToBeSentInTheRequest.artifactName);
+ expect(data.artifactType).toBe(expectedDataToBeSentInTheRequest.artifactType);
+ expect(data.description).toBe(expectedDataToBeSentInTheRequest.description);
+ expect(data.payloadData).toBe(expectedDataToBeSentInTheRequest.payloadData);
+ expect(options.md5).toBe(true);
+ return {
+ artifactChecksum: 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=',
+ artifactCreator: 'cs0008',
+ artifactDisplayName: 'zizizi',
+ artifactGroupType: 'INFORMATIONAL',
+ artifactLabel: 'zizizi',
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ artifactUUID: '0295a7cc-8c02-4105-9d7e-c30ce67ecd07',
+ artifactVersion: '1',
+ attUidLastUpdater: 'cs0008',
+ creationDate: 1470144601623,
+ description: 'aslkjdfl asfdasdf',
+ esId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ lastUpdateDate: 1470144601623,
+ mandatory: false,
+ payloadUpdateDate: 1470144602131,
+ serviceApi: false,
+ timeout: 0,
+ uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ updaterFullName: 'Carlos Santana',
+ };
+ });
+
+ FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowCreateData}, NEW_FLOW);
+
+ setTimeout(() => {
+ assertFlowDataAfterCreateFetchAndUpdate(flowCreateData);
+ done();
+ }, 50);
+ });
+
+ it('Fetch Flow', done => {
+
+ deepFreeze(store.getState());
+
+ const flowFetchData = {
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ description: 'aslkjdfl asfdasdf',
+ serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b',
+ uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ participants: []
+ };
+
+ mockRest.addHandler('fetch', ({baseUrl}) => {
+ //sdc1/feProxy/rest/v1/catalog/services/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b/artifacts/338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi
+ expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowFetchData.serviceID}/artifacts/${flowFetchData.uniqueId}`);
+ return {
+ artifactName: 'zizizi',
+ base64Contents: 'eyJWRVJTSU9OIjp7Im1ham9yIjoxLCJtaW5vciI6MH0sImRlc2NyaXB0aW9uIjoiYXNsa2pkZmwgYXNmZGFzZGYifQ=='
+ };
+ });
+
+ FlowsActions.fetchArtifact(store.dispatch, {flow: flowFetchData});
+
+ setTimeout(() => {
+ assertFlowDataAfterCreateFetchAndUpdate(flowFetchData);
+ done();
+ }, 50);
+ });
+
+ it('Update Existing Flow', done => {
+
+ deepFreeze(store.getState());
+
+ const flowUpdateData = {
+ 'artifactType': 'WORKFLOW',
+ 'participants': [
+ {
+ 'id': '1',
+ 'name': 'Customer'
+ },
+ {
+ 'id': '2',
+ 'name': 'CCD'
+ },
+ {
+ 'id': '3',
+ 'name': 'Infrastructure'
+ },
+ {
+ 'id': '4',
+ 'name': 'MSO'
+ },
+ {
+ 'id': '5',
+ 'name': 'SDN-C'
+ },
+ {
+ 'id': '6',
+ 'name': 'A&AI'
+ },
+ {
+ 'id': '7',
+ 'name': 'APP-C'
+ },
+ {
+ 'id': '8',
+ 'name': 'Cloud'
+ },
+ {
+ 'id': '9',
+ 'name': 'DCAE'
+ },
+ {
+ 'id': '10',
+ 'name': 'ALTS'
+ },
+ {
+ 'id': '11',
+ 'name': 'VF'
+ }
+ ],
+ 'serviceID': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b',
+ 'artifactDisplayName': 'zizizi',
+ 'artifactGroupType': 'INFORMATIONAL',
+ 'uniqueId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'artifactName': 'zizizi',
+ 'artifactLabel': 'zizizi',
+ 'artifactUUID': '0295a7cc-8c02-4105-9d7e-c30ce67ecd07',
+ 'artifactVersion': '1',
+ 'creationDate': 1470144601623,
+ 'lastUpdateDate': 1470144601623,
+ 'description': 'aslkjdfl asfdasdf',
+ 'mandatory': false,
+ 'timeout': 0,
+ 'esId': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'artifactChecksum': 'NjBmYjc4NGM5MWIwNmNkMDhmMThhMDAwYmQxYjBiZTU=',
+ 'heatParameters': [],
+ 'sequenceDiagramModel': {
+ 'diagram': {
+ 'metadata': {
+ 'id': '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ 'name': 'zizizi',
+ 'ref': 'BLANK'
+ },
+ 'lifelines': [
+ {
+ 'id': '1',
+ 'name': 'Customer',
+ 'index': 1,
+ 'x': 175
+ },
+ {
+ 'id': '2',
+ 'name': 'CCD',
+ 'index': 2,
+ 'x': 575
+ },
+ {
+ 'id': '3',
+ 'name': 'Infrastructure',
+ 'index': 3,
+ 'x': 975
+ },
+ {
+ 'id': '4',
+ 'name': 'MSO',
+ 'index': 4,
+ 'x': 1375
+ },
+ {
+ 'id': '5',
+ 'name': 'SDN-C',
+ 'index': 5,
+ 'x': 1775
+ },
+ {
+ 'id': '6',
+ 'name': 'A&AI',
+ 'index': 6,
+ 'x': 2175
+ },
+ {
+ 'id': '7',
+ 'name': 'APP-C',
+ 'index': 7,
+ 'x': 2575
+ },
+ {
+ 'id': '8',
+ 'name': 'Cloud',
+ 'index': 8,
+ 'x': 2975
+ },
+ {
+ 'id': '9',
+ 'name': 'DCAE',
+ 'index': 9,
+ 'x': 3375
+ },
+ {
+ 'id': '10',
+ 'name': 'ALTS',
+ 'index': 10,
+ 'x': 3775
+ },
+ {
+ 'id': '11',
+ 'name': 'VF',
+ 'index': 11,
+ 'x': 4175
+ }
+ ],
+ 'steps': [
+ {
+ 'message': {
+ 'id': '9377-5036-c011-cb95-3a8b-82c6-bbb5-bc84',
+ 'name': '[Unnamed Message]',
+ 'type': 'request',
+ 'from': '1',
+ 'to': '2',
+ 'index': 1
+ }
+ },
+ {
+ 'message': {
+ 'id': '64c4-4fd1-b1da-4355-a060-6e48-ee47-c85c',
+ 'name': '[Unnamed Message]',
+ 'type': 'request',
+ 'from': '1',
+ 'to': '2',
+ 'index': 2
+ }
+ }
+ ]
+ }
+ }
+ };
+
+ mockRest.addHandler('create', ({baseUrl}) => {
+ expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowUpdateData.serviceID}/artifacts/${flowUpdateData.uniqueId}`);
+
+ return {
+ artifactChecksum: 'MmE5MWJmN2ZlN2FhM2JhMzA0NGQ1ODMyOWFhNWI0NDA=',
+ artifactCreator: 'cs0008',
+ artifactDisplayName: 'zizizi',
+ artifactGroupType: 'INFORMATIONAL',
+ artifactLabel: 'zizizi',
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ artifactUUID: '3319335b-969e-4d72-b5a2-409645de6d64',
+ artifactVersion: '3',
+ attUidLastUpdater: 'cs0008',
+ creationDate: 1470144601623,
+ description: 'aslkjdfl asfdasdf',
+ esId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ lastUpdateDate: 1470208425904,
+ mandatory: false,
+ payloadUpdateDate: 1470208426424,
+ serviceApi: false,
+ timeout: 0,
+ uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ updaterFullName: 'Carlos Santana'
+ };
+ });
+
+ FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowUpdateData}, !NEW_FLOW);
+
+ setTimeout(() => {
+ assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData);
+ done();
+ }, 50);
+ });
+
+ it('Delete Flow', done => {
+
+ deepFreeze(store.getState());
+
+ const flowDeleteData = deepFreeze({
+ artifactName: 'zizizi',
+ artifactType: 'WORKFLOW',
+ description: 'aslkjdfl asfdasdf',
+ serviceID: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b',
+ uniqueId: '338d75f0-aec8-4eb4-89c9-8733fcd9bf3b.zizizi',
+ participants: []
+ });
+
+ mockRest.addHandler('destroy', ({baseUrl}) => {
+ expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowDeleteData.serviceID}/artifacts/${flowDeleteData.uniqueId}`);
+ return {};
+ });
+
+ FlowsActions.deleteFlow(store.dispatch, {flow: flowDeleteData});
+
+ setTimeout(() => {
+ let {flowList} = store.getState().flows;
+ let index = flowList.findIndex(flow => flow.uniqueId === flowDeleteData.uniqueId);
+ expect(index).toBe(-1);
+ done();
+ }, 50);
+ });
+
+});
+