Add new code new version
[sdc.git] / openecomp-ui / test / softwareProduct / components / processes / test.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
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';
27
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());
34
35                 const softwareProductProcessesList = [
36                         {
37                                 name: 'Pr1',
38                                 description: 'hjhj',
39                                 id: 'EBADF561B7FA4A788075E1840D0B5971',
40                                 artifactName: 'artifact'
41                         },
42                         {
43                                 name: 'Pr1',
44                                 description: 'hjhj',
45                                 id: '2F47447D22DB4C53B020CA1E66201EF2',
46                                 artifactName: 'artifact'
47                         }
48                 ];
49
50                 deepFreeze(softwareProductProcessesList);
51
52                 deepFreeze(store.getState());
53
54                 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', softwareProductProcessesList);
55
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};
61                 });
62
63                 return SoftwareProductComponentProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId, componentId}).then(() => {
64                         expect(store.getState()).to.deep.equal(expectedStore);
65                 });
66         });
67         it('Delete Software Products Processes', () => {
68                 const softwareProductProcessesList = [
69                         {
70                                 name: 'Pr1',
71                                 description: 'hjhj',
72                                 id: 'EBADF561B7FA4A788075E1840D0B5971',
73                                 artifactName: 'artifact'
74                         }
75                 ];
76
77                 deepFreeze(softwareProductProcessesList);
78                 const store = storeCreator({
79                         softwareProduct: {
80                                 softwareProductProcesses: {
81                                         processesList: softwareProductProcessesList
82                                 }
83                         }
84                 });
85
86                 const processId = 'EBADF561B7FA4A788075E1840D0B5971';
87                 deepFreeze(store.getState());
88
89                 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', []);
90
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);
95                         return {
96                                 results: {
97                                         returnCode: 'OK'
98                                 }
99                         };
100                 });
101
102                 return SoftwareProductComponentProcessesActionHelper.deleteProcess(store.dispatch, {
103                         process: softwareProductProcessesList[0],
104                         softwareProductId, componentId
105                 }).then(() => {
106                         expect(store.getState()).to.deep.equal(expectedStore);
107                 });
108         });
109
110         it('Add Software Products Processes', () => {
111
112                 const store = storeCreator();
113                 deepFreeze(store.getState());
114
115                 const softwareProductPostRequest = {
116                         name: 'Pr1',
117                         description: 'string'
118                 };
119                 const softwareProductProcessToAdd = {
120                         name: 'Pr1',
121                         description: 'string'
122                 };
123                 const softwareProductProcessFromResponse = 'ADDED_ID';
124                 const softwareProductProcessAfterAdd = {
125                         ...softwareProductProcessToAdd,
126                         id: softwareProductProcessFromResponse
127                 };
128
129                 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [softwareProductProcessAfterAdd]);
130
131                 mockRest.addHandler('create', ({data, options, baseUrl}) => {
132
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);
136                         return {
137                                 returnCode: 'OK',
138                                 value: softwareProductProcessFromResponse
139                         };
140                 });
141
142                 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
143                         {
144                                 softwareProductId,
145                                 previousProcess: null,
146                                 process: softwareProductProcessToAdd,
147                                 componentId
148                         }
149                 ).then(() => {
150                         expect(store.getState()).to.deep.equal(expectedStore);
151                 });
152         });
153
154         it('Update Software Products Processes', () => {
155                 const softwareProductProcessesList = [
156                         {
157                                 name: 'Pr1',
158                                 description: 'string',
159                                 id: 'EBADF561B7FA4A788075E1840D0B5971',
160                                 artifactName: 'artifact'
161                         }
162                 ];
163                 deepFreeze(softwareProductProcessesList);
164
165                 const store = storeCreator({
166                         softwareProduct: {
167                                 softwareProductComponents: {
168                                         componentProcesses: {
169                                                 processesList: softwareProductProcessesList
170                                         }
171                                 }
172                         }
173                 });
174                 deepFreeze(store.getState());
175
176                 const toBeUpdatedProcessId = softwareProductProcessesList[0].id;
177                 const previousProcessData = softwareProductProcessesList[0];
178                 const processUpdateData = {
179                         ...softwareProductProcessesList[0],
180                         name: 'Pr1_UPDATED',
181                         description: 'string_UPDATED'
182                 };
183                 deepFreeze(processUpdateData);
184
185                 const processPutRequest = {
186                         name: 'Pr1_UPDATED',
187                         description: 'string_UPDATED'
188                 };
189                 deepFreeze(processPutRequest);
190
191                 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.componentProcesses.processesList', [processUpdateData]);
192
193
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'};
199                 });
200
201                 return SoftwareProductComponentProcessesActionHelper.saveProcess(store.dispatch,
202                         {
203                                 softwareProductId: softwareProductId,
204                                 componentId,
205                                 previousProcess: previousProcessData,
206                                 process: processUpdateData
207                         }
208                 ).then(() => {
209                         expect(store.getState()).to.deep.equal(expectedStore);
210                 });
211         });
212
213 });
214