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 {cloneAndSet} from 'test-utils/Util.js';
19 import {storeCreator} from 'sdc-app/AppStore.js';
20 import SoftwareProductComponentsNetworkActionHelper from 'sdc-app/onboarding/softwareProduct/components/network/SoftwareProductComponentsNetworkActionHelper.js';
22 import {VSPComponentsNicFactory,
23 VSPComponentsNicPostFactory,
24 VSPComponentsNetworkFactory,
25 VSPComponentsNetworkQDataFactory,
26 VSPComponentsNetworkDataMapFactory,
27 VSPComponentsNicFactoryGenericFieldInfo} from 'test-utils/factories/softwareProduct/SoftwareProductComponentsNetworkFactories.js';
28 import VersionFactory from 'test-utils/factories/common/VersionFactory.js';
29 import VSPQSchemaFactory from 'test-utils/factories/softwareProduct/SoftwareProductQSchemaFactory.js';
30 import {forms} from 'sdc-app/onboarding/softwareProduct/components/SoftwareProductComponentsConstants.js';
32 const softwareProductId = '123';
33 const componentId = '321';
35 const version = VersionFactory.build();
37 describe('Software Product Components Network Action Helper Tests', function () {
39 it('Fetch NICs List', () => {
40 const store = storeCreator();
41 deepFreeze(store.getState());
43 const NICList = VSPComponentsNicFactory.buildList(2);
47 deepFreeze(store.getState());
49 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network.nicList', NICList);
51 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
52 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics`);
53 expect(data).toEqual(undefined);
54 expect(options).toEqual(undefined);
55 return {results: NICList};
58 return SoftwareProductComponentsNetworkActionHelper.fetchNICsList(store.dispatch, {softwareProductId, version, componentId}).then(() => {
59 expect(store.getState()).toEqual(expectedStore);
65 const store = storeCreator();
66 deepFreeze(store.getState());
68 const NICPostRequest = VSPComponentsNicPostFactory.build();
70 const expectedNIC = VSPComponentsNicFactory.build({...NICPostRequest, id: nicId});
72 mockRest.addHandler('post', ({options, data, baseUrl}) => {
73 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics`);
74 expect(data).toEqual(NICPostRequest);
75 expect(options).toEqual(undefined);
81 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
82 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics`);
83 expect(data).toEqual(undefined);
84 expect(options).toEqual(undefined);
85 return {results: [expectedNIC]};
88 mockRest.addHandler('destroy', ({options, data, baseUrl}) => {
89 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics/${nicId}`);
90 expect(data).toEqual(undefined);
91 expect(options).toEqual(undefined);
95 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
96 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics`);
97 expect(data).toEqual(undefined);
98 expect(options).toEqual(undefined);
102 const network = VSPComponentsNetworkFactory.build({
103 nicList: [expectedNIC]
106 const networkAfterDelete = VSPComponentsNetworkFactory.build();
108 let expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network);
110 return SoftwareProductComponentsNetworkActionHelper.createNIC(store.dispatch, {nic: NICPostRequest, softwareProductId, componentId, version}).then(() => {
111 expect(store.getState()).toEqual(expectedStore);
112 return SoftwareProductComponentsNetworkActionHelper.deleteNIC(store.dispatch, {softwareProductId, componentId, nicId, version});
114 let expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', networkAfterDelete);
115 expect(store.getState()).toEqual(expectedStore);
119 it('open NICE editor', () => {
121 const store = storeCreator();
122 deepFreeze(store.getState());
123 const data = VSPComponentsNicFactory.build();
124 const genericFieldInfo = VSPComponentsNicFactoryGenericFieldInfo.build();
126 const nic = {id: '444'};
130 const expectedData = {...data, id: nic.id};
132 deepFreeze(expectedData);
134 const network = VSPComponentsNetworkFactory.build({
137 formName: forms.NIC_EDIT_FORM,
142 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network);
144 SoftwareProductComponentsNetworkActionHelper.openNICEditor(store.dispatch, {nic, data});
146 expect(store.getState().softwareProduct.softwareProductComponents.network).toEqual(expectedStore.softwareProduct.softwareProductComponents.network);
149 it('close NICE editor', () => {
151 const store = storeCreator();
152 deepFreeze(store.getState());
154 const network = VSPComponentsNetworkFactory.build();
157 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network);
159 SoftwareProductComponentsNetworkActionHelper.closeNICEditor(store.dispatch);
161 expect(store.getState()).toEqual(expectedStore);
164 it('Load NIC data', () => {
165 mockRest.resetQueue();
166 const expectedData = VSPComponentsNicFactory.build();
168 deepFreeze(expectedData);
170 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
171 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics/${nicId}`);
172 expect(data).toEqual(undefined);
173 expect(options).toEqual(undefined);
174 return (expectedData);
177 return SoftwareProductComponentsNetworkActionHelper.loadNICData({softwareProductId, version, componentId, nicId}).then((data) => {
178 expect(data).toEqual(expectedData);
182 it('load NIC Questionnaire', () => {
183 mockRest.resetQueue();
184 const store = storeCreator();
185 deepFreeze(store.getState());
187 const qdata = VSPComponentsNetworkQDataFactory.build();
188 const dataMap = VSPComponentsNetworkDataMapFactory.build();
189 const qgenericFieldInfo = {};
190 const qschema = VSPQSchemaFactory.build();
197 const network = VSPComponentsNetworkFactory.build({
206 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network);
208 mockRest.addHandler('fetch', ({options, data, baseUrl}) => {
209 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics/${nicId}/questionnaire`);
210 expect(data).toEqual(undefined);
211 expect(options).toEqual(undefined);
212 return ({data: JSON.stringify(qdata), schema: JSON.stringify(qschema)});
215 return SoftwareProductComponentsNetworkActionHelper.loadNICQuestionnaire(store.dispatch, {softwareProductId, version, componentId, nicId}).then(() => {
216 expect(store.getState()).toEqual(expectedStore);
217 expect(store.getState()).toEqual(expectedStore);
221 it('save NIC Data And Questionnaire', () => {
223 const store = storeCreator();
224 deepFreeze(store.getState());
226 const qdata = VSPComponentsNetworkQDataFactory.build();
227 const data = VSPComponentsNicFactory.build();
229 const expectedData = {...data, id: nicId};
239 const expectedStore = cloneAndSet(store.getState(), 'softwareProduct.softwareProductComponents.network', network);
240 deepFreeze(expectedStore);
242 mockRest.addHandler('put', ({options, data, baseUrl}) => {
243 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics/${nicId}/questionnaire`);
244 expect(data).toEqual(qdata);
245 expect(options).toEqual(undefined);
246 return {returnCode: 'OK'};
249 mockRest.addHandler('put', ({options, data, baseUrl}) => {
250 expect(baseUrl).toEqual(`/onboarding-api/v1.0/vendor-software-products/${softwareProductId}/versions/${version.id}/components/${componentId}/nics/${nicId}`);
251 expect(data).toEqual(data);
252 expect(options).toEqual(undefined);
253 return {returnCode: 'OK'};
256 return SoftwareProductComponentsNetworkActionHelper.saveNICDataAndQuestionnaire(store.dispatch, {softwareProductId, version, componentId, qdata, data: expectedData}).then(() => {
257 expect(store.getState()).toEqual(expectedStore);