2 CreateVFModuleInstanceAction,
3 DeleteActionVfModuleInstanceAction,
5 DeleteVfModuleInstanceAction, PauseVFModuleInstanciationAction, RemovePauseOnVFModuleInstanciationAction,
6 UndoDeleteActionVfModuleInstanceAction,
7 UpdateVFModluePosition,
9 UpgradeVfModuleInstanceAction,
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";
18 describe('vfModuleReducer', () => {
19 test('#REMOVE_VNF_MODULE_INSTANCE : should delete existing vnf module by dynamicModelName', () => {
20 let state = vfModuleReducer(<any>{
27 'dynamicModelName1': {},
28 'dynamicModelName2': {},
36 <DeleteVfModuleInstanceAction>{
37 type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
38 modelName: 'modelName',
40 vnfStoreKey: 'vfName',
41 serviceModelId: 'serviceModelId',
42 dynamicModelName: 'dynamicModelName1'
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();
50 test('#DELETE_LAST_VNF_MODULE_INSTANCE : should delete existing vnf module', () => {
51 let state = vfModuleReducer(<any>{
58 'dynamicModelName': {}
66 <DeleteVfModuleInstanceAction>{
67 type: VfModuleActions.REMOVE_VNF_MODULE_INSTANCE,
68 modelName: 'modelName',
70 vnfStoreKey: 'vfName',
71 serviceModelId: 'serviceModelId',
72 dynamicModelName: 'dynamicModelName'
75 expect(state).toBeDefined();
76 expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']).not.toBeDefined();
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>{
95 <CreateVFModuleInstanceAction>{
96 type: VfModuleActions.CREATE_VF_MODULE,
98 vfInstance: new VfModuleInstance(),
99 vnfStoreKey: 'vnfStoreKey',
100 serviceUuid: 'serviceUuid',
102 }).serviceInstance['serviceUuid'].vnfs['vnfStoreKey'].vfModules;
104 let firstVfModuleName = Object.keys(vfModule)[0];
105 expect(vfModule[firstVfModuleName]).toBeDefined();
106 expect(vfModule[firstVfModuleName].isMissingData).toBeFalsy();
109 test('#UPDATE_VFMODULE_FEILD: should update field with some value', () => {
110 const newFieldName = 'newFieldName';
111 const newFieldValue = 'newFieldValue';
112 let oldState = getReduxState();
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
125 let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
127 expect(vfModule[newFieldName]).toEqual(newFieldValue);
130 test('#DELETE_VFMODULE_FEILD: should update field with some value', () => {
131 const deleteFieldName = 'deleteFieldName';
142 'dynamicModelName1': {
144 [deleteFieldName]: true,
147 'dynamicModelName2': {},
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,
165 let vfModule = newState.serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
167 expect(vfModule[deleteFieldName]).toBeUndefined();
170 test('#UPDATE_VFMODULE_POSITION: should update position', () => {
171 let vfModule = vfModuleReducer(<any>{
181 'dynamicModelName': {
191 <UpdateVFModluePosition>{
192 type: VfModuleActions.UPDATE_VFMODULE_POSITION,
195 dynamicModelName: "dynamicModelName",
196 modelName: "modelName"
198 instanceId: "serviceModelId",
199 vnfStoreKey: "vfName"
201 }).serviceInstance['serviceModelId'].vnfs['vfName'].vfModules["modelName"]["dynamicModelName"];
203 expect(vfModule.position).toEqual(1);
207 ['for the first vfModule', 'dynamicModelName1'],
208 ['for the second vfModule', 'dynamicModelName2'],
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];
214 expect(vfModule).toBeDefined();
215 expect(vfModule.isMissingData).toBeTruthy();
216 expect(vfModule.action).toEqual(ServiceInstanceActions.None_Delete);
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'];
223 expect(vfModule).toBeDefined();
224 expect(vfModule.tenantId).toEqual('tenantId');
225 expect(vfModule.lcpCloudRegionId).toEqual('lcpCloudRegionId');
230 ['for the first vfModule', 'dynamicModelName1', true],
231 ['for the second vfModule', 'dynamicModelName2', true],
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];
237 expect(vfModule).toBeDefined();
238 expect(vfModule.action).toEqual(ServiceInstanceActions.None);
242 ['for the first vfModule', 'dynamicModelName1', 'afterCompletion'],
243 ['for the third vfModule', 'dynamicModelName3', 'afterCompletion'],
244 ['for the last vfModule', 'dynamicModelName5', 'afterCompletion'],
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];
250 expect(vfModule).toBeDefined();
251 expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
255 ['for the first vfModule', 'dynamicModelName1', null],
256 ['for the third vfModule', 'dynamicModelName3', null],
257 ['for the last vfModule', 'dynamicModelName5', null],
259 test('#REMOVE_PAUSE_ON_VFMODULE_INSTANCE %s', (description: string, dynamicModelName:string, pauseInstantiation: string) => {
260 let vfModule = vfModuleReducer(<any>getPausedRedux(), getRemovePauseActionVfModule(dynamicModelName))
261 .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
262 expect(vfModule).toBeDefined();
263 expect(vfModule.pauseInstantiation).toEqual(pauseInstantiation);
266 test('#UPGRADE_VFMODULE', () => {
267 let vfModule = vfModuleReducer(<any>getReduxState(),
268 <UpgradeVfModuleInstanceAction>{
269 type: VfModuleActions.UPGRADE_VFMODULE,
270 dynamicModelName: 'dynamicModelName1',
271 vnfStoreKey: 'vnfStoreKey',
272 serviceId: 'serviceModelId',
273 modelName: 'vfModuleModelName'
274 }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
276 expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
279 test('#UNDO_UPGRADE_VFMODULE', () => {
280 let vfModule = vfModuleReducer(<any>{
290 'dynamicModelName1': {
292 action: 'None_Upgrade'
294 'dynamicModelName2': {},
302 <UpgradeVfModuleInstanceAction>{
303 type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
304 dynamicModelName: 'dynamicModelName1',
305 vnfStoreKey: 'vnfStoreKey',
306 serviceId: 'serviceModelId',
307 modelName: 'modelName'
308 }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
310 expect(vfModule.action).toEqual(ServiceInstanceActions.None);
313 function getReduxState() {
322 tenantId: 'tenantId',
323 lcpCloudRegionId: 'lcpCloudRegionId',
325 'vfModuleModelName': {
326 'dynamicModelName1': {
330 'dynamicModelName2': {
343 function getDeleteActionVfModule(dynamicModelName?: string) {
344 return <DeleteActionVfModuleInstanceAction>{
345 type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
346 dynamicModelName: dynamicModelName,
347 vnfStoreKey: 'vnfStoreKey',
348 serviceId: 'serviceModelId',
349 vfModuleModelName: 'vfModuleModelName',
353 function getUndoDeleteActionVfModule(dynamicModelName?: string) {
354 return <UndoDeleteActionVfModuleInstanceAction>{
355 type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
356 dynamicModelName: dynamicModelName,
357 vnfStoreKey: 'vnfStoreKey',
358 serviceId: 'serviceModelId',
359 vfModuleModelName: 'vfModuleModelName',
363 function getDeleteRedux() {
373 'vfModuleModelName': {
374 'dynamicModelName1': {
376 action: 'None_Delete'
378 'dynamicModelName2': {
380 action: 'None_Delete'
391 function getPausedRedux() {
401 'vfModuleModelName': {
402 'dynamicModelName1': {
404 'dynamicModelName2': {
406 'dynamicModelName3': {
408 'dynamicModelName4': {
410 'dynamicModelName5': {
421 function getPausedActionVfModule(dynamicModelName: string) {
422 return <PauseVFModuleInstanciationAction>{
423 type: VfModuleActions.PAUSE_ACTION_VFMODULE_INSTANCE,
424 dynamicModelName: dynamicModelName,
425 vnfStoreKey: 'vnfStoreKey',
426 serviceId: 'serviceModelId',
427 vfModuleModelName: 'vfModuleModelName'
431 function getRemovePauseActionVfModule(dynamicModelName: string) {
432 return <RemovePauseOnVFModuleInstanciationAction>{
433 type: VfModuleActions.REMOVE_PAUSE_ON_VFMODULE_INSTANCE,
434 dynamicModelName: dynamicModelName,
435 vnfStoreKey: 'vnfStoreKey',
436 serviceId: 'serviceModelId',
437 vfModuleModelName: 'vfModuleModelName'