diff options
Diffstat (limited to 'openecomp-ui/test/flows/test.js')
-rw-r--r-- | openecomp-ui/test/flows/test.js | 364 |
1 files changed, 200 insertions, 164 deletions
diff --git a/openecomp-ui/test/flows/test.js b/openecomp-ui/test/flows/test.js index 6e02e54816..621b6a1447 100644 --- a/openecomp-ui/test/flows/test.js +++ b/openecomp-ui/test/flows/test.js @@ -1,187 +1,223 @@ -/*! - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. +/* + * Copyright © 2016-2018 European Support Limited * * 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 + * 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. + * 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. */ 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'; +import { enums } from 'sdc-app/flows/FlowsConstants.js'; import { - FlowCreateFactory, - FlowPostRequestFactory, - FlowPostResponseFactory, - FlowFetchRequestFactory, - FlowFetchResponseFactory, - FlowDeleteRequestFactory, - FlowUpdateRequestFactory } from 'test-utils/factories/flows/FlowsFactories.js'; + FlowCreateFactory, + FlowPostRequestFactory, + FlowPostResponseFactory, + FlowFetchRequestFactory, + FlowFetchResponseFactory, + FlowDeleteRequestFactory, + FlowUpdateRequestFactory +} from 'test-utils/factories/flows/FlowsFactories.js'; -import {buildFromExistingObject} from 'test-utils/Util.js'; +import { buildFromExistingObject } from 'test-utils/Util.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).not.toBe(-1); +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).not.toBe(-1); }; -describe('Workflows and Management Flows Module Tests:', function () { - - - it('empty artifact should open flow creation modal', () => { - - const artifacts = {}; - - deepFreeze(store.getState()); - deepFreeze(artifacts); - FlowsActions.fetchFlowArtifacts(store.dispatch, { - artifacts, - diagramType: enums.WORKFLOW, - participants: [], - serviceID: '1234' - }); - let state = store.getState(); - expect(state.flows.isDisplayModal).toBe(true); - expect(state.flows.isModalInEditMode).toBe(false); - }); - - it('Close flow details editor modal', () => { - deepFreeze(store.getState()); - FlowsActions.closeFlowDetailsEditor(store.dispatch); - let state = store.getState(); - expect(state.flows.isDisplayModal).toBe(false); - expect(state.flows.isModalInEditMode).toBe(false); - }); - - it('Get Flows List from loaded artifact', () => { - - deepFreeze(store.getState()); - - const artifacts = { - 'test1': FlowPostResponseFactory.build({artifactName: 'test1'}), - 'kukuriku': FlowPostResponseFactory.build({ - 'artifactType': 'PUPPET', - 'artifactName': 'kukuriku', - }), - 'test3': FlowPostResponseFactory.build({artifactName: 'test3'}) - }; - - 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); - - 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); - - }); - - - it('Add New Flow', () => { - - deepFreeze(store.getState()); - - const flowCreateData = FlowCreateFactory.build(); - let expectedDataToBeSentInTheRequest = buildFromExistingObject(FlowPostRequestFactory, flowCreateData); - - mockRest.addHandler('post', ({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 buildFromExistingObject(FlowPostResponseFactory, expectedDataToBeSentInTheRequest); - }); - - return FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowCreateData}, NEW_FLOW).then(() => { - assertFlowDataAfterCreateFetchAndUpdate(flowCreateData); - }); - - - }); - - it('Fetch Flow', () => { - - deepFreeze(store.getState()); - - const flowFetchData = FlowFetchRequestFactory.build(); - - 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 buildFromExistingObject(FlowFetchResponseFactory, flowFetchData); - }); - - return FlowsActions.fetchArtifact(store.dispatch, {flow: flowFetchData}).then(() => { - assertFlowDataAfterCreateFetchAndUpdate(flowFetchData); - }); - }); - - it('Update Existing Flow', () => { - - deepFreeze(store.getState()); - const flowUpdateData = FlowUpdateRequestFactory.build(); - - mockRest.addHandler('post', ({baseUrl}) => { - expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowUpdateData.serviceID}/artifacts/${flowUpdateData.uniqueId}`); - - return buildFromExistingObject(FlowPostResponseFactory, flowUpdateData); - }); - - return FlowsActions.createOrUpdateFlow(store.dispatch, {flow: flowUpdateData}, !NEW_FLOW).then(() => { - assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData); - }); - - }); - - it('Delete Flow', () => { - - deepFreeze(store.getState()); - - const flowDeleteData = FlowDeleteRequestFactory.build(); - - mockRest.addHandler('destroy', ({baseUrl}) => { - expect(baseUrl).toBe(`/sdc1/feProxy/rest/v1/catalog/services/${flowDeleteData.serviceID}/artifacts/${flowDeleteData.uniqueId}`); - return {}; - }); - - return FlowsActions.deleteFlow(store.dispatch, {flow: flowDeleteData}).then(() => { - let {flowList} = store.getState().flows; - let index = flowList.findIndex(flow => flow.uniqueId === flowDeleteData.uniqueId); - expect(index).toBe(-1); - }); - }); +describe('Workflows and Management Flows Module Tests:', function() { + it('empty artifact should open flow creation modal', () => { + const artifacts = {}; + + deepFreeze(store.getState()); + deepFreeze(artifacts); + FlowsActions.fetchFlowArtifacts(store.dispatch, { + artifacts, + diagramType: enums.WORKFLOW, + participants: [], + serviceID: '1234' + }); + let state = store.getState(); + expect(state.modal).toBeDefined(); + }); + + it('Close flow details editor modal', () => { + deepFreeze(store.getState()); + FlowsActions.closeEditCreateWFModal(store.dispatch); + let state = store.getState(); + expect(state.modal).toBeFalsy(); + }); + + it('Get Flows List from loaded artifact', () => { + deepFreeze(store.getState()); + + const artifacts = { + test1: FlowPostResponseFactory.build({ artifactName: 'test1' }), + kukuriku: FlowPostResponseFactory.build({ + artifactType: 'PUPPET', + artifactName: 'kukuriku' + }), + test3: FlowPostResponseFactory.build({ artifactName: 'test3' }) + }; + + 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); + + let state = store.getState(); + 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); + }); + + it('Add New Flow', () => { + deepFreeze(store.getState()); + + const flowCreateData = FlowCreateFactory.build(); + let expectedDataToBeSentInTheRequest = buildFromExistingObject( + FlowPostRequestFactory, + flowCreateData + ); + + mockRest.addHandler('post', ({ 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 buildFromExistingObject( + FlowPostResponseFactory, + expectedDataToBeSentInTheRequest + ); + }); + + return FlowsActions.createOrUpdateFlow( + store.dispatch, + { flow: flowCreateData }, + NEW_FLOW + ).then(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowCreateData); + }); + }); + + it('Fetch Flow', () => { + deepFreeze(store.getState()); + + const flowFetchData = FlowFetchRequestFactory.build(); + + 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 buildFromExistingObject( + FlowFetchResponseFactory, + flowFetchData + ); + }); + + return FlowsActions.fetchArtifact(store.dispatch, { + flow: flowFetchData + }).then(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowFetchData); + }); + }); + + it('Update Existing Flow', () => { + deepFreeze(store.getState()); + const flowUpdateData = FlowUpdateRequestFactory.build(); + + mockRest.addHandler('post', ({ baseUrl }) => { + expect(baseUrl).toBe( + `/sdc1/feProxy/rest/v1/catalog/services/${ + flowUpdateData.serviceID + }/artifacts/${flowUpdateData.uniqueId}` + ); + + return buildFromExistingObject( + FlowPostResponseFactory, + flowUpdateData + ); + }); + + return FlowsActions.createOrUpdateFlow( + store.dispatch, + { flow: flowUpdateData }, + !NEW_FLOW + ).then(() => { + assertFlowDataAfterCreateFetchAndUpdate(flowUpdateData); + }); + }); + + it('Delete Flow', () => { + deepFreeze(store.getState()); + + const flowDeleteData = FlowDeleteRequestFactory.build(); + + mockRest.addHandler('destroy', ({ baseUrl }) => { + expect(baseUrl).toBe( + `/sdc1/feProxy/rest/v1/catalog/services/${ + flowDeleteData.serviceID + }/artifacts/${flowDeleteData.uniqueId}` + ); + return {}; + }); + + return FlowsActions.deleteFlow(store.dispatch, { + flow: flowDeleteData + }).then(() => { + let { flowList } = store.getState().flows; + let index = flowList.findIndex( + flow => flow.uniqueId === flowDeleteData.uniqueId + ); + expect(index).toBe(-1); + }); + }); }); |