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 Configuration from 'sdc-app/config/Configuration.js';
27 import SoftwareProductProcessesActionHelper from 'sdc-app/onboarding/softwareProduct/processes/SoftwareProductProcessesActionHelper.js';
29 const softwareProductId = '123';
31 describe('Software Product Processes Module Tests', function () {
36 restPrefix = Configuration.get('restPrefix');
37 deepFreeze(restPrefix);
43 it('Add Software Products Processes', () => {
45 const store = storeCreator();
46 deepFreeze(store.getState());
48 const softwareProductPostRequest = {
52 const softwareProductProcessToAdd = {
56 const softwareProductProcessFromResponse = 'ADDED_ID';
57 const softwareProductProcessAfterAdd = {
58 ...softwareProductProcessToAdd,
59 id: softwareProductProcessFromResponse
62 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]);
64 mockRest.addHandler('create', ({data, options, baseUrl}) => {
66 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`);
67 expect(data).to.deep.equal(softwareProductPostRequest);
68 expect(options).to.equal(undefined);
71 value: softwareProductProcessFromResponse
75 return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
77 softwareProductId: softwareProductId,
78 previousProcess: null,
79 process: softwareProductProcessToAdd
82 expect(store.getState()).to.deep.equal(expectedStore);
86 it('Add Software Products Processes with uploaded file', () => {
88 const store = storeCreator();
89 deepFreeze(store.getState());
91 const softwareProductPostRequest = {
95 const softwareProductProcessToAdd = {
97 description: 'string',
99 name: 'new artifact name'
102 const softwareProductProcessFromResponse = 'ADDED_ID';
103 const softwareProductProcessAfterAdd = {
104 ...softwareProductProcessToAdd,
105 id: softwareProductProcessFromResponse
108 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [softwareProductProcessAfterAdd]);
110 mockRest.addHandler('create', ({data, options, baseUrl}) => {
111 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`);
112 expect(data).to.deep.equal(softwareProductPostRequest);
113 expect(options).to.equal(undefined);
116 value: softwareProductProcessFromResponse
120 mockRest.addHandler('create', ({data, options, baseUrl}) => {
121 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${softwareProductProcessAfterAdd.id}/upload`);
122 expect(data).to.deep.equal(softwareProductProcessToAdd.formData);
123 expect(options).to.equal(undefined);
124 return {returnCode: 'OK'};
127 return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
129 softwareProductId: softwareProductId,
130 previousProcess: null,
131 process: softwareProductProcessToAdd
134 expect(store.getState()).to.deep.equal(expectedStore);
141 it('Update Software Products Processes', () => {
142 const softwareProductProcessesList = [
145 description: 'string',
146 id: 'EBADF561B7FA4A788075E1840D0B5971',
147 artifactName: 'artifact'
150 deepFreeze(softwareProductProcessesList);
152 const store = storeCreator({
154 softwareProductProcesses: {
155 processesList: softwareProductProcessesList
159 deepFreeze(store.getState());
161 const toBeUpdatedProcessId = softwareProductProcessesList[0].id;
162 const previousProcessData = softwareProductProcessesList[0];
163 const processUpdateData = {
164 ...softwareProductProcessesList[0],
166 description: 'string_UPDATED'
168 deepFreeze(processUpdateData);
170 const processPutRequest = {
172 description: 'string_UPDATED'
174 deepFreeze(processPutRequest);
176 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [processUpdateData]);
179 mockRest.addHandler('save', ({data, options, baseUrl}) => {
180 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${toBeUpdatedProcessId}`);
181 expect(data).to.deep.equal(processPutRequest);
182 expect(options).to.equal(undefined);
183 return {returnCode: 'OK'};
186 return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
188 softwareProductId: softwareProductId,
189 previousProcess: previousProcessData,
190 process: processUpdateData
193 expect(store.getState()).to.deep.equal(expectedStore);
197 it('Update Software Products Processes and uploaded file', () => {
198 const previousProcessData = {
199 id: 'EBADF561B7FA4A788075E1840D0B5971',
201 description: 'string',
202 artifactName: 'artifact'
204 deepFreeze(previousProcessData);
206 const store = storeCreator({
208 softwareProductProcesses: {
209 processesList: [previousProcessData]
213 deepFreeze(store.getState());
215 const newProcessToUpdate = {
216 ...previousProcessData,
219 name: 'new artifact name'
222 deepFreeze(newProcessToUpdate);
224 const newProcessToPutRequest = {
225 name: newProcessToUpdate.name,
226 description: previousProcessData.description
228 deepFreeze(newProcessToPutRequest);
230 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', [newProcessToUpdate]);
232 mockRest.addHandler('save', ({data, options, baseUrl}) => {
233 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${previousProcessData.id}`);
234 expect(data).to.deep.equal(newProcessToPutRequest);
235 expect(options).to.equal(undefined);
236 return {returnCode: 'OK'};
239 mockRest.addHandler('create', ({data, options, baseUrl}) => {
240 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${previousProcessData.id}/upload`);
241 expect(data).to.deep.equal(newProcessToUpdate.formData);
242 expect(options).to.equal(undefined);
243 return {returnCode: 'OK'};
246 return SoftwareProductProcessesActionHelper.saveProcess(store.dispatch,
248 softwareProductId: softwareProductId,
249 previousProcess: previousProcessData,
250 process: newProcessToUpdate
253 expect(store.getState()).to.deep.equal(expectedStore);
260 it('Get Software Products Processes List', () => {
261 const store = storeCreator();
262 deepFreeze(store.getState());
264 const softwareProductProcessesList = [
268 id: 'EBADF561B7FA4A788075E1840D0B5971',
269 artifactName: 'artifact'
274 id: '2F47447D22DB4C53B020CA1E66201EF2',
275 artifactName: 'artifact'
279 deepFreeze(softwareProductProcessesList);
281 deepFreeze(store.getState());
283 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', softwareProductProcessesList);
285 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
286 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes`);
287 expect(data).to.deep.equal(undefined);
288 expect(options).to.equal(undefined);
289 return {results: softwareProductProcessesList};
292 return SoftwareProductProcessesActionHelper.fetchProcessesList(store.dispatch, {softwareProductId}).then(() => {
293 expect(store.getState()).to.deep.equal(expectedStore);
300 it('Delete Software Products Processes', () => {
301 const softwareProductProcessesList = [
305 id: 'EBADF561B7FA4A788075E1840D0B5971',
306 artifactName: 'artifact'
310 deepFreeze(softwareProductProcessesList);
311 const store = storeCreator({
313 softwareProductProcesses: {
314 processesList: softwareProductProcessesList
319 const processId = 'EBADF561B7FA4A788075E1840D0B5971';
320 deepFreeze(store.getState());
322 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesList', []);
324 mockRest.addHandler('destroy', ({data, options, baseUrl}) => {
325 expect(baseUrl).to.equal(`${restPrefix}/v1.0/vendor-software-products/${softwareProductId}/processes/${processId}`);
326 expect(data).to.equal(undefined);
327 expect(options).to.equal(undefined);
335 return SoftwareProductProcessesActionHelper.deleteProcess(store.dispatch, {
336 process: softwareProductProcessesList[0],
339 expect(store.getState()).to.deep.equal(expectedStore);
343 it('Validating Software Products Processes Delete confirmation', done => {
344 const store = storeCreator();
345 deepFreeze(store.getState());
353 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', process);
355 SoftwareProductProcessesActionHelper.openDeleteProcessesConfirm(store.dispatch, {process});
357 setTimeout(function(){
358 expect(store.getState()).to.deep.equal(expectedStore);
363 it('Validating Software Products Processes Cancel Delete', done => {
364 const store = storeCreator();
365 deepFreeze(store.getState());
367 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processToDelete', false);
369 SoftwareProductProcessesActionHelper.hideDeleteConfirm(store.dispatch);
371 setTimeout(function(){
372 expect(store.getState()).to.deep.equal(expectedStore);
380 it('Validating open Software Products Processes for create', done => {
381 const store = storeCreator();
382 deepFreeze(store.getState());
387 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process);
389 SoftwareProductProcessesActionHelper.openEditor(store.dispatch);
391 setTimeout(function(){
392 expect(store.getState()).to.deep.equal(expectedStore);
397 it('Validating close Software Products Processes from editing mode', done => {
398 const store = storeCreator();
399 deepFreeze(store.getState());
401 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor', {});
403 SoftwareProductProcessesActionHelper.closeEditor(store.dispatch);
405 setTimeout(function(){
406 expect(store.getState()).to.deep.equal(expectedStore);
411 it('Validating open Software Products Processes for editing', done => {
412 const store = storeCreator();
413 deepFreeze(store.getState());
415 let process = {name: 'aa', description: 'xx'};
418 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', process);
420 SoftwareProductProcessesActionHelper.openEditor(store.dispatch, process);
422 setTimeout(function(){
423 expect(store.getState()).to.deep.equal(expectedStore);
428 it('Validating Software Products Processes dataChanged event', done => {
429 let process = {name: 'aa', description: 'xx'};
432 const store = storeCreator({
434 softwareProductProcesses: {
441 deepFreeze(store.getState());
443 let deltaData = {name: 'bb'};
444 deepFreeze(deltaData);
446 let expectedProcess = {name: 'bb', description: 'xx'};
447 deepFreeze(expectedProcess);
449 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductProcesses.processesEditor.data', expectedProcess);
451 SoftwareProductProcessesActionHelper.processEditorDataChanged(store.dispatch, {deltaData});
453 setTimeout(function(){
454 expect(store.getState()).to.deep.equal(expectedStore);