2 CreateVFModuleInstanceAction,
3 DeleteActionVfModuleInstanceAction,
5 DeleteVfModuleInstanceAction, PauseVFModuleInstanciationAction,
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);
254 test('#UPGRADE_VFMODULE', () => {
255 let vfModule = vfModuleReducer(<any>getReduxState(),
256 <UpgradeVfModuleInstanceAction>{
257 type: VfModuleActions.UPGRADE_VFMODULE,
258 dynamicModelName: 'dynamicModelName1',
259 vnfStoreKey: 'vnfStoreKey',
260 serviceId: 'serviceModelId',
261 modelName: 'vfModuleModelName'
262 }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName']['dynamicModelName1'];
264 expect(vfModule.action).toEqual(ServiceInstanceActions.None_Upgrade);
267 test('#UNDO_UPGRADE_VFMODULE', () => {
268 let vfModule = vfModuleReducer(<any>{
278 'dynamicModelName1': {
280 action: 'None_Upgrade'
282 'dynamicModelName2': {},
290 <UpgradeVfModuleInstanceAction>{
291 type: VfModuleActions.UNDO_UPGRADE_VFMODULE_ACTION,
292 dynamicModelName: 'dynamicModelName1',
293 vnfStoreKey: 'vnfStoreKey',
294 serviceId: 'serviceModelId',
295 modelName: 'modelName'
296 }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
298 expect(vfModule.action).toEqual(ServiceInstanceActions.None);
301 function getReduxState() {
310 tenantId: 'tenantId',
311 lcpCloudRegionId: 'lcpCloudRegionId',
313 'vfModuleModelName': {
314 'dynamicModelName1': {
318 'dynamicModelName2': {
331 function getDeleteActionVfModule(dynamicModelName?: string) {
332 return <DeleteActionVfModuleInstanceAction>{
333 type: VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE,
334 dynamicModelName: dynamicModelName,
335 vnfStoreKey: 'vnfStoreKey',
336 serviceId: 'serviceModelId',
337 vfModuleModelName: 'vfModuleModelName',
341 function getUndoDeleteActionVfModule(dynamicModelName?: string) {
342 return <UndoDeleteActionVfModuleInstanceAction>{
343 type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
344 dynamicModelName: dynamicModelName,
345 vnfStoreKey: 'vnfStoreKey',
346 serviceId: 'serviceModelId',
347 vfModuleModelName: 'vfModuleModelName',
351 function getDeleteRedux() {
361 'vfModuleModelName': {
362 'dynamicModelName1': {
364 action: 'None_Delete'
366 'dynamicModelName2': {
368 action: 'None_Delete'
379 function getPausedRedux() {
389 'vfModuleModelName': {
390 'dynamicModelName1': {
392 'dynamicModelName2': {
394 'dynamicModelName3': {
396 'dynamicModelName4': {
398 'dynamicModelName5': {
409 function getPausedActionVfModule(dynamicModelName: string) {
410 return <PauseVFModuleInstanciationAction>{
411 type: VfModuleActions.PAUSE_ACTION_VFMODULE_INSTANCE,
412 dynamicModelName: dynamicModelName,
413 vnfStoreKey: 'vnfStoreKey',
414 serviceId: 'serviceModelId',
415 vfModuleModelName: 'vfModuleModelName'