diff options
Diffstat (limited to 'vid-webpack-master/src/app/shared/storeUtil/utils/cr')
3 files changed, 100 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.actions.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.actions.ts new file mode 100644 index 000000000..428a309d7 --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.actions.ts @@ -0,0 +1,21 @@ +import {Action, ActionCreator} from "redux"; +import {ActionOnFirstLevel} from "../firstLevel/firstLevel.actions"; + +export enum CrActions{ + DELETE_ACTION_CR_INSTANCE = "DELETE_ACTION_CR_INSTANCE", + UNDO_DELETE_ACTION_CR_INSTANCE = "UNDO_DELETE_ACTION_CR_INSTANCE" +} + +export const deleteActionCrInstance: ActionCreator<ActionOnFirstLevel> = (collectionResourceStoreKey, serviceId) => ({ + type: CrActions.DELETE_ACTION_CR_INSTANCE, + firstLevelName: 'collectionResources', + storeKey: collectionResourceStoreKey, + serviceId: serviceId +}); + +export const undoDeleteActionCrInstance: ActionCreator<ActionOnFirstLevel> = (collectionResourceStoreKey, serviceId) => ({ + type: CrActions.UNDO_DELETE_ACTION_CR_INSTANCE, + firstLevelName: 'collectionResources', + storeKey: collectionResourceStoreKey, + serviceId: serviceId +}); diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.spec.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.spec.ts new file mode 100644 index 000000000..e457cf9dc --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.spec.ts @@ -0,0 +1,56 @@ + +import {ServiceInstanceActions} from "../../../models/serviceInstanceActions"; +import { crReducer} from "./cr.reducer"; +import {ActionOnFirstLevel} from "../firstLevel/firstLevel.actions"; +import {CrActions} from "./cr.actions"; +describe('crReducer', () => { + + test('#DELETE_ACTION_CR_INSTANCE', () => { + let crState = crReducer(<any>{ + serviceInstance: { + 'serviceModelId': { + collectionResources: { + 'crStoreKey': { + isMissingData: true, + action: 'None' + } + } + } + } + }, + <ActionOnFirstLevel>{ + type: CrActions.DELETE_ACTION_CR_INSTANCE, + storeKey: 'crStoreKey', + firstLevelName: 'collectionResources', + serviceId: 'serviceModelId' + }).serviceInstance['serviceModelId']['collectionResources']['crStoreKey']; + + expect(crState).toBeDefined(); + expect(crState.action).toEqual(ServiceInstanceActions.None_Delete); + }); + + test('#UNDO_DELETE_ACTION_CR_INSTANCE', () => { + let crState = crReducer(<any>{ + serviceInstance: { + 'serviceModelId': { + collectionResources: { + 'crStoreKey': { + isMissingData: true, + action: 'Update_Delete' + } + } + } + } + }, + <ActionOnFirstLevel>{ + type: CrActions.UNDO_DELETE_ACTION_CR_INSTANCE, + storeKey: 'crStoreKey', + firstLevelName: 'collectionResources', + serviceId: 'serviceModelId' + }).serviceInstance['serviceModelId']['collectionResources']['crStoreKey']; + + expect(crState).toBeDefined(); + expect(crState.action).toEqual(ServiceInstanceActions.Update); + }); + +}); diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.ts new file mode 100644 index 000000000..72894e6f0 --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/cr/cr.reducer.ts @@ -0,0 +1,23 @@ +import {ServiceState} from "../main.reducer"; +import {Action} from "redux"; +import * as _ from "lodash"; +import {ServiceInstanceActions} from "../../../models/serviceInstanceActions"; +import {CrActions} from "./cr.actions"; +import {ActionOnFirstLevel} from "../firstLevel/firstLevel.actions"; +import {deleteFirstLevel} from "../reducersHelper"; + +export function crReducer(state: ServiceState, action: Action): ServiceState { + switch (action.type) { + case CrActions.DELETE_ACTION_CR_INSTANCE : { + return deleteFirstLevel(state, <ActionOnFirstLevel>action, false); + } + + case CrActions.UNDO_DELETE_ACTION_CR_INSTANCE : { + let newState = _.cloneDeep(state); + let vnf = newState.serviceInstance[(<ActionOnFirstLevel>action).serviceId]['collectionResources'][(<ActionOnFirstLevel>action).storeKey]; + let oldState = vnf.action; + newState.serviceInstance[(<ActionOnFirstLevel>action).serviceId]['collectionResources'][(<ActionOnFirstLevel>action).storeKey].action = (oldState.split('_')[0]) as ServiceInstanceActions; + return newState; + } + } + } |