Updating INFO.yaml
[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,
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 test('#UPGRADE_VFMODULE', () => {
255   let vfModule = vfModuleReducer(<any>getReduxState(),
256     <UpgradeVfModuleInstanceAction>{
257       type: VfModuleActions.UPGRADE_VFMODULE,
258       dynamicModelName: 'dynamicModelName1',
259       vnfStoreKey: 'vnfStoreKey',
260       serviceId: 'serviceModelId',
261       modelName: 'vfModuleModelName'
262     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
263
264   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
265 });
266
267 test('#UNDO_UPGRADE_VFMODULE', () => {
268   let vfModule = vfModuleReducer(<any>{
269       serviceHierarchy: {
270         'serviceModelId': {}
271       },
272       serviceInstance: {
273         'serviceModelId': {
274           vnfs: {
275             'vnfStoreKey': {
276               vfModules: {
277                 'modelName': {
278                   'dynamicModelName1': {
279                     isMissingData: true,
280                     action: 'None_Upgrade'
281                   },
282                   'dynamicModelName2': {},
283                 }
284               }
285             }
286           }
287         }
288       }
289     },
290     <UpgradeVfModuleInstanceAction>{
291       type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
292       dynamicModelName: 'dynamicModelName1',
293       vnfStoreKey: 'vnfStoreKey',
294       serviceId: 'serviceModelId',
295       modelName: 'modelName'
296     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
297
298   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
299 });
300
301 function getReduxState() {
302  return {
303    serviceHierarchy: {
304      'serviceModelId': {}
305    },
306    serviceInstance: {
307      'serviceModelId': {
308        vnfs: {
309          'vnfStoreKey': {
310            tenantId: 'tenantId',
311            lcpCloudRegionId: 'lcpCloudRegionId',
312            vfModules: {
313              'vfModuleModelName': {
314                'dynamicModelName1': {
315                  isMissingData: true,
316                  action: 'None',
317                },
318                'dynamicModelName2': {
319                  action: 'None',
320                  isMissingData: true,
321                },
322              }
323            }
324          }
325        }
326      }
327    }
328  }
329 }
330
331 function getDeleteActionVfModule(dynamicModelName?: string) {
332   return <DeleteActionVfModuleInstanceAction>{
333     type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
334     dynamicModelName: dynamicModelName,
335     vnfStoreKey: 'vnfStoreKey',
336     serviceId: 'serviceModelId',
337     vfModuleModelName: 'vfModuleModelName',
338   }
339 }
340
341 function getUndoDeleteActionVfModule(dynamicModelName?: string) {
342   return  <UndoDeleteActionVfModuleInstanceAction>{
343     type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
344     dynamicModelName: dynamicModelName,
345     vnfStoreKey: 'vnfStoreKey',
346     serviceId: 'serviceModelId',
347     vfModuleModelName: 'vfModuleModelName',
348   }
349 }
350
351 function getDeleteRedux() {
352   return {
353     serviceHierarchy: {
354       'serviceModelId': {}
355     },
356     serviceInstance: {
357       'serviceModelId': {
358         vnfs: {
359           'vnfStoreKey': {
360             vfModules: {
361               'vfModuleModelName': {
362                 'dynamicModelName1': {
363                   isMissingData: true,
364                   action: 'None_Delete'
365                 },
366                 'dynamicModelName2': {
367                   isMissingData: true,
368                   action: 'None_Delete'
369                 },
370               }
371             }
372           }
373         }
374       }
375     }
376   }
377 }
378
379 function getPausedRedux() {
380   return {
381     serviceHierarchy: {
382       'serviceModelId': {}
383     },
384     serviceInstance: {
385       'serviceModelId': {
386         vnfs: {
387           'vnfStoreKey': {
388             vfModules: {
389               'vfModuleModelName': {
390                 'dynamicModelName1': {
391                 },
392                 'dynamicModelName2': {
393                 },
394                 'dynamicModelName3': {
395                 },
396                 'dynamicModelName4': {
397                 },
398                 'dynamicModelName5': {
399                 }
400               }
401             }
402           }
403         }
404       }
405     }
406   }
407 }
408
409 function getPausedActionVfModule(dynamicModelName: string) {
410   return <PauseVFModuleInstanciationAction>{
411     type: VfModuleActions.PAUSE_ACTION_VFMODULE_INSTANCE,
412     dynamicModelName: dynamicModelName,
413     vnfStoreKey: 'vnfStoreKey',
414     serviceId: 'serviceModelId',
415     vfModuleModelName: 'vfModuleModelName'
416   }
417 }
418 });