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