diff options
Diffstat (limited to 'openecomp-ui/test')
-rw-r--r-- | openecomp-ui/test/activity-log/ActivityLog.test.js | 185 | ||||
-rw-r--r-- | openecomp-ui/test/flows/test.js | 364 | ||||
-rw-r--r-- | openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js | 124 | ||||
-rw-r--r-- | openecomp-ui/test/licenseModel/test.js | 3 | ||||
-rw-r--r-- | openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js | 76 | ||||
-rw-r--r-- | openecomp-ui/test/onboard/filter/filterView.test.js | 2 | ||||
-rw-r--r-- | openecomp-ui/test/softwareProduct/processes/test.js | 877 | ||||
-rw-r--r-- | openecomp-ui/test/softwareProduct/test.js | 3 | ||||
-rw-r--r-- | openecomp-ui/test/utils/errorResponseHandler.test.js | 237 |
9 files changed, 1035 insertions, 836 deletions
diff --git a/openecomp-ui/test/activity-log/ActivityLog.test.js b/openecomp-ui/test/activity-log/ActivityLog.test.js index d2c135eb79..a397197773 100644 --- a/openecomp-ui/test/activity-log/ActivityLog.test.js +++ b/openecomp-ui/test/activity-log/ActivityLog.test.js @@ -1,99 +1,142 @@ -/*! - * 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 React from 'react'; -import {mount} from 'enzyme'; -import {cloneAndSet} from 'test-utils/Util.js'; -import ActivityLogView, {ActivityListItem} from 'sdc-app/common/activity-log/ActivityLogView.jsx'; +import { mount } from 'enzyme'; +import { cloneAndSet } from 'test-utils/Util.js'; +import ActivityLogView, { + ActivityListItem +} from 'sdc-app/common/activity-log/ActivityLogView.jsx'; import ListEditorView from 'nfvo-components/listEditor/ListEditorView.jsx'; import ActivityLogActionHelper from 'sdc-app/common/activity-log/ActivityLogActionHelper.js'; -import {mapStateToProps} from 'sdc-app/common/activity-log/ActivityLog.js'; -import {storeCreator} from 'sdc-app/AppStore.js'; +import { mapStateToProps } from 'sdc-app/common/activity-log/ActivityLog.js'; +import { storeCreator } from 'sdc-app/AppStore.js'; import mockRest from 'test-utils/MockRest.js'; -import {ActivityLogStoreFactory} from 'test-utils/factories/activity-log/ActivityLogFactories.js'; +import { ActivityLogStoreFactory } from 'test-utils/factories/activity-log/ActivityLogFactories.js'; import VersionFactory from 'test-utils/factories/common/VersionFactory.js'; -import {UserFactory} from 'test-utils/factories/users/UsersFactories.js'; +import { UserFactory } from 'test-utils/factories/users/UsersFactories.js'; -import {actionTypes as userActionTypes} from 'sdc-app/onboarding/users/UsersConstants.js'; +import { actionTypes as userActionTypes } from 'sdc-app/onboarding/users/UsersConstants.js'; -describe('Activity Log Module Tests', function () { - const LICENSE_MODEL_ID = '555'; - const version = VersionFactory.build(); - const usersList = UserFactory.buildList(3); +describe('Activity Log Module Tests', function() { + const LICENSE_MODEL_ID = '555'; + const version = VersionFactory.build(); + const usersList = UserFactory.buildList(3); - it('mapStateToProps mapper exists', () => { - expect(mapStateToProps).toBeTruthy(); - }); + it('mapStateToProps mapper exists', () => { + expect(mapStateToProps).toBeTruthy(); + }); - it('Loads Activity Log and renders into jsx', () => { - const store = storeCreator(); - const dispatch = store.dispatch; - dispatch({ - type: userActionTypes.USERS_LIST_LOADED, - usersList - }); - let ActivityLogList = ActivityLogStoreFactory.buildList(1, {user: usersList[0].userId}); - const expectedStore = cloneAndSet(store.getState(), 'licenseModel.activityLog', ActivityLogList); + it('Loads Activity Log and renders into jsx', () => { + const store = storeCreator(); + const dispatch = store.dispatch; + dispatch({ + type: userActionTypes.USERS_LIST_LOADED, + usersList + }); + let ActivityLogList = ActivityLogStoreFactory.buildList(1, { + user: usersList[0].userId + }); + const expectedStore = cloneAndSet( + store.getState(), + 'licenseModel.activityLog', + ActivityLogList + ); - mockRest.addHandler('fetch', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`/onboarding-api/v1.0/items/${LICENSE_MODEL_ID}/versions/${version.id}/activity-logs`); - expect(data).toEqual(undefined); - expect(options).toEqual(undefined); - return {results: ActivityLogList}; - }); + mockRest.addHandler('fetch', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `/onboarding-api/v1.0/items/${LICENSE_MODEL_ID}/versions/${ + version.id + }/activity-logs` + ); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return { results: ActivityLogList }; + }); - return ActivityLogActionHelper.fetchActivityLog(dispatch, {itemId: LICENSE_MODEL_ID, versionId: version.id}).then(() => { - const state = store.getState(); - expect(state).toEqual(expectedStore); - const props = mapStateToProps(state); - expect(props.activities).toEqual(ActivityLogList.map(activity => - ({...activity, user: {id: activity.user, name: usersList.find(userObject => userObject.userId === activity.user).fullName}}) - )); - const wrapper = mount(<ActivityLogView {...props}/>); - expect(wrapper).toBeTruthy(); - }); - }); + return ActivityLogActionHelper.fetchActivityLog(dispatch, { + itemId: LICENSE_MODEL_ID, + versionId: version.id + }).then(() => { + const state = store.getState(); + expect(state).toEqual(expectedStore); + const props = mapStateToProps(state); + expect(props.activities).toEqual( + ActivityLogList.map(activity => ({ + ...activity, + user: { + id: activity.user, + name: usersList.find( + userObject => userObject.userId === activity.user + ).fullName + } + })) + ); + const wrapper = mount(<ActivityLogView {...props} />); + expect(wrapper).toBeTruthy(); + }); + }); - it('Tests Activity Log filter and sorting abilities', () => { - const firstDate = new Date(); - const secondDate = new Date(); - secondDate.setDate(firstDate.getDate() - 1); + it('Tests Activity Log filter and sorting abilities', () => { + const firstDate = new Date(); + const secondDate = new Date(); + secondDate.setDate(firstDate.getDate() - 1); - const firstTimestamp = firstDate.getTime(); - const secondTimestamp = secondDate.getTime(); + const firstTimestamp = firstDate.getTime(); + const secondTimestamp = secondDate.getTime(); - let firstActivity = ActivityLogStoreFactory.build({user: usersList[0].userId, timestamp: firstTimestamp}); - let secondActivity = ActivityLogStoreFactory.build({user: usersList[1].userId, timestamp: secondTimestamp, status: {success: false, message: 'error'}}); - let props = mapStateToProps({users: {usersList}, licenseModel: {activityLog: [firstActivity, secondActivity]}}); - const wrapper = mount(<ActivityLogView {...props}/>); - expect(wrapper.find(ActivityListItem).length).toEqual(3); // Includes Header component + let firstActivity = ActivityLogStoreFactory.build({ + user: usersList[0].userId, + timestamp: firstTimestamp + }); + let secondActivity = ActivityLogStoreFactory.build({ + user: usersList[1].userId, + timestamp: secondTimestamp, + status: { success: false, message: 'error' } + }); + let props = mapStateToProps({ + users: { usersList }, + licenseModel: { activityLog: [firstActivity, secondActivity] } + }); + const wrapper = mount(<ActivityLogView {...props} />); + expect(wrapper.find(ActivityListItem).length).toEqual(3); // Includes Header component - const firstInstance = wrapper.find(ActivityListItem).at(1); - const firstInstanceProps = firstInstance.props(); - expect(firstInstanceProps.activity.timestamp).toEqual(secondTimestamp); // Default sorting is descending + const firstInstance = wrapper.find(ActivityListItem).at(1); + const firstInstanceProps = firstInstance.props(); + expect(firstInstanceProps.activity.timestamp).toEqual(secondTimestamp); // Default sorting is descending - const header = wrapper.find(ActivityListItem).at(0); - header.props().onSort(); - const newFirstInstance = wrapper.find(ActivityListItem).at(1); - const newFirstInstanceProps = newFirstInstance.props(); - expect(newFirstInstanceProps.activity.timestamp).toEqual(firstTimestamp); + const header = wrapper.find(ActivityListItem).at(0); - const listEditor = wrapper.find(ListEditorView); - listEditor.props().onFilter(usersList[1].fullName); - expect(wrapper.find(ActivityListItem).length).toEqual(2); - expect(wrapper.find(ActivityListItem).at(1).props().activity.user.name).toEqual(usersList[1].fullName); - }); + header.props().onSort(); + wrapper.update(); + const newFirstInstance = wrapper.find(ActivityListItem).at(1); + const newFirstInstanceProps = newFirstInstance.props(); + expect(newFirstInstanceProps.activity.timestamp).toEqual( + firstTimestamp + ); + + const listEditor = wrapper.find(ListEditorView); + listEditor.props().onFilter(usersList[1].fullName); + wrapper.update(); + expect(wrapper.find(ActivityListItem).length).toEqual(2); + expect( + wrapper + .find(ActivityListItem) + .at(1) + .props().activity.user.name + ).toEqual(usersList[1].fullName); + }); }); 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); + }); + }); }); diff --git a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js index 565b8a436b..4957e3bbaf 100644 --- a/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js +++ b/openecomp-ui/test/licenseModel/featureGroups/LicenseModelFeatureGroupListEditor.test.js @@ -16,75 +16,75 @@ import React from 'react'; import TestUtils from 'react-dom/test-utils'; -import {mapStateToProps} from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js'; +import { mapStateToProps } from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js'; import FeatureGroupsListEditorView from 'sdc-app/onboarding/licenseModel/featureGroups/FeatureGroupListEditorView.jsx'; import { FeatureGroupStoreFactory } from 'test-utils/factories/licenseModel/FeatureGroupFactories.js'; -import {LicenseModelOverviewFactory} from 'test-utils/factories/licenseModel/LicenseModelFactories.js'; +import { LicenseModelOverviewFactory } from 'test-utils/factories/licenseModel/LicenseModelFactories.js'; import { buildListFromFactory } from 'test-utils/Util.js'; import VersionControllerUtilsFactory from 'test-utils/factories/softwareProduct/VersionControllerUtilsFactory.js'; -describe('License Model Feature Group List Module Tests', function () { +describe('License Model Feature Group List Module Tests', function() { + it('should mapper exist', () => { + expect(mapStateToProps).toBeTruthy(); + }); - it('should mapper exist', () => { - expect(mapStateToProps).toBeTruthy(); - }); + it('should return empty data', () => { + let licenseModel = LicenseModelOverviewFactory.build({ + featureGroup: { + featureGroupEditor: {}, + featureGroupsList: [] + }, + licenseModelEditor: { + data: { + ...VersionControllerUtilsFactory.build() + } + } + }); + var results = mapStateToProps({ licenseModel }); + expect(results.vendorName).toEqual(undefined); + expect(results.featureGroupsList).toEqual([]); + }); + it('should return true for show and edit mode and vendorName should be not empty', () => { + let licenseModel = LicenseModelOverviewFactory.build({ + featureGroup: { + featureGroupEditor: { + data: FeatureGroupStoreFactory.build() + }, + featureGroupsList: [] + } + }); + var results = mapStateToProps({ licenseModel }); + expect(results.vendorName).toEqual( + licenseModel.licenseModelEditor.data.vendorName + ); + }); - it('should return empty data', () => { - - - let licenseModel = LicenseModelOverviewFactory.build({ - featureGroup: { - featureGroupEditor: {}, - featureGroupsList: [] - }, - licenseModelEditor: { - data:{ - ...VersionControllerUtilsFactory.build() - } - } - }); - var results = mapStateToProps({licenseModel}); - expect(results.vendorName).toEqual(undefined); - expect(results.featureGroupsModal.show).toEqual(false); - expect(results.featureGroupsModal.editMode).toEqual(false); - expect(results.featureGroupsList).toEqual([]); - }); - - it('should return true for show and edit mode and vendorName should be not empty', () => { - - let licenseModel = LicenseModelOverviewFactory.build({ - featureGroup: { - featureGroupEditor: { - data: FeatureGroupStoreFactory.build() - }, - featureGroupsList: [] - } - }); - var results = mapStateToProps({licenseModel}); - expect(results.featureGroupsModal.show).toEqual(true); - expect(results.featureGroupsModal.editMode).toEqual(true); - expect(results.vendorName).toEqual(licenseModel.licenseModelEditor.data.vendorName); - }); - - it('jsx view test', () => { - var view = TestUtils.renderIntoDocument(<FeatureGroupsListEditorView vendorName='' - licenseModelId='' - featureGroupsModal={{show: false, editMode: false}} - isReadOnlyMode={false} - onAddFeatureGroupClick={()=>{}} - featureGroupsList={[]} />); - expect(view).toBeTruthy(); - }); - - it('jsx view list test', () => { - var view = TestUtils.renderIntoDocument(<FeatureGroupsListEditorView vendorName='' - licenseModelId='' - featureGroupsModal={{show: false, editMode: true}} - isReadOnlyMode={false} - onAddFeatureGroupClick={()=>{}} - featureGroupsList={buildListFromFactory(FeatureGroupStoreFactory)} />); - expect(view).toBeTruthy(); - }); + it('jsx view test', () => { + var view = TestUtils.renderIntoDocument( + <FeatureGroupsListEditorView + vendorName="" + licenseModelId="" + isReadOnlyMode={false} + onAddFeatureGroupClick={() => {}} + featureGroupsList={[]} + /> + ); + expect(view).toBeTruthy(); + }); + it('jsx view list test', () => { + var view = TestUtils.renderIntoDocument( + <FeatureGroupsListEditorView + vendorName="" + licenseModelId="" + isReadOnlyMode={false} + onAddFeatureGroupClick={() => {}} + featureGroupsList={buildListFromFactory( + FeatureGroupStoreFactory + )} + /> + ); + expect(view).toBeTruthy(); + }); }); diff --git a/openecomp-ui/test/licenseModel/test.js b/openecomp-ui/test/licenseModel/test.js index bbebcaf079..0d72d5d369 100644 --- a/openecomp-ui/test/licenseModel/test.js +++ b/openecomp-ui/test/licenseModel/test.js @@ -96,11 +96,10 @@ describe('License Model Module Tests', function() { }; const expectedSuccessModal = { cancelButtonText: 'OK', - modalClassName: 'notification-modal', msg: 'This license model successfully submitted', timeout: 2000, title: 'Submit Succeeded', - type: 'success' + type: 'info' }; const versionsList = { diff --git a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js index 0738bbb03d..cc694398ec 100644 --- a/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js +++ b/openecomp-ui/test/nfvo-components/editor/TabulatedEditor.test.js @@ -14,43 +14,55 @@ * limitations under the License. */ - import React from 'react'; import ShallowRenderer from 'react-test-renderer/shallow'; import TestUtils from 'react-dom/test-utils'; import TabulatedEditor from 'nfvo-components/editor/TabulatedEditor.jsx'; import { Provider } from 'react-redux'; -import {storeCreator} from 'sdc-app/AppStore.js'; - -describe('Tabulated Editor test: ', function () { - const store = storeCreator(); - it('basic view test', () => { - const renderer = new ShallowRenderer(); - renderer.render( - <Provider store={store}><TabulatedEditor><button>test</button></TabulatedEditor></Provider> - ); - let renderedOutput = renderer.getRenderOutput(); - expect(renderedOutput).toBeTruthy(); - - }); +import { storeCreator } from 'sdc-app/AppStore.js'; - it('handle func test', () => { - let props = { - navigationBarProps: { - groups: [], - onNavigationItemClick: ()=>{} - }, - versionControllerProps: { - isCheckedOut: false, - version: {id: '0.1', label: '0.1'}, - viewableVersions: [{id: '0.1', label: '0.1'}], - itemPermission: {isCertified: false, isCollaborator: true, isDirty: false}, - onSubmit: ()=>{}, - onRevert: ()=>{} - } - }; - const view = TestUtils.renderIntoDocument(<Provider store={store}><TabulatedEditor {...props}><button>test</button></TabulatedEditor></Provider>); - expect(view).toBeTruthy(); - }); +describe('Tabulated Editor test: ', function() { + const store = storeCreator(); + it('basic view test', () => { + const renderer = new ShallowRenderer(); + renderer.render( + <Provider store={store}> + <TabulatedEditor> + <button>test</button> + </TabulatedEditor> + </Provider> + ); + let renderedOutput = renderer.getRenderOutput(); + expect(renderedOutput).toBeTruthy(); + }); + it('handle func test', () => { + let props = { + navigationBarProps: { + groups: [], + onNavigationItemClick: () => {}, + activeItemId: 'test' + }, + versionControllerProps: { + isCheckedOut: false, + version: { id: '0.1', label: '0.1' }, + viewableVersions: [{ id: '0.1', label: '0.1' }], + itemPermission: { + isCertified: false, + isCollaborator: true, + isDirty: false + }, + onSubmit: () => {}, + onRevert: () => {} + } + }; + const view = TestUtils.renderIntoDocument( + <Provider store={store}> + <TabulatedEditor {...props}> + <button>test</button> + </TabulatedEditor> + </Provider> + ); + expect(view).toBeTruthy(); + }); }); diff --git a/openecomp-ui/test/onboard/filter/filterView.test.js b/openecomp-ui/test/onboard/filter/filterView.test.js index 5e3c93bef2..9e6e1ee4c2 100644 --- a/openecomp-ui/test/onboard/filter/filterView.test.js +++ b/openecomp-ui/test/onboard/filter/filterView.test.js @@ -28,7 +28,7 @@ describe('Filter component view Tests', () => { <Filter /> </Provider> ); - const filter = wrapper.find('.catalog-filter'); + const filter = wrapper.find('.catalog-filter').hostNodes(); expect(filter.hasClass('catalog-filter')).toBeTruthy(); }); }); diff --git a/openecomp-ui/test/softwareProduct/processes/test.js b/openecomp-ui/test/softwareProduct/processes/test.js index 6ad696ae85..90de1e327f 100644 --- a/openecomp-ui/test/softwareProduct/processes/test.js +++ b/openecomp-ui/test/softwareProduct/processes/test.js @@ -1,410 +1,507 @@ -/*! - * 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 {cloneAndSet} from 'test-utils/Util.js'; -import {storeCreator} from 'sdc-app/AppStore.js'; +import { cloneAndSet } from 'test-utils/Util.js'; +import { storeCreator } from 'sdc-app/AppStore.js'; import Configuration from 'sdc-app/config/Configuration.js'; import SoftwareProductProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js'; import { - VSPProcessPostFactory, - VSPProcessStoreFactory, - VSPProcessPostFactoryWithType, - VSPProcessStoreFactoryWithType, - VSPProcessStoreWithFormDataFactory, - VSPProcessPostWithFormDataFactory, - VSPProcessStoreWithArtifactNameFactory } from 'test-utils/factories/softwareProduct/SoftwareProductProcessFactories.js'; -import {buildFromExistingObject} from 'test-utils/Util.js'; -import {VSPEditorFactory} from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js'; + VSPProcessPostFactory, + VSPProcessStoreFactory, + VSPProcessPostFactoryWithType, + VSPProcessStoreFactoryWithType, + VSPProcessStoreWithFormDataFactory, + VSPProcessPostWithFormDataFactory, + VSPProcessStoreWithArtifactNameFactory +} from 'test-utils/factories/softwareProduct/SoftwareProductProcessFactories.js'; +import { buildFromExistingObject } from 'test-utils/Util.js'; +import { VSPEditorFactory } from 'test-utils/factories/softwareProduct/SoftwareProductEditorFactories.js'; import VersionFactory from 'test-utils/factories/common/VersionFactory.js'; const softwareProductId = '123'; const version = VersionFactory.build(); -describe('Software Product Processes Module Tests', function () { - - let restPrefix = ''; - - beforeAll(function() { - restPrefix = Configuration.get('restPrefix'); - deepFreeze(restPrefix); - }); - - //** - //** ADD - //** - it('Add Software Products Processes', () => { - - const store = storeCreator(); - deepFreeze(store.getState()); - - const softwareProductProcessFromResponse = 'ADDED_ID'; - - const softwareProductProcessAfterAdd = VSPProcessStoreFactory.build({id: softwareProductProcessFromResponse}); - const softwareProductPostRequest = buildFromExistingObject(VSPProcessPostFactory, softwareProductProcessAfterAdd); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]); - - mockRest.addHandler('post', ({data, options, baseUrl}) => { - - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`); - expect(data).toEqual(softwareProductPostRequest); - expect(options).toEqual(undefined); - return { - returnCode: 'OK', - value: softwareProductProcessFromResponse - }; - }); - - return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, - { - softwareProductId, - version, - previousProcess: null, - process: softwareProductPostRequest - } - ).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - it('Add Software Products Processes with type', () => { - - const store = storeCreator(); - deepFreeze(store.getState()); - - const softwareProductProcessFromResponse = 'ADDED_ID'; - - const softwareProductProcessAfterAdd = VSPProcessStoreFactoryWithType.build({id: softwareProductProcessFromResponse}); - const softwareProductPostRequest = buildFromExistingObject(VSPProcessPostFactoryWithType, softwareProductProcessAfterAdd); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]); - - mockRest.addHandler('post', ({data, options, baseUrl}) => { - - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`); - expect(data).toEqual(softwareProductPostRequest); - expect(options).toEqual(undefined); - return { - returnCode: 'OK', - value: softwareProductProcessFromResponse - }; - }); - - return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, - { - softwareProductId, - version, - previousProcess: null, - process: softwareProductPostRequest - } - ).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - it('Add Software Products Processes with uploaded file', () => { - - const store = storeCreator(); - deepFreeze(store.getState()); - - const softwareProductPostRequest = VSPProcessPostFactoryWithType.build(); - const softwareProductProcessToAdd = VSPProcessPostWithFormDataFactory.build(softwareProductPostRequest); - const softwareProductProcessAfterAdd = VSPProcessStoreWithFormDataFactory.build(); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]); - - mockRest.addHandler('post', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`); - expect(data).toEqual(softwareProductPostRequest); - expect(options).toEqual(undefined); - return { - returnCode: 'OK', - value: softwareProductProcessAfterAdd.id - }; - }); - - mockRest.addHandler('post', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${softwareProductProcessAfterAdd.id}/upload`); - expect(data).toEqual(softwareProductProcessToAdd.formData); - expect(options).toEqual(undefined); - return {returnCode: 'OK'}; - }); - - return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, - { - softwareProductId, - version, - previousProcess: null, - process: softwareProductProcessToAdd - } - ).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - //** - //** UPDATE - //** - it('Update Software Products Processes', () => { - const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(1); - deepFreeze(softwareProductProcessesList); - - const store = storeCreator({ - softwareProduct: { - softwareProductProcesses: { - processesList: softwareProductProcessesList - } - } - }); - deepFreeze(store.getState()); - - const toBeUpdatedProcessId = softwareProductProcessesList[0].id; - const previousProcessData = softwareProductProcessesList[0]; - const processUpdateData = VSPProcessStoreWithArtifactNameFactory.build( - {...previousProcessData, - name: 'Pr1_UPDATED', - description: 'string_UPDATED', - type: 'Other' - } - ); - - deepFreeze(processUpdateData); - - const processPutRequest = VSPProcessPostFactory.build({ - name: 'Pr1_UPDATED', - description: 'string_UPDATED', - type: 'Other' - }); - deepFreeze(processPutRequest); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [processUpdateData]); - - - mockRest.addHandler('put', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${toBeUpdatedProcessId}`); - expect(data).toEqual(processPutRequest); - expect(options).toEqual(undefined); - return {returnCode: 'OK'}; - }); - - return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, - { - softwareProductId, - version, - previousProcess: previousProcessData, - process: processUpdateData - } - ).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - it('Update Software Products Processes and uploaded file', () => { - const previousProcessData = VSPProcessStoreWithArtifactNameFactory.build(); - deepFreeze(previousProcessData); - - const store = storeCreator({ - softwareProduct: { - softwareProductProcesses: { - processesList: [previousProcessData] - } - } - }); - deepFreeze(store.getState()); - - const newProcessToUpdate = VSPProcessStoreWithFormDataFactory.build({ - ...previousProcessData, - name: 'new name', - formData: { - name: 'new artifact name' - } - }); - deepFreeze(newProcessToUpdate); - - const newProcessToPutRequest = VSPProcessPostFactory.build({ - name: newProcessToUpdate.name, - description: previousProcessData.description, - type: previousProcessData.type - }); - deepFreeze(newProcessToPutRequest); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [newProcessToUpdate]); - - mockRest.addHandler('put', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${newProcessToUpdate.id}`); - expect(data).toEqual(newProcessToPutRequest); - expect(options).toEqual(undefined); - return {returnCode: 'OK'}; - }); - - mockRest.addHandler('post', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes/${newProcessToUpdate.id}/upload`); - expect(data).toEqual(newProcessToUpdate.formData); - expect(options).toEqual(undefined); - return {returnCode: 'OK'}; - }); - - return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch, - { - softwareProductId, - version, - previousProcess: previousProcessData, - process: newProcessToUpdate - } - ).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - //** - //** GET - //** - it('Get Software Products Processes List', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - const softwareProductProcessesList = VSPProcessStoreFactory.buildList(2); - - deepFreeze(softwareProductProcessesList); - - deepFreeze(store.getState()); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', softwareProductProcessesList); - - mockRest.addHandler('fetch', ({options, data, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/processes`); - expect(data).toEqual(undefined); - expect(options).toEqual(undefined); - return {results: softwareProductProcessesList}; - }); - - return SoftwareProductProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, version}).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - //** - //** DELETE - //** - it('Delete Software Products Processes', () => { - const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(1); - const currentSoftwareProduct = VSPEditorFactory.build(); - - deepFreeze(softwareProductProcessesList); - const store = storeCreator({ - softwareProduct: { - softwareProductProcesses: { - processesList: softwareProductProcessesList - }, - softwareProductEditor: { - data: currentSoftwareProduct - } - } - }); - - const processId = softwareProductProcessesList[0].id; - const versionId = version.id; - deepFreeze(store.getState()); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', []); - - mockRest.addHandler('destroy', ({data, options, baseUrl}) => { - expect(baseUrl).toEqual(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/processes/${processId}`); - expect(data).toEqual(undefined); - expect(options).toEqual(undefined); - return { - results: { - returnCode: 'OK' - } - }; - }); - - return SoftwareProductProcessesActionHelper.deleteProcess(store.dispatch, { - process: softwareProductProcessesList[0], - softwareProductId, - version - }).then(() => { - expect(store.getState()).toEqual(expectedStore); - }); - }); - - it('Validating Software Products Processes Delete confirmation', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - let process = VSPProcessStoreFactory.build(); - deepFreeze(process); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', process); - - return SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(store.dispatch, {process}); - - expect(store.getState()).toEqual(expectedStore); - }); - - it('Validating Software Products Processes Cancel Delete', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', false); - - SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch); - - expect(store.getState()).toEqual(expectedStore); - }); - - //** - //** CREATE/EDIT - //** - it('Validating open Software Products Processes for create', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - let process = {}; - deepFreeze(process); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process); - - SoftwareProductProcessesActionHelper.openEditor(store.dispatch); - expect(store.getState().softwareProduct.softwareProductProcesses.processesEditor.data).toEqual(expectedStore.softwareProduct.softwareProductProcesses.processesEditor.data); - }); - - it('Validating close Software Products Processes from editing mode', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor', {}); - - SoftwareProductProcessesActionHelper.closeEditor(store.dispatch); - expect(store.getState()).toEqual(expectedStore); - }); - - it('Validating open Software Products Processes for editing', () => { - const store = storeCreator(); - deepFreeze(store.getState()); - - let process = {name: 'aa', description: 'xx'}; - deepFreeze(process); - - const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process); - - SoftwareProductProcessesActionHelper.openEditor(store.dispatch, process); - expect(store.getState().softwareProduct.softwareProductProcesses.processesEditor.data).toEqual(expectedStore.softwareProduct.softwareProductProcesses.processesEditor.data); - - }); - +describe('Software Product Processes Module Tests', function() { + let restPrefix = ''; + + beforeAll(function() { + restPrefix = Configuration.get('restPrefix'); + deepFreeze(restPrefix); + }); + + //** + //** ADD + //** + it('Add Software Products Processes', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductProcessFromResponse = 'ADDED_ID'; + + const softwareProductProcessAfterAdd = VSPProcessStoreFactory.build({ + id: softwareProductProcessFromResponse + }); + const softwareProductPostRequest = buildFromExistingObject( + VSPProcessPostFactory, + softwareProductProcessAfterAdd + ); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [softwareProductProcessAfterAdd] + ); + + mockRest.addHandler('post', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes` + ); + expect(data).toEqual(softwareProductPostRequest); + expect(options).toEqual(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessFromResponse + }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess( + store.dispatch, + { + softwareProductId, + version, + previousProcess: null, + process: softwareProductPostRequest + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Add Software Products Processes with type', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductProcessFromResponse = 'ADDED_ID'; + + const softwareProductProcessAfterAdd = VSPProcessStoreFactoryWithType.build( + { id: softwareProductProcessFromResponse } + ); + const softwareProductPostRequest = buildFromExistingObject( + VSPProcessPostFactoryWithType, + softwareProductProcessAfterAdd + ); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [softwareProductProcessAfterAdd] + ); + + mockRest.addHandler('post', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes` + ); + expect(data).toEqual(softwareProductPostRequest); + expect(options).toEqual(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessFromResponse + }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess( + store.dispatch, + { + softwareProductId, + version, + previousProcess: null, + process: softwareProductPostRequest + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Add Software Products Processes with uploaded file', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductPostRequest = VSPProcessPostFactoryWithType.build(); + const softwareProductProcessToAdd = VSPProcessPostWithFormDataFactory.build( + softwareProductPostRequest + ); + const softwareProductProcessAfterAdd = VSPProcessStoreWithFormDataFactory.build(); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [softwareProductProcessAfterAdd] + ); + + mockRest.addHandler('post', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes` + ); + expect(data).toEqual(softwareProductPostRequest); + expect(options).toEqual(undefined); + return { + returnCode: 'OK', + value: softwareProductProcessAfterAdd.id + }; + }); + + mockRest.addHandler('post', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes/${softwareProductProcessAfterAdd.id}/upload` + ); + expect(data).toEqual(softwareProductProcessToAdd.formData); + expect(options).toEqual(undefined); + return { returnCode: 'OK' }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess( + store.dispatch, + { + softwareProductId, + version, + previousProcess: null, + process: softwareProductProcessToAdd + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + //** + //** UPDATE + //** + it('Update Software Products Processes', () => { + const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList( + 1 + ); + deepFreeze(softwareProductProcessesList); + + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: softwareProductProcessesList + } + } + }); + deepFreeze(store.getState()); + + const toBeUpdatedProcessId = softwareProductProcessesList[0].id; + const previousProcessData = softwareProductProcessesList[0]; + const processUpdateData = VSPProcessStoreWithArtifactNameFactory.build({ + ...previousProcessData, + name: 'Pr1_UPDATED', + description: 'string_UPDATED', + type: 'Other' + }); + + deepFreeze(processUpdateData); + + const processPutRequest = VSPProcessPostFactory.build({ + name: 'Pr1_UPDATED', + description: 'string_UPDATED', + type: 'Other' + }); + deepFreeze(processPutRequest); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [processUpdateData] + ); + + mockRest.addHandler('put', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes/${toBeUpdatedProcessId}` + ); + expect(data).toEqual(processPutRequest); + expect(options).toEqual(undefined); + return { returnCode: 'OK' }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess( + store.dispatch, + { + softwareProductId, + version, + previousProcess: previousProcessData, + process: processUpdateData + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Update Software Products Processes and uploaded file', () => { + const previousProcessData = VSPProcessStoreWithArtifactNameFactory.build(); + deepFreeze(previousProcessData); + + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: [previousProcessData] + } + } + }); + deepFreeze(store.getState()); + + const newProcessToUpdate = VSPProcessStoreWithFormDataFactory.build({ + ...previousProcessData, + name: 'new name', + formData: { + name: 'new artifact name' + } + }); + deepFreeze(newProcessToUpdate); + + const newProcessToPutRequest = VSPProcessPostFactory.build({ + name: newProcessToUpdate.name, + description: previousProcessData.description, + type: previousProcessData.type + }); + deepFreeze(newProcessToPutRequest); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [newProcessToUpdate] + ); + + mockRest.addHandler('put', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes/${newProcessToUpdate.id}` + ); + expect(data).toEqual(newProcessToPutRequest); + expect(options).toEqual(undefined); + return { returnCode: 'OK' }; + }); + + mockRest.addHandler('post', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes/${newProcessToUpdate.id}/upload` + ); + expect(data).toEqual(newProcessToUpdate.formData); + expect(options).toEqual(undefined); + return { returnCode: 'OK' }; + }); + + return SoftwareProductProcessesActionHelper.saveProcess( + store.dispatch, + { + softwareProductId, + version, + previousProcess: previousProcessData, + process: newProcessToUpdate + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + //** + //** GET + //** + it('Get Software Products Processes List', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const softwareProductProcessesList = VSPProcessStoreFactory.buildList( + 2 + ); + + deepFreeze(softwareProductProcessesList); + + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + softwareProductProcessesList + ); + + mockRest.addHandler('fetch', ({ options, data, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${ + version.id + }/processes` + ); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return { results: softwareProductProcessesList }; + }); + + return SoftwareProductProcessesActionHelper.fetchProcessesList( + store.dispatch, + { softwareProductId, version } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + //** + //** DELETE + //** + it('Delete Software Products Processes', () => { + const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList( + 1 + ); + const currentSoftwareProduct = VSPEditorFactory.build(); + + deepFreeze(softwareProductProcessesList); + const store = storeCreator({ + softwareProduct: { + softwareProductProcesses: { + processesList: softwareProductProcessesList + }, + softwareProductEditor: { + data: currentSoftwareProduct + } + } + }); + + const processId = softwareProductProcessesList[0].id; + const versionId = version.id; + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesList', + [] + ); + + mockRest.addHandler('destroy', ({ data, options, baseUrl }) => { + expect(baseUrl).toEqual( + `${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/processes/${processId}` + ); + expect(data).toEqual(undefined); + expect(options).toEqual(undefined); + return { + results: { + returnCode: 'OK' + } + }; + }); + + return SoftwareProductProcessesActionHelper.deleteProcess( + store.dispatch, + { + process: softwareProductProcessesList[0], + softwareProductId, + version + } + ).then(() => { + expect(store.getState()).toEqual(expectedStore); + }); + }); + + it('Validating Software Products Processes Delete confirmation', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + let process = VSPProcessStoreFactory.build(); + deepFreeze(process); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processToDelete', + process + ); + + return SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm( + store.dispatch, + { process } + ); + + expect(store.getState()).toEqual(expectedStore); + }); + + it('Validating Software Products Processes Cancel Delete', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processToDelete', + false + ); + + SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch); + + expect(store.getState()).toEqual(expectedStore); + }); + + //** + //** CREATE/EDIT + //** + + it('Validating close Software Products Processes from editing mode', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesEditor', + {} + ); + + SoftwareProductProcessesActionHelper.closeEditor(store.dispatch); + expect(store.getState()).toEqual(expectedStore); + }); + + it('Validating open Software Products Processes for editing', () => { + const store = storeCreator(); + deepFreeze(store.getState()); + + let process = { name: 'aa', description: 'xx' }; + deepFreeze(process); + + const expectedStore = cloneAndSet( + store.getState(), + 'softwareProduct.softwareProductProcesses.processesEditor.data', + process + ); + + SoftwareProductProcessesActionHelper.openEditor(store.dispatch, { + process + }); + expect( + store.getState().softwareProduct.softwareProductProcesses + .processesEditor.data + ).toEqual( + expectedStore.softwareProduct.softwareProductProcesses + .processesEditor.data + ); + }); }); diff --git a/openecomp-ui/test/softwareProduct/test.js b/openecomp-ui/test/softwareProduct/test.js index 91b4e7d40e..489b9829b5 100644 --- a/openecomp-ui/test/softwareProduct/test.js +++ b/openecomp-ui/test/softwareProduct/test.js @@ -71,11 +71,10 @@ describe('Software Product Module Tests', function() { }; const expectedSuccessModal = { cancelButtonText: 'OK', - modalClassName: 'notification-modal', msg: 'This software product successfully submitted', timeout: 2000, title: 'Submit Succeeded', - type: 'success' + type: 'info' }; let expectedStore = store.getState(); diff --git a/openecomp-ui/test/utils/errorResponseHandler.test.js b/openecomp-ui/test/utils/errorResponseHandler.test.js index cae8bc4955..de2b8b2d5e 100644 --- a/openecomp-ui/test/utils/errorResponseHandler.test.js +++ b/openecomp-ui/test/utils/errorResponseHandler.test.js @@ -1,5 +1,5 @@ /* - * Copyright © 2016-2017 European Support Limited + * 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. @@ -15,119 +15,132 @@ */ import deepFreeze from 'deep-freeze'; -import {cloneAndSet} from '../../test-utils/Util.js'; +import { cloneAndSet } from '../../test-utils/Util.js'; import store from 'sdc-app/AppStore.js'; import errorResponseHandler from 'nfvo-utils/ErrorResponseHandler.js'; -import {typeEnum as modalType} from 'nfvo-components/modal/GlobalModalConstants.js'; +import { typeEnum as modalType } from 'nfvo-components/modal/GlobalModalConstants.js'; describe('Error Response Handler Util', () => { - - beforeEach(function () { - deepFreeze(store.getState()); - }); - - it('validating error in policyException', () => { - let textStatus = '', errorThrown = ''; - let xhr = { - data: { - requestError: { - policyException: { - messageId: 'SVC4122', - text: 'Error: Invalid data.' - } - } - } - }; - deepFreeze(xhr); - - const errorNotification = { - title: 'Error: SVC4122', - msg: 'Error: Invalid data.', - modalClassName: 'notification-modal', - type: modalType.ERROR - }; - - - - const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification); - - errorResponseHandler(xhr, textStatus, errorThrown); - - expect(store.getState()).toEqual(expectedStore); - }); - - it('validating error in serviceException with variables', () => { - let textStatus = '', errorThrown = ''; - let xhr = { - data: { - requestError: { - serviceException: { - messageId: 'SVC4122', - text: "Error: Invalid artifact type '%1'.", - variables: ['newType'] - } - } - } - }; - deepFreeze(xhr); - - const errorNotification = { - title: 'Error: SVC4122', - msg: 'Error: Invalid artifact type newType.', - modalClassName: 'notification-modal', - type: modalType.ERROR - }; - - const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification); - - errorResponseHandler(xhr, textStatus, errorThrown); - - expect(store.getState()).toEqual(expectedStore); - }); - - it('validating error in response', () => { - let textStatus = '', errorThrown = ''; - let xhr = { - data: { - status: 'AA', - message: 'Error: Invalid data.' - } - }; - deepFreeze(xhr); - - const errorNotification = { - title: 'AA', - msg: 'Error: Invalid data.', - modalClassName: 'notification-modal', - type: modalType.ERROR - }; - - const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification); - - errorResponseHandler(xhr, textStatus, errorThrown); - - expect(store.getState()).toEqual(expectedStore); - }); - - it('validating error in request', () => { - let textStatus = '', errorThrown = ''; - let xhr = { - statusText: '500', - responseText: 'Internal server error.' - }; - deepFreeze(xhr); - - const errorNotification = { - title: '500', - msg: 'Internal server error.', - modalClassName: 'notification-modal', - type: modalType.ERROR - }; - - const expectedStore = cloneAndSet(store.getState(), 'modal', errorNotification); - - errorResponseHandler(xhr, textStatus, errorThrown); - - expect(store.getState()).toEqual(expectedStore); - }); + beforeEach(function() { + deepFreeze(store.getState()); + }); + + it('validating error in policyException', () => { + let textStatus = '', + errorThrown = ''; + let xhr = { + data: { + requestError: { + policyException: { + messageId: 'SVC4122', + text: 'Error: Invalid data.' + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + title: 'Error: SVC4122', + msg: 'Error: Invalid data.', + type: modalType.ERROR + }; + + const expectedStore = cloneAndSet( + store.getState(), + 'modal', + errorNotification + ); + + errorResponseHandler(xhr, textStatus, errorThrown); + + expect(store.getState()).toEqual(expectedStore); + }); + + it('validating error in serviceException with variables', () => { + let textStatus = '', + errorThrown = ''; + let xhr = { + data: { + requestError: { + serviceException: { + messageId: 'SVC4122', + text: "Error: Invalid artifact type '%1'.", + variables: ['newType'] + } + } + } + }; + deepFreeze(xhr); + + const errorNotification = { + title: 'Error: SVC4122', + msg: 'Error: Invalid artifact type newType.', + type: modalType.ERROR + }; + + const expectedStore = cloneAndSet( + store.getState(), + 'modal', + errorNotification + ); + + errorResponseHandler(xhr, textStatus, errorThrown); + + expect(store.getState()).toEqual(expectedStore); + }); + + it('validating error in response', () => { + let textStatus = '', + errorThrown = ''; + let xhr = { + data: { + status: 'AA', + message: 'Error: Invalid data.' + } + }; + deepFreeze(xhr); + + const errorNotification = { + title: 'AA', + msg: 'Error: Invalid data.', + type: modalType.ERROR + }; + + const expectedStore = cloneAndSet( + store.getState(), + 'modal', + errorNotification + ); + + errorResponseHandler(xhr, textStatus, errorThrown); + + expect(store.getState()).toEqual(expectedStore); + }); + + it('validating error in request', () => { + let textStatus = '', + errorThrown = ''; + let xhr = { + statusText: '500', + responseText: 'Internal server error.' + }; + deepFreeze(xhr); + + const errorNotification = { + title: '500', + msg: 'Internal server error.', + type: modalType.ERROR + }; + + const expectedStore = cloneAndSet( + store.getState(), + 'modal', + errorNotification + ); + + errorResponseHandler(xhr, textStatus, errorThrown); + + expect(store.getState()).toEqual(expectedStore); + }); }); |