91b749e0d206bf914df275809239f99d81c0984f
[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_FIELD,
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   expect(vfModule).toBeDefined();
255   expect(vfModule.isMissingData).toBeTruthy();
256   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
257 });
258
259 test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
260   let vfModule = vfModuleReducer(<any>{
261       serviceHierarchy: {
262         'serviceModelId': {}
263       },
264       serviceInstance: {
265         'serviceModelId': {
266           vnfs: {
267             'vnfStoreKey': {
268               vfModules: {
269                 'modelName': {
270                   'dynamicModelName1': {
271                     isMissingData: true,
272                     action: 'None_Delete'
273                   },
274                   'dynamicModelName2': {},
275                 }
276               }
277             }
278           }
279         }
280       }
281     },
282     <UndoDeleteActionVfModuleInstanceAction>{
283       type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
284       dynamicModelName: 'dynamicModelName1',
285       vnfStoreKey: 'vnfStoreKey',
286       serviceId: 'serviceModelId'
287     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
288
289   expect(vfModule).toBeDefined();
290   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
291 });
292
293 test('#UPGRADE_VFMODULE', () => {
294   let vfModule = vfModuleReducer(<any>{
295       serviceHierarchy: {
296         'serviceModelId': {}
297       },
298       serviceInstance: {
299         'serviceModelId': {
300           vnfs: {
301             'vnfStoreKey': {
302               vfModules: {
303                 'modelName': {
304                   'dynamicModelName1': {
305                     isMissingData: true,
306                     action: 'None'
307                   },
308                   'dynamicModelName2': {},
309                 }
310               }
311             }
312           }
313         }
314       }
315     },
316     <UpgradeVfModuleInstanceAction>{
317       type: VfModuleActions.UPGRADE_VFMODULE,
318       dynamicModelName: 'dynamicModelName1',
319       vnfStoreKey: 'vnfStoreKey',
320       serviceId: 'serviceModelId',
321       modelName: 'modelName'
322     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
323
324   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
325 });
326
327 test('#UNDO_UPGRADE_VFMODULE', () => {
328   let vfModule = vfModuleReducer(<any>{
329       serviceHierarchy: {
330         'serviceModelId': {}
331       },
332       serviceInstance: {
333         'serviceModelId': {
334           vnfs: {
335             'vnfStoreKey': {
336               vfModules: {
337                 'modelName': {
338                   'dynamicModelName1': {
339                     isMissingData: true,
340                     action: 'None_Upgrade'
341                   },
342                   'dynamicModelName2': {},
343                 }
344               }
345             }
346           }
347         }
348       }
349     },
350     <UpgradeVfModuleInstanceAction>{
351       type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
352       dynamicModelName: 'dynamicModelName1',
353       vnfStoreKey: 'vnfStoreKey',
354       serviceId: 'serviceModelId',
355       modelName: 'modelName'
356     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
357
358   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
359 });
360
361 })
362 ;