add tenantId and lcpCloudRegion to vfm instance during delete vfm
[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 = getReduxState();
110
111     let newState = vfModuleReducer(<any>oldState,
112       <UpdateVFModuleField>{
113         type: VfModuleActions.UPDATE_VFMODULE_FEILD,
114         dynamicModelName: 'dynamicModelName1',
115         vnfStoreKey: 'vnfStoreKey',
116         serviceId: 'serviceModelId',
117         modelName: 'modelName',
118         fieldName: newFieldName,
119         fieldValue: newFieldValue
120       });
121
122     let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
123
124     expect(vfModule[newFieldName]).toEqual(newFieldValue);
125   });
126
127   test('#DELETE_VFMODULE_FEILD: should update field with some value', () => {
128       const deleteFieldName = 'deleteFieldName';
129       let oldState = {
130         serviceHierarchy: {
131           'serviceModelId': {}
132         },
133         serviceInstance: {
134           'serviceModelId': {
135             vnfs: {
136               'vnfStoreKey': {
137                 vfModules: {
138                   'modelName': {
139                     'dynamicModelName1': {
140                       isMissingData: true,
141                       [deleteFieldName]: true,
142                       action: 'None'
143                     },
144                     'dynamicModelName2': {},
145                   }
146                 }
147               }
148             }
149           }
150         }
151       };
152       let newState = vfModuleReducer(<any>oldState,
153     <DeleteVFModuleField>{
154       type: VfModuleActions.DELETE_VFMODULE_FIELD,
155       dynamicModelName: 'dynamicModelName1',
156       vnfStoreKey: 'vnfStoreKey',
157       serviceId: 'serviceModelId',
158       modelName: 'modelName',
159       deleteFieldName: deleteFieldName,
160     });
161
162   let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
163
164   expect(vfModule[deleteFieldName]).toBeUndefined();
165 });
166
167 test('#UPDATE_VFMODULE_POSITION: should update position', () => {
168   let vfModule = vfModuleReducer(<any>{
169       serviceHierarchy: {
170         'serviceModelId': {}
171       },
172       serviceInstance: {
173         'serviceModelId': {
174           vnfs: {
175             'vfName': {
176               vfModules: {
177                 'modelName': {
178                   'dynamicModelName': {
179                     isMissingData: true
180                   }
181                 }
182               }
183             }
184           }
185         }
186       }
187     },
188     <UpdateVFModluePosition>{
189       type: VfModuleActions.UPDATE_VFMODULE_POSITION,
190       node: {
191         position: 1,
192         dynamicModelName: "dynamicModelName",
193         modelName: "modelName"
194       },
195       instanceId: "serviceModelId",
196       vnfStoreKey: "vfName"
197
198     }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
199
200   expect(vfModule.position).toEqual(1);
201 });
202
203 test('#DELETE_ACTION_VF_MODULE_INSTANCE', () => {
204   let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule())
205     .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
206
207   expect(vfModule).toBeDefined();
208   expect(vfModule.isMissingData).toBeTruthy();
209   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
210 });
211
212 test('#DELETE_ACTION_VF_MODULE_INSTANCE set tenantId and lcpCloudRegion to VFM', () => {
213   let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule())
214     .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
215
216   expect(vfModule).toBeDefined();
217   expect(vfModule.tenantId).toEqual('tenantId');
218   expect(vfModule.lcpCloudRegionId).toEqual('lcpCloudRegionId');
219
220 });
221
222 test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
223   let vfModule = vfModuleReducer(<any>{
224       serviceHierarchy: {
225         'serviceModelId': {}
226       },
227       serviceInstance: {
228         'serviceModelId': {
229           vnfs: {
230             'vnfStoreKey': {
231               vfModules: {
232                 'modelName': {
233                   'dynamicModelName1': {
234                     isMissingData: true,
235                     action: 'None_Delete'
236                   },
237                   'dynamicModelName2': {},
238                 }
239               }
240             }
241           }
242         }
243       }
244     },
245     <UndoDeleteActionVfModuleInstanceAction>{
246       type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
247       dynamicModelName: 'dynamicModelName1',
248       vnfStoreKey: 'vnfStoreKey',
249       serviceId: 'serviceModelId'
250     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
251
252   expect(vfModule).toBeDefined();
253   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
254 });
255
256 test('#UPGRADE_VFMODULE', () => {
257   let vfModule = vfModuleReducer(<any>getReduxState(),
258     <UpgradeVfModuleInstanceAction>{
259       type: VfModuleActions.UPGRADE_VFMODULE,
260       dynamicModelName: 'dynamicModelName1',
261       vnfStoreKey: 'vnfStoreKey',
262       serviceId: 'serviceModelId',
263       modelName: 'modelName'
264     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
265
266   expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
267 });
268
269 test('#UNDO_UPGRADE_VFMODULE', () => {
270   let vfModule = vfModuleReducer(<any>{
271       serviceHierarchy: {
272         'serviceModelId': {}
273       },
274       serviceInstance: {
275         'serviceModelId': {
276           vnfs: {
277             'vnfStoreKey': {
278               vfModules: {
279                 'modelName': {
280                   'dynamicModelName1': {
281                     isMissingData: true,
282                     action: 'None_Upgrade'
283                   },
284                   'dynamicModelName2': {},
285                 }
286               }
287             }
288           }
289         }
290       }
291     },
292     <UpgradeVfModuleInstanceAction>{
293       type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
294       dynamicModelName: 'dynamicModelName1',
295       vnfStoreKey: 'vnfStoreKey',
296       serviceId: 'serviceModelId',
297       modelName: 'modelName'
298     }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
299
300   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
301 });
302
303 function getReduxState() {
304  return {
305    serviceHierarchy: {
306      'serviceModelId': {}
307    },
308    serviceInstance: {
309      'serviceModelId': {
310        vnfs: {
311          'vnfStoreKey': {
312            tenantId: 'tenantId',
313            lcpCloudRegionId: 'lcpCloudRegionId',
314            vfModules: {
315              'modelName': {
316                'dynamicModelName1': {
317                  isMissingData: true,
318                  action: 'None',
319                },
320                'dynamicModelName2': {},
321              }
322            }
323          }
324        }
325      }
326    }
327  }
328 }
329
330 function getDeleteActionVfModule() {
331   return <DeleteActionVfModuleInstanceAction>{
332     type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
333     dynamicModelName: 'dynamicModelName1',
334     vnfStoreKey: 'vnfStoreKey',
335     serviceId: 'serviceModelId'
336   }
337 }
338 });