diff options
Diffstat (limited to 'vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate')
3 files changed, 55 insertions, 0 deletions
diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.action.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.action.ts new file mode 100644 index 000000000..2cfd38482 --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.action.ts @@ -0,0 +1,17 @@ +import {Action, ActionCreator} from "redux"; +import {ServiceInstance} from "../../../models/serviceInstance"; + +export enum UseTemplateActions { + CREATE_SERVICE_INSTANCE_FROM_TEMPLATE = 'CREATE_SERVICE_INSTANCE_FROM_TEMPLATE', +} + +export interface CreateServiceInstanceFromTemplate extends Action { + serviceInstantiationTemplate?: ServiceInstance; + serviceModelId?: string; +} + +export const createServiceInstanceFromTemplate: ActionCreator<CreateServiceInstanceFromTemplate> = (serviceInstantiationTemplate, serviceModelId) => ({ + type: UseTemplateActions.CREATE_SERVICE_INSTANCE_FROM_TEMPLATE, + serviceInstantiationTemplate: serviceInstantiationTemplate, + serviceModelId: serviceModelId +}); diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.spec.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.spec.ts new file mode 100644 index 000000000..e0f46e13a --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.spec.ts @@ -0,0 +1,18 @@ +import {ServiceInstance} from "../../../models/serviceInstance"; +import {useTemplateReducer} from "./useTemplate.reducer"; +import {CreateServiceInstanceFromTemplate, UseTemplateActions} from "./useTemplate.action"; + +test('#CREATE_SERVICE_INSTANCE_FROM_TEMPLATE should add new service instance from template to redux ', () => { + let serviceFromTemplateInstance: ServiceInstance = <any>{ + instanceName: 'templateInstanceName' + }; + let serviceState = useTemplateReducer(<any>{ + serviceInstance:{}}, + <CreateServiceInstanceFromTemplate> { + type: UseTemplateActions.CREATE_SERVICE_INSTANCE_FROM_TEMPLATE, + serviceModelId: 'serviceModelID', + serviceInstantiationTemplate: serviceFromTemplateInstance, + }) + expect (serviceState).toBeDefined(); + expect (serviceState.serviceInstance['serviceModelID'].instanceName).toEqual('templateInstanceName'); +}); diff --git a/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.ts b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.ts new file mode 100644 index 000000000..5a06d6e0a --- /dev/null +++ b/vid-webpack-master/src/app/shared/storeUtil/utils/useTemplate/useTemplate.reducer.ts @@ -0,0 +1,20 @@ +import {ServiceState} from "../main.reducer"; +import {Action} from "redux"; +import { + createServiceInstanceFromTemplate, + CreateServiceInstanceFromTemplate, + UseTemplateActions +} from "./useTemplate.action"; +import * as _ from "lodash"; + +export function useTemplateReducer(state: ServiceState, action: Action) : ServiceState { + switch (action.type) { + case UseTemplateActions.CREATE_SERVICE_INSTANCE_FROM_TEMPLATE : { + const updateServiceInstanceFromTemplateAction = <CreateServiceInstanceFromTemplate>action; + const uuid = updateServiceInstanceFromTemplateAction.serviceModelId; + let newState = _.cloneDeep(state); + newState.serviceInstance[uuid] = updateServiceInstanceFromTemplateAction.serviceInstantiationTemplate; + return newState; + } + } +} |