Can't undo delete the second vfModule in drawing board - fix. 78/106878/1
authorAlexey Sandler <alexey.sandler@intl.att.com>
Thu, 30 Apr 2020 08:26:40 +0000 (11:26 +0300)
committerAlexey Sandler <alexey.sandler@intl.att.com>
Thu, 30 Apr 2020 08:26:40 +0000 (11:26 +0300)
Given two vfModules created under the same vnf,
when try to undo delete action the second vfModule its status not updated to deleted.
Issue-ID: VID-819

Signed-off-by: Alexey Sandler <alexey.sandler@intl.att.com>
Change-Id: I8b14896be68a3aa132027f007ec0695ff706339c

vid-webpack-master/src/app/drawingBoard/service-planning/objectsToTree/models/vfModule/vfModule.model.info.ts
vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.actions.ts
vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.spec.ts
vid-webpack-master/src/app/shared/storeUtil/utils/vfModule/vfModule.reducers.ts

index b1a67a5..c7c4d3a 100644 (file)
@@ -358,7 +358,7 @@ export class VFModuleModelInfo implements ILevelNodeInfo {
       },
       undoDelete: {
         method: (node, serviceModelId) => {
-          this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId));
+          this._store.dispatch(undoDeleteVfModuleInstance(node.data.dynamicModelName, node.parent.data.vnfStoreKey, serviceModelId, node.data.modelName));
           this._store.dispatch(deleteVFModuleField(node.data.modelName,  node.parent.data.vnfStoreKey, node.data.servicedId ,node.data.dynamicModelName, 'retainAssignments'));
         },
         visible: (node) => this._sharedTreeService.shouldShowUndoDelete(node),
index ac26ba9..40c1ea9 100644 (file)
@@ -86,6 +86,7 @@ export interface UndoDeleteActionVfModuleInstanceAction extends Action {
   dynamicModelName: string;
   vnfStoreKey : string;
   serviceId?: string;
+  vfModuleModelName: string;
 }
 
 export const removeVfModuleInstance: ActionCreator<DeleteVfModuleInstanceAction> = (modelName, serviceModelId, vfName, vnfStoreKey, dynamicModelName) => ({
@@ -124,11 +125,12 @@ export const deleteActionVfModuleInstance: ActionCreator<DeleteActionVfModuleIns
   vfModuleModelName
 });
 
