Merge "identify macro services without instantiation type in BE by feature flag"
[vid.git] / vid-webpack-master / src / app / shared / storeUtil / utils / vfModule / vfModule.reducers.spec.ts
1 import {
2   CreateVFModuleInstanceAction,
3   DeleteActionVfModuleInstanceAction, DeleteVFModuleField,
4   DeleteVfModuleInstanceAction,
5   UndoDeleteActionVfModuleInstanceAction,
6   UpdateVFModluePosition, UpdateVFModuleField,
7   UpgradeVfModuleInstanceAction,
8   VfModuleActions
9 } from "./vfModule.actions";
10 import {vfModuleReducer} from "./vfModule.reducers";
11 import {VfModuleInstance} from "../../../models/vfModuleInstance";
12 import {ServiceInstanceActions} from "../../../models/serviceInstanceActions";
13
14
15 describe('vfModuleReducer', () => {
16   test('#REMOVE_VNF_MODULE_INSTANCE : should delete existing vnf module by dynamicModelName', () => {
17     let state = vfModuleReducer(<any>{
18         serviceInstance: {
19           'serviceModelId': {
20             vnfs: {
21               'vfName': {
22                 vfModules: {
23                   'modelName': {
24                     'dynamicModelName1': {},
25                     'dynamicModelName2': {},
26                   }
27                 }
28               }
29             }
30           }
31         }
32       },
33       <DeleteVfModuleInstanceAction>{
34         type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
35         modelName: 'modelName',
36         vfName: 'vfName',
37         vnfStoreKey: 'vfName',
38         serviceModelId: 'serviceModelId',
39         dynamicModelName: 'dynamicModelName1'
40       });
41
42     expect(state).toBeDefined();
43     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']['dynamicModelName2']).toBeDefined();
44     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']['dynamicModelName1']).not.toBeDefined();
45   });
46
47   test('#DELETE_LAST_VNF_MODULE_INSTANCE : should delete existing vnf module', () => {
48     let state = vfModuleReducer(<any>{
49         serviceInstance: {
50           'serviceModelId': {
51             vnfs: {
52               'vfName': {
53                 vfModules: {
54                   'modelName': {
55                     'dynamicModelName': {}
56                   }
57                 }
58               }
59             }
60           }
61         }
62       },
63       <DeleteVfModuleInstanceAction>{
64         type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
65         modelName: 'modelName',
66         vfName: 'vfName',
67         vnfStoreKey: 'vfName',
68         serviceModelId: 'serviceModelId',
69         dynamicModelName: 'dynamicModelName'
70       });
71
72     expect(state).toBeDefined();
73     expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']).not.toBeDefined();
74   });
75
76   test('#CREATE_VF_MODULE: should create new vfModule to existing VNF', () => {
77     let vfModuleInstance: VfModuleInstance = new VfModuleInstance();
78     vfModuleInstance.instanceName = 'instanceName';
79     vfModuleInstance.isMissingData = false;
80     vfModuleInstance.volumeGroupName = 'volumeGroupName';
81     let vfModule = vfModuleReducer(<any>{
82         serviceInstance: {
83           'serviceUuid': {
84             vnfs: {
85               'vnfStoreKey': {
86                 'vfModules': {}
87               }
88             }
89           }
90         }
91       },
92       <CreateVFModuleInstanceAction>{
93         type: VfModuleActions.CREATE_VF_MODULE,
94         vfId: 'vfId',
95         vfInstance: new VfModuleInstance(),
96         vnfStoreKey: 'vnfStoreKey',
97         serviceUuid: 'serviceUuid',
98         index: 1
99       }).serviceInstance['serviceUuid'].vnfs['vnfStoreKey'].vfModules;
100
101     let firstVfModuleName = Object.keys(vfModule)[0];
102     expect(vfModule[firstVfModuleName]).toBeDefined();
103     expect(vfModule[firstVfModuleName].isMissingData).toBeFalsy();
104   });
105
106   test('#UPDATE_VFMODULE_FEILD: should update field with some value', () => {
107     const newFieldName = 'newFieldName';
108     const newFieldValue = 'newFieldValue';
109     let oldState = {
110       serviceHierarchy: {
111         'serviceModelId': {}
112       },
113       serviceInstance: {
114         'serviceModelId': {
115           vnfs: {
116             'vnfStoreKey': {
117               vfModules: {
118                 'modelName': {
119                   'dynamicModelName1': {
120                     isMissingData: true,
121                     action: 'None'
122                   },
123                   'dynamicModelName2': {},
124                 }
125               }
126             }
127           }
128         }
129       }
130     };
131
132     let newState = vfModuleReducer(<any>oldState,
133       <UpdateVFModuleField>{
134         type: VfModuleActions.UPDATE_VFMODULE_FEILD,
135         dynamicModelName: 'dynamicModelName1',
136         vnfStoreKey: 'vnfStoreKey',
137         serviceId: 'serviceModelId',
138         modelName: 'modelName',
139         fieldName: newFieldName,
140         fieldValue: newFieldValue
141       });
142
143     let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
144
145     expect(vfModule[newFieldName]).toEqual(newFieldValue);
146   });
147
148   test('#DELETE_VFMODULE_FEILD: should update field with some value', () => {
149       const deleteFieldName = 'deleteFieldName';
150       let oldState = {
151         serviceHierarchy: {
152           'serviceModelId': {}
153         },
154         serviceInstance: {
155           'serviceModelId': {
156             vnfs: {
157               'vnfStoreKey': {
158                 vfModules: {
159                   'modelName': {
160                     'dynamicModelName1': {
161                       isMissingData: true,
162                       [deleteFieldName]: true,
163                       action: 'None'
164                     },
165                     'dynamicModelName2': {},
166                   }
167                 }
168               }
169             }
170           }
171         }
172       };
173       let newState = vfModuleReducer(<any>oldState,
174     <DeleteVFModuleField>{
175       type: VfModuleActions.DELETE_VFMODULE_FEILD,
176       dynamicModelName: 'dynamicModelName1',
177       vnfStoreKey: 'vnfStoreKey',
178       serviceId: 'serviceModelId',
179       modelName: 'modelName',
180       deleteFieldName: deleteFieldName,
181     });
182
183   let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
184
185   expect(vfModule[deleteFieldName]).toBeUndefined();
186 });
187
188 test('#UPDATE_VFMODULE_POSITION: should update position', () => {
189   let vfModule = vfModuleReducer(<any>{
190       serviceHierarchy: {
191         'serviceModelId': {}
192       },
193       serviceInstance: {
194         'serviceModelId': {
195           vnfs: {
196             'vfName': {
197               vfModules: {
198                 'modelName': {
199                   'dynamicModelName': {
200                     isMissingData: true
201                   }
202                 }
203               }
204             }
205           }
206         }
207       }
208     },
209     <UpdateVFModluePosition>{
210       type: VfModuleActions.UPDATE_VFMODULE_POSITION,
211       node: {
212         position: 1,
213         dynamicModelName: "dynamicModelName",
214         modelName: "modelName"
215       },
216       instanceId: "serviceModelId",
217       vnfStoreKey: "vfName"
218
219     }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
220
221   expect(vfModule.position).toEqual(1);
222 });
223
224 test('#DELETE_ACTION_VF_MODULE_INSTANCE', () => {
225   let vfModule = vfModuleReducer(<any>{
226       serviceHierarchy: {
227         'serviceModelId': {}
228       },
229       serviceInstance: {
230         'serviceModelId': {
231           vnfs: {
232             'vnfStoreKey': {
233               vfModules: {
234                 'modelName': {
235                   'dynamicModelName1': {
236                     isMissingData: true,
237                     action: 'None'
238                   },
239                   'dynamicModelName2': {},
240                 }
241               }
242             }
243           }
244         }
245       }
246     },
247     <DeleteActionVfModuleInstanceAction>{
248       type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
249       dynamicModelName: 'dynamicModelName1',
250       vnfStoreKey: 'vnfStoreKey',
251       serviceId: 'serviceModelId'
252     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
253
254   console.log(vfModule.action);
255   expect(vfModule).toBeDefined();
256   expect(vfModule.isMissingData).toBeTruthy();
257   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
258 });
259
260 test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
261   let vfModule = vfModuleReducer(<any>{
262       serviceHierarchy: {
263         'serviceModelId': {}
264       },
265       serviceInstance: {
266         'serviceModelId': {
267           vnfs: {
268             'vnfStoreKey': {
269               vfModules: {
270                 'modelName': {
271                   'dynamicModelName1': {
272                     isMissingData: true,
273                     action: 'None_Delete'
274                   },
275                   'dynamicModelName2': {},
276                 }
277               }
278             }
279           }
280         }
281       }
282     },
283     <UndoDeleteActionVfModuleInstanceAction>{
284       type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
285       dynamicModelName: 'dynamicModelName1',
286       vnfStoreKey: 'vnfStoreKey',
287       serviceId: 'serviceModelId'
288     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
289
290   console.log(vfModule.action);
291   expect(vfModule).toBeDefined();
292   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
293 });
294
295 test('#UPGRADE_VFMODULE', () => {
296   let vfModule = vfModuleReducer(<any>{
297       serviceHierarchy: {
298         'serviceModelId': {}
299       },
300       serviceInstance: {
301         'serviceModelId': {
302           vnfs: {
303             'vnfStoreKey': {
304               vfModules: {
305                 'modelName': {
306                   'dynamicModelName1': {
307                     isMissingData: true,
308                     action: 'None'
309                   },
310                   'dynamicModelName2': {},
311                 }
312               }
313             }
314           }
315         }
316       }
317     },
318     <UpgradeVfModuleInstanceAction>{
319       type: VfModuleActions.UPGRADE_VFMODULE,
320       dynamicModelName: 'dynamicModelName1',
321       vnfStoreKey: 'vnfStoreKey',
322       serviceId: 'serviceModelId',
323       modelName: 'modelName'
324     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
325
326   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
327 });
328
329 test('#UNDO_UPGRADE_VFMODULE', () => {
330   let vfModule = vfModuleReducer(<any>{
331       serviceHierarchy: {
332         'serviceModelId': {}
333       },
334       serviceInstance: {
335         'serviceModelId': {
336           vnfs: {
337             'vnfStoreKey': {
338               vfModules: {
339                 'modelName': {
340                   'dynamicModelName1': {
341                     isMissingData: true,
342                     action: 'None_Upgrade'
343                   },
344                   'dynamicModelName2': {},
345                 }
346               }
347             }
348           }
349         }
350       }
351     },
352     <UpgradeVfModuleInstanceAction>{
353       type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
354       dynamicModelName: 'dynamicModelName1',
355       vnfStoreKey: 'vnfStoreKey',
356       serviceId: 'serviceModelId',
357       modelName: 'modelName'
358     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
359
360   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
361 });
362
363 })
364 ;