Test Cases Addition and Fixes
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / vfModule / vfModule.reducers.spec.ts
1 import {
2   CreateVFModuleInstanceAction,
3   DeleteActionVfModuleInstanceAction,
4   DeleteVFModuleField,
5   DeleteVfModuleInstanceAction, PauseVFModuleInstanciationAction, RemovePauseOnVFModuleInstanciationAction,
6   UndoDeleteActionVfModuleInstanceAction,
7   UpdateVFModluePosition,
8   UpdateVFModuleField,
9   UpgradeVfModuleInstanceAction,
10   VfModuleActions
11 } from "./vfModule.actions";
12 import {vfModuleReducer} from "./vfModule.reducers";
13 import {VfModuleInstance} from "../../../models/vfModuleInstance";
14 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
15 import each from "jest-each";
16
17
18 describe('vfModuleReducer', () => {
19   test('#REMOVE_VNF_MODULE_INSTANCE : should delete existing vnf module by dynamicModelName', () => {
20     let state = vfModuleReducer(<any>{
21         serviceInstance: {
22           'serviceModelId': {
23             vnfs: {
24               'vfName': {
25                 vfModules: {
26                   'modelName': {
27                     'dynamicModelName1': {},
28                     'dynamicModelName2': {},
29                   }
30                 }
31               }
32             }
33           }
34         }
35       },
36       <DeleteVfModuleInstanceAction>{
37         type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
38         modelName: 'modelName',
39         vfName: 'vfName',
40         vnfStoreKey: 'vfName',
41         serviceModelId: 'serviceModelId',
42         dynamicModelName: 'dynamicModelName1'
43       });
44
45     expect(state).toBeDefined();
46     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']['dynamicModelName2']).toBeDefined();
47     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']['dynamicModelName1']).not.toBeDefined();
48   });
49
50   test('#DELETE_LAST_VNF_MODULE_INSTANCE : should delete existing vnf module', () => {
51     let state = vfModuleReducer(<any>{
52         serviceInstance: {
53           'serviceModelId': {
54             vnfs: {
55               'vfName': {
56                 vfModules: {
57                   'modelName': {
58                     'dynamicModelName': {}
59                   }
60                 }
61               }
62             }
63           }
64         }
65       },
66       <DeleteVfModuleInstanceAction>{
67         type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
68         modelName: 'modelName',
69         vfName: 'vfName',
70         vnfStoreKey: 'vfName',
71         serviceModelId: 'serviceModelId',
72         dynamicModelName: 'dynamicModelName'
73       });
74
75     expect(state).toBeDefined();
76     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']).not.toBeDefined();
77   });
78
79   test('#CREATE_VF_MODULE: should create new vfModule to existing VNF', () => {
80     let vfModuleInstance: VfModuleInstance = new VfModuleInstance();
81     vfModuleInstance.instanceName = 'instanceName';
82     vfModuleInstance.isMissingData = false;
83     vfModuleInstance.volumeGroupName = 'volumeGroupName';
84     let vfModule = vfModuleReducer(<any>{
85         serviceInstance: {
86           'serviceUuid': {
87             vnfs: {
88               'vnfStoreKey': {
89                 'vfModules': {}
90               }
91             }
92           }
93         }
94       },
95       <CreateVFModuleInstanceAction>{
96         type: VfModuleActions.CREATE_VF_MODULE,
97         vfId: 'vfId',
98         vfInstance: new VfModuleInstance(),
99         vnfStoreKey: 'vnfStoreKey',
100         serviceUuid: 'serviceUuid',
101         index: 1
102       }).serviceInstance['serviceUuid'].vnfs['vnfStoreKey'].vfModules;
103
104     let firstVfModuleName = Object.keys(vfModule)[0];
105     expect(vfModule[firstVfModuleName]).toBeDefined();
106     expect(vfModule[firstVfModuleName].isMissingData).toBeFalsy();
107   });
108
109   test('#UPDATE_VFMODULE_FEILD: should update field with some value', () => {
110     const newFieldName = 'newFieldName';
111     const newFieldValue = 'newFieldValue';
112     let oldState = getReduxState();
113
114     let newState = vfModuleReducer(<any>oldState,
115       <UpdateVFModuleField>{
116         type: VfModuleActions.UPDATE_VFMODULE_FEILD,
117         dynamicModelName: 'dynamicModelName1',
118         vnfStoreKey: 'vnfStoreKey',
119         serviceId: 'serviceModelId',
120         modelName: 'vfModuleModelName',
121         fieldName: newFieldName,
122         fieldValue: newFieldValue
123       });
124
125     let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
126
127     expect(vfModule[newFieldName]).toEqual(newFieldValue);
128   });
129
130   test('#DELETE_VFMODULE_FEILD: should update field with some value', () => {
131       const deleteFieldName = 'deleteFieldName';
132       let oldState = {
133         serviceHierarchy: {
134           'serviceModelId': {}
135         },
136         serviceInstance: {
137           'serviceModelId': {
138             vnfs: {
139               'vnfStoreKey': {
140                 vfModules: {
141                   'modelName': {
142                     'dynamicModelName1': {
143                       isMissingData: true,
144                       [deleteFieldName]: true,
145                       action: 'None'
146                     },
147                     'dynamicModelName2': {},
148                   }
149                 }
150               }
151             }
152           }
153         }
154       };
155       let newState = vfModuleReducer(<any>oldState,
156     <DeleteVFModuleField>{
157       type: VfModuleActions.DELETE_VFMODULE_FIELD,
158       dynamicModelName: 'dynamicModelName1',
159       vnfStoreKey: 'vnfStoreKey',
160       serviceId: 'serviceModelId',
161       modelName: 'modelName',
162       deleteFieldName: deleteFieldName,
163     });
164
165   let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
166
167   expect(vfModule[deleteFieldName]).toBeUndefined();
168 });
169
170 test('#UPDATE_VFMODULE_POSITION: should update position', () => {
171   let vfModule = vfModuleReducer(<any>{
172       serviceHierarchy: {
173         'serviceModelId': {}
174       },
175       serviceInstance: {
176         'serviceModelId': {
177           vnfs: {
178             'vfName': {
179               vfModules: {
180                 'modelName': {
181                   'dynamicModelName': {
182                     isMissingData: true
183                   }
184                 }
185               }
186             }
187           }
188         }
189       }
190     },
191     <UpdateVFModluePosition>{
192       type: VfModuleActions.UPDATE_VFMODULE_POSITION,
193       node: {
194         position: 1,
195         dynamicModelName: "dynamicModelName",
196         modelName: "modelName"
197       },
198       instanceId: "serviceModelId",
199       vnfStoreKey: "vfName"
200
201     }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
202
203   expect(vfModule.position).toEqual(1);
204 });
205
206   each([
207     ['for the first vfModule', 'dynamicModelName1'],
208     ['for the second vfModule', 'dynamicModelName2'],
209   ]).
210 test('#DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
211     let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule(dynamicModelName))
212       .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
213
214     expect(vfModule).toBeDefined();
215     expect(vfModule.isMissingData).toBeTruthy();
216     expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
217   });
218
219 test('#DELETE_ACTION_VF_MODULE_INSTANCE set tenantId and lcpCloudRegion to VFM', () => {
220   let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule('dynamicModelName1'))
221     .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
222
223   expect(vfModule).toBeDefined();
224   expect(vfModule.tenantId).toEqual('tenantId');
225   expect(vfModule.lcpCloudRegionId).toEqual('lcpCloudRegionId');
226
227 });
228
229   each([
230     ['for the first vfModule', 'dynamicModelName1', true],
231     ['for the second vfModule', 'dynamicModelName2', true],
232   ]).
233 test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
234   let vfModule = vfModuleReducer(<any>getDeleteRedux(), getUndoDeleteActionVfModule(dynamicModelName))
235     .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
236
237   expect(vfModule).toBeDefined();
238   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
239 });
240
241   each([
242     ['for the first vfModule', 'dynamicModelName1', 'afterCompletion'],
243     ['for the third vfModule', 'dynamicModelName3', 'afterCompletion'],
244     ['for the last vfModule', 'dynamicModelName5', 'afterCompletion'],
245   ]).
246 test('#PAUSE_ACTION_VF_MODULE_INSTANTIATION %s', (description: string, dynamicModelName:string, pauseInstantiation: string) => {
247   let vfModule = vfModuleReducer(<any>getPausedRedux(), getPausedActionVfModule(dynamicModelName))
248   .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
249
250   expect(vfModule).toBeDefined();
251   expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
252 });
253
254   each([
255     ['for the first vfModule', 'dynamicModelName1', null],
256     ['for the third vfModule', 'dynamicModelName3', null],
257     ['for the last vfModule', 'dynamicModelName5', null],
258   ]).
259   test('#REMOVE_PAUSE_ON_VFMODULE_INSTANCE %s', (description: string, dynamicModelName:string, pauseInstantiation: string) => {
260     let vfModule = vfModuleReducer(<any>getPausedRedux(), getRemovePauseActionVfModule(dynamicModelName))
261       .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
262     expect(vfModule).toBeDefined();
263     expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
264   });
265
266 test('#UPGRADE_VFMODULE', () => {
267   let vfModule = vfModuleReducer(<any>getReduxState(),
268     <UpgradeVfModuleInstanceAction>{
269       type: VfModuleActions.UPGRADE_VFMODULE,
270       dynamicModelName: 'dynamicModelName1',
271       vnfStoreKey: 'vnfStoreKey',
272       serviceId: 'serviceModelId',
273       modelName: 'vfModuleModelName'
274     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
275
276   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
277 });
278
279 test('#UNDO_UPGRADE_VFMODULE', () => {
280   let vfModule = vfModuleReducer(<any>{
281       serviceHierarchy: {
282         'serviceModelId': {}
283       },
284       serviceInstance: {
285         'serviceModelId': {
286           vnfs: {
287             'vnfStoreKey': {
288               vfModules: {
289                 'modelName': {
290                   'dynamicModelName1': {
291                     isMissingData: true,
292                     action: 'None_Upgrade'
293                   },
294                   'dynamicModelName2': {},
295                 }
296               }
297             }
298           }
299         }
300       }
301     },
302     <UpgradeVfModuleInstanceAction>{
303       type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
304       dynamicModelName: 'dynamicModelName1',
305       vnfStoreKey: 'vnfStoreKey',
306       serviceId: 'serviceModelId',
307       modelName: 'modelName'
308     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
309
310   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
311 });
312
313 function getReduxState() {
314  return {
315    serviceHierarchy: {
316      'serviceModelId': {}
317    },
318    serviceInstance: {
319      'serviceModelId': {
320        vnfs: {
321          'vnfStoreKey': {
322            tenantId: 'tenantId',
323            lcpCloudRegionId: 'lcpCloudRegionId',
324            vfModules: {
325              'vfModuleModelName': {
326                'dynamicModelName1': {
327                  isMissingData: true,
328                  action: 'None',
329                },
330                'dynamicModelName2': {
331                  action: 'None',
332                  isMissingData: true,
333                },
334              }
335            }
336          }
337        }
338      }
339    }
340  }
341 }
342
343 function getDeleteActionVfModule(dynamicModelName?: string) {
344   return <DeleteActionVfModuleInstanceAction>{
345     type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
346     dynamicModelName: dynamicModelName,
347     vnfStoreKey: 'vnfStoreKey',
348     serviceId: 'serviceModelId',
349     vfModuleModelName: 'vfModuleModelName',
350   }
351 }
352
353 function getUndoDeleteActionVfModule(dynamicModelName?: string) {
354   return  <UndoDeleteActionVfModuleInstanceAction>{
355     type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
356     dynamicModelName: dynamicModelName,
357     vnfStoreKey: 'vnfStoreKey',
358     serviceId: 'serviceModelId',
359     vfModuleModelName: 'vfModuleModelName',
360   }
361 }
362
363 function getDeleteRedux() {
364   return {
365     serviceHierarchy: {
366       'serviceModelId': {}
367     },
368     serviceInstance: {
369       'serviceModelId': {
370         vnfs: {
371           'vnfStoreKey': {
372             vfModules: {
373               'vfModuleModelName': {
374                 'dynamicModelName1': {
375                   isMissingData: true,
376                   action: 'None_Delete'
377                 },
378                 'dynamicModelName2': {
379                   isMissingData: true,
380                   action: 'None_Delete'
381                 },
382               }
383             }
384           }
385         }
386       }
387     }
388   }
389 }
390
391 function getPausedRedux() {
392   return {
393     serviceHierarchy: {
394       'serviceModelId': {}
395     },
396     serviceInstance: {
397       'serviceModelId': {
398         vnfs: {
399           'vnfStoreKey': {
400             vfModules: {
401               'vfModuleModelName': {
402                 'dynamicModelName1': {
403                 },
404                 'dynamicModelName2': {
405                 },
406                 'dynamicModelName3': {
407                 },
408                 'dynamicModelName4': {
409                 },
410                 'dynamicModelName5': {
411                 }
412               }
413             }
414           }
415         }
416       }
417     }
418   }
419 }
420
421 function getPausedActionVfModule(dynamicModelName: string) {
422   return <PauseVFModuleInstanciationAction>{
423     type: VfModuleActions.PAUSE_ACTION_VFMODULE_INSTANCE,
424     dynamicModelName: dynamicModelName,
425     vnfStoreKey: 'vnfStoreKey',
426     serviceId: 'serviceModelId',
427     vfModuleModelName: 'vfModuleModelName'
428   }
429 }
430
431   function getRemovePauseActionVfModule(dynamicModelName: string) {
432     return <RemovePauseOnVFModuleInstanciationAction>{
433       type: VfModuleActions.REMOVE_PAUSE_ON_VFMODULE_INSTANCE,
434       dynamicModelName: dynamicModelName,
435       vnfStoreKey: 'vnfStoreKey',
436       serviceId: 'serviceModelId',
437       vfModuleModelName: 'vfModuleModelName'
438     }
439   }
440 });