-export const undoDeleteVfModuleInstance: ActionCreator<UndoDeleteActionVfModuleInstanceAction> = (dynamicModelName, vnfStoreKey, serviceId) => ({
+export const undoDeleteVfModuleInstance: ActionCreator<UndoDeleteActionVfModuleInstanceAction> = (dynamicModelName, vnfStoreKey, serviceId, vfModuleModelName) => ({
   type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
   dynamicModelName: dynamicModelName,
   vnfStoreKey : vnfStoreKey,
-  serviceId: serviceId
+  serviceId: serviceId,
+  vfModuleModelName
 });
 
 export const updateVFModulePosition: ActionCreator<UpdateVFModluePosition> = (node, instanceId, vnfStoreKey) => ({
index 9bbcf46..7ec221a 100644 (file)
@@ -204,10 +204,10 @@ test('#UPDATE_VFMODULE_POSITION: should update position', () => {
 });
 
   each([
-    ['for the first vfModule', 'dynamicModelName1', true],
-    ['for the second vfModule', 'dynamicModelName2', true],
+    ['for the first vfModule', 'dynamicModelName1'],
+    ['for the second vfModule', 'dynamicModelName2'],
   ]).
-test('#DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string, isMissingData: boolean) => {
+test('#DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
     let vfModule = vfModuleReducer(<any>getReduxState(), getDeleteActionVfModule(dynamicModelName))
       .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
 
@@ -226,35 +226,13 @@ test('#DELETE_ACTION_VF_MODULE_INSTANCE set tenantId and lcpCloudRegion to VFM',
 
 });
 
-test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE', () => {
-  let vfModule = vfModuleReducer(<any>{
-      serviceHierarchy: {
-        'serviceModelId': {}
-      },
-      serviceInstance: {
-        'serviceModelId': {
-          vnfs: {
-            'vnfStoreKey': {
-              vfModules: {
-                'modelName': {
-                  'dynamicModelName1': {
-                    isMissingData: true,
-                    action: 'None_Delete'
-                  },
-                  'dynamicModelName2': {},
-                }
-              }
-            }
-          }
-        }
-      }
-    },
-    <UndoDeleteActionVfModuleInstanceAction>{
-      type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
-      dynamicModelName: 'dynamicModelName1',
-      vnfStoreKey: 'vnfStoreKey',
-      serviceId: 'serviceModelId'
-    }).serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['modelName']['dynamicModelName1'];
+  each([
+    ['for the first vfModule', 'dynamicModelName1', true],
+    ['for the second vfModule', 'dynamicModelName2', true],
+  ]).
+test('#UNDO_DELETE_ACTION_VF_MODULE_INSTANCE %s', (description, dynamicModelName: string) => {
+  let vfModule = vfModuleReducer(<any>getDeleteRedux(), getUndoDeleteActionVfModule(dynamicModelName))
+    .serviceInstance['serviceModelId'].vnfs['vnfStoreKey'].vfModules['vfModuleModelName'][dynamicModelName];
 
   expect(vfModule).toBeDefined();
   expect(vfModule.action).toEqual(ServiceInstanceActions.None);
@@ -346,4 +324,42 @@ function getDeleteActionVfModule(dynamicModelName?: string) {
     vfModuleModelName: 'vfModuleModelName',
   }
 }
+
+function getUndoDeleteActionVfModule(dynamicModelName?: string) {
+  return  <UndoDeleteActionVfModuleInstanceAction>{
+    type: VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE,
+    dynamicModelName: dynamicModelName,
+    vnfStoreKey: 'vnfStoreKey',
+    serviceId: 'serviceModelId',
+    vfModuleModelName: 'vfModuleModelName',
+  }
+}
+
+function getDeleteRedux() {
+  return {
+    serviceHierarchy: {
+      'serviceModelId': {}
+    },
+    serviceInstance: {
+      'serviceModelId': {
+        vnfs: {
+          'vnfStoreKey': {
+            vfModules: {
+              'vfModuleModelName': {
+                'dynamicModelName1': {
+                  isMissingData: true,
+                  action: 'None_Delete'
+                },
+                'dynamicModelName2': {
+                  isMissingData: true,
+                  action: 'None_Delete'
+                },
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
 });
index 9c624b0..8efecf2 100644 (file)
@@ -70,7 +70,7 @@ export function vfModuleReducer(state: ServiceState , action: Action) : ServiceS
       return Object.assign({}, state);
     }
     case VfModuleActions.DELETE_ACTION_VF_MODULE_INSTANCE : {
-      let deleteAction = (<DeleteActionVfModuleInstanceAction>action);
+      const deleteAction = (<DeleteActionVfModuleInstanceAction>action);
       let newState = _.cloneDeep(state);
       let vfModule = newState.serviceInstance[deleteAction.serviceId].vnfs[deleteAction.vnfStoreKey]
         .vfModules[deleteAction.vfModuleModelName][deleteAction.dynamicModelName];
@@ -79,23 +79,20 @@ export function vfModuleReducer(state: ServiceState , action: Action) : ServiceS
       newState.serviceInstance[deleteAction.serviceId].vnfs[deleteAction.vnfStoreKey]
         .vfModules[deleteAction.vfModuleModelName][deleteAction.dynamicModelName].action = (oldAction + '_Delete') as ServiceInstanceActions;
       setLcpCloudRegionIdAndTenantIdFromVnf(newState, deleteAction.serviceId, deleteAction.vnfStoreKey, deleteAction.vfModuleModelName, deleteAction.dynamicModelName);
-      updateIsMissingDataOnDeleteVFModule(newState, (<UndoDeleteActionVfModuleInstanceAction>action).serviceId, (<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey, deleteAction.vfModuleModelName);
+      updateIsMissingDataOnDeleteVFModule(newState, deleteAction.serviceId, deleteAction.vnfStoreKey, deleteAction.vfModuleModelName);
 
       return newState;
     }
     case VfModuleActions.UNDO_DELETE_ACTION_VF_MODULE_INSTANCE : {
+      const undoDeleteAction = (<UndoDeleteActionVfModuleInstanceAction>action);
       let newState = _.cloneDeep(state);
-      let vfModules = newState.serviceInstance[(<DeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<DeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules;
-
-      for(let key in vfModules){
-        let firstKey = Object.keys(vfModules[key])[0];
-        if(firstKey === (<UndoDeleteActionVfModuleInstanceAction>action).dynamicModelName){
-          let oldAction = newState.serviceInstance[(<UndoDeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules[key][firstKey].action;
-          newState.serviceInstance[(<UndoDeleteActionVfModuleInstanceAction>action).serviceId].vnfs[(<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey].vfModules[key][firstKey].action = (oldAction.split('_')[0]) as ServiceInstanceActions;
-          updateIsMissingDataOnDeleteVFModule(newState, (<UndoDeleteActionVfModuleInstanceAction>action).serviceId, (<UndoDeleteActionVfModuleInstanceAction>action).vnfStoreKey, key);
-          return newState;
-        }
-      }
+      let vfModule = newState.serviceInstance[undoDeleteAction.serviceId].vnfs[undoDeleteAction.vnfStoreKey]
+        .vfModules[undoDeleteAction.vfModuleModelName][undoDeleteAction.dynamicModelName];
+
+          let oldAction = vfModule.action;
+          newState.serviceInstance[undoDeleteAction.serviceId].vnfs[undoDeleteAction.vnfStoreKey]
+            .vfModules[undoDeleteAction.vfModuleModelName][undoDeleteAction.dynamicModelName].action = (oldAction.split('_')[0]) as ServiceInstanceActions;
+          updateIsMissingDataOnDeleteVFModule(newState, undoDeleteAction.serviceId, undoDeleteAction.vnfStoreKey, undoDeleteAction.vfModuleModelName);
       return newState;
     }