2 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13 * or implied. See the License for the specific language governing
14 * permissions and limitations under the License.
16 import deepFreeze from 'deep-freeze';
17 import mockRest from 'test-utils/MockRest.js';
18 import {buildFromExistingObject} from 'test-utils/Util.js';
19 import {cloneAndSet} from 'test-utils/Util.js';
20 import {storeCreator} from 'sdc-app/AppStore.js';
21 import SoftwareProductComponentProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js';
24 VSPProcessStoreWithArtifactNameFactory,
25 VSPProcessPostFactory,
26 VSPProcessStoreFactory,
27 VSPProcessPostFactoryWithType,
28 VSPProcessStoreFactoryWithType} from 'test-utils/factories/softwareProduct/SoftwareProductProcessFactories.js';
30 const softwareProductId = '123';
31 const componentId = '222';
32 const versionId = '1';
33 const version = {id: versionId, label: versionId};
35 describe('Software Product Component Processes Module Tests', function () {
36 it('Get Software Products Processes List', () => {
37 const store = storeCreator();
38 deepFreeze(store.getState());
40 const softwareProductProcessesList = VSPProcessStoreWithArtifactNameFactory.buildList(2);
42 deepFreeze(softwareProductProcessesList);
44 deepFreeze(store.getState());
46 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', softwareProductProcessesList);
48 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
49 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/components/${componentId}/processes`);
50 expect(data).toEqual(undefined);
51 expect(options).toEqual(undefined);
52 return {results: softwareProductProcessesList};
56 return SoftwareProductComponentProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, componentId, version}).then(() => {
57 expect(store.getState()).toEqual(expectedStore);
60 it('Delete Software Products Processes', () => {
61 let process = VSPProcessStoreWithArtifactNameFactory.build();
62 const softwareProductProcessesList = [process];
64 deepFreeze(softwareProductProcessesList);
65 const store = storeCreator({
67 softwareProductProcesses: {
68 processesList: softwareProductProcessesList
73 const processId = process.id;
74 deepFreeze(store.getState());
76 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', []);
78 mockRest.addHandler('destroy', ({data, options, baseUrl}) => {
79 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/components/${componentId}/processes/${processId}`);
80 expect(data).toEqual(undefined);
81 expect(options).toEqual(undefined);
89 return SoftwareProductComponentProcessesActionHelper.deleteProcess(store.dispatch, {
90 process: softwareProductProcessesList[0],
91 softwareProductId, componentId,
94 expect(store.getState()).toEqual(expectedStore);
98 it('Add Software Products Processes', () => {
100 const store = storeCreator();
101 deepFreeze(store.getState());
103 const softwareProductProcessFromResponse = 'ADDED_ID';
105 const softwareProductProcessAfterAdd = VSPProcessStoreFactory.build({id: softwareProductProcessFromResponse});
106 const softwareProductPostRequest = buildFromExistingObject(VSPProcessPostFactory, softwareProductProcessAfterAdd);
108 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [softwareProductProcessAfterAdd]);
110 mockRest.addHandler('post', ({data, options, baseUrl}) => {
112 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/components/${componentId}/processes`);
113 expect(data).toEqual(softwareProductPostRequest);
114 expect(options).toEqual(undefined);
117 value: softwareProductProcessFromResponse
121 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
124 previousProcess: null,
125 process: softwareProductPostRequest,
130 expect(store.getState()).toEqual(expectedStore);
134 it('Add Software Products Processes with type', () => {
136 const store = storeCreator();
137 deepFreeze(store.getState());
139 const softwareProductPostRequest = VSPProcessPostFactoryWithType.build();
141 const softwareProductProcessAfterAdd = VSPProcessStoreFactoryWithType.build(softwareProductPostRequest);
142 const softwareProductProcessFromResponse = softwareProductProcessAfterAdd.id;
144 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [softwareProductProcessAfterAdd]);
146 mockRest.addHandler('post', ({data, options, baseUrl}) => {
148 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/components/${componentId}/processes`);
149 expect(data).toEqual(softwareProductPostRequest);
150 expect(options).toEqual(undefined);
153 value: softwareProductProcessFromResponse
157 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
160 previousProcess: null,
161 process: softwareProductPostRequest,
166 expect(store.getState()).toEqual(expectedStore);
170 it('Update Software Products Processes', () => {
171 let process = VSPProcessStoreWithArtifactNameFactory.build();
173 const softwareProductProcessesList = [process];
174 deepFreeze(softwareProductProcessesList);
176 const store = storeCreator({
178 softwareProductComponents: {
179 componentProcesses: {
180 processesList: softwareProductProcessesList
185 deepFreeze(store.getState());
187 const toBeUpdatedProcessId = process.id;
188 const previousProcessData = process;
189 const processUpdateData = VSPProcessStoreWithArtifactNameFactory.build({
192 description: 'string_UPDATED',
195 deepFreeze(processUpdateData);
197 const processPutRequest = VSPProcessPostFactory.build({
199 description: 'string_UPDATED',
202 deepFreeze(processPutRequest);
204 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [processUpdateData]);
207 mockRest.addHandler('put', ({data, options, baseUrl}) => {
208 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${versionId}/components/${componentId}/processes/${toBeUpdatedProcessId}`);
209 expect(data).toEqual(processPutRequest);
210 expect(options).toEqual(undefined);
211 return {returnCode: 'OK'};
214 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
216 softwareProductId: softwareProductId,
218 previousProcess: previousProcessData,
219 process: processUpdateData,
223 expect(store.getState()).toEqual(expectedStore);