2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 import {expect} from 'chai';
22 import deepFreeze from 'deep-freeze';
23 import mockRest from 'test-utils/MockRest.js';
24 import {cloneAndSet} from 'test-utils/Util.js';
25 import {storeCreator} from 'sdc-app/AppStore.js';
26 import SoftwareProductComponentProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/components/processes/SoftwareProductComponentProcessesActionHelper.js';
28 const softwareProductId = '123';
29 const componentId = '222';
30 describe('Software Product Component Processes Module Tests', function () {
31 it('Get Software Products Processes List', () => {
32 const store = storeCreator();
33 deepFreeze(store.getState());
35 const softwareProductProcessesList = [
39 id: 'EBADF561B7FA4A788075E1840D0B5971',
40 artifactName: 'artifact'
45 id: '2F47447D22DB4C53B020CA1E66201EF2',
46 artifactName: 'artifact'
50 deepFreeze(softwareProductProcessesList);
52 deepFreeze(store.getState());
54 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', softwareProductProcessesList);
56 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
57 expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes`);
58 expect(data).to.deep.equal(undefined);
59 expect(options).to.equal(undefined);
60 return {results: softwareProductProcessesList};
63 return SoftwareProductComponentProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, componentId}).then(() => {
64 expect(store.getState()).to.deep.equal(expectedStore);
67 it('Delete Software Products Processes', () => {
68 const softwareProductProcessesList = [
72 id: 'EBADF561B7FA4A788075E1840D0B5971',
73 artifactName: 'artifact'
77 deepFreeze(softwareProductProcessesList);
78 const store = storeCreator({
80 softwareProductProcesses: {
81 processesList: softwareProductProcessesList
86 const processId = 'EBADF561B7FA4A788075E1840D0B5971';
87 deepFreeze(store.getState());
89 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', []);
91 mockRest.addHandler('destroy', ({data, options, baseUrl}) => {
92 expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes/${processId}`);
93 expect(data).to.equal(undefined);
94 expect(options).to.equal(undefined);
102 return SoftwareProductComponentProcessesActionHelper.deleteProcess(store.dispatch, {
103 process: softwareProductProcessesList[0],
104 softwareProductId, componentId
106 expect(store.getState()).to.deep.equal(expectedStore);
110 it('Add Software Products Processes', () => {
112 const store = storeCreator();
113 deepFreeze(store.getState());
115 const softwareProductPostRequest = {
117 description: 'string'
119 const softwareProductProcessToAdd = {
121 description: 'string'
123 const softwareProductProcessFromResponse = 'ADDED_ID';
124 const softwareProductProcessAfterAdd = {
125 ...softwareProductProcessToAdd,
126 id: softwareProductProcessFromResponse
129 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [softwareProductProcessAfterAdd]);
131 mockRest.addHandler('create', ({data, options, baseUrl}) => {
133 expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes`);
134 expect(data).to.deep.equal(softwareProductPostRequest);
135 expect(options).to.equal(undefined);
138 value: softwareProductProcessFromResponse
142 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
145 previousProcess: null,
146 process: softwareProductProcessToAdd,
150 expect(store.getState()).to.deep.equal(expectedStore);
154 it('Update Software Products Processes', () => {
155 const softwareProductProcessesList = [
158 description: 'string',
159 id: 'EBADF561B7FA4A788075E1840D0B5971',
160 artifactName: 'artifact'
163 deepFreeze(softwareProductProcessesList);
165 const store = storeCreator({
167 softwareProductComponents: {
168 componentProcesses: {
169 processesList: softwareProductProcessesList
174 deepFreeze(store.getState());
176 const toBeUpdatedProcessId = softwareProductProcessesList[0].id;
177 const previousProcessData = softwareProductProcessesList[0];
178 const processUpdateData = {
179 ...softwareProductProcessesList[0],
181 description: 'string_UPDATED'
183 deepFreeze(processUpdateData);
185 const processPutRequest = {
187 description: 'string_UPDATED'
189 deepFreeze(processPutRequest);
191 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [processUpdateData]);
194 mockRest.addHandler('save', ({data, options, baseUrl}) => {
195 expect(baseUrl).to.equal(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/components/${componentId}/processes/${toBeUpdatedProcessId}`);
196 expect(data).to.deep.equal(processPutRequest);
197 expect(options).to.equal(undefined);
198 return {returnCode: 'OK'};
201 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
203 softwareProductId: softwareProductId,
205 previousProcess: previousProcessData,
206 process: processUpdateData
209 expect(store.getState()).to.deep.equal(expectedStore);