1 import { LcpRegionsAndTenants } from './shared/models/lcpRegionsAndTenants';
2 import { ServiceReducer, ServiceState } from './service.reducer';
3 import { CategoryParams } from './shared/models/categoryParams';
5 DELETE_VNF_INSTANCE, DELETE_VNF_MODULE_INSTANCE, DeleteVfModuleInstanceAction,
6 DeleteVnfInstanceAction,
8 UPDATE_LCP_REGIONS_AND_TENANTS,
9 UPDATE_PRODUCT_FAMILIES,
10 UPDATE_SERVICE_INSTANCE,
15 UpdateProductFamiliesAction, UpdateServiceInstanceAction,
16 UpdateSubscribersAction, UpdateUserIdAction,
17 UpdateVnfInstanceAction
18 } from './service.actions';
19 import { VnfInstance } from './shared/models/vnfInstance';
20 import { ServiceInstance } from './shared/models/serviceInstance';
21 import { LcpRegion } from './shared/models/lcpRegion';
22 import { Tenant } from './shared/models/tenant';
23 import { SelectOption } from './shared/models/selectOption';
26 const initialState: ServiceState = {
29 lcpRegionsAndTenants: new LcpRegionsAndTenants(),
31 productFamilies: null,
34 categoryParameters: new CategoryParams()
38 describe('service reducer', () => {
39 const userId: string = 'userId';
40 it('should handle initial state', () => {
41 expect(ServiceReducer(undefined, <any>{})).toEqual(initialState);
44 it('#UPDATE_USER_ID : should update userId ', (done: DoneFn) => {
45 expect(ServiceReducer(<any>{},
50 )['userId']).toEqual(userId);
54 it('#UPDATE_SERVICE_INSTANCE : should update service instance with service id ', (done: DoneFn) => {
55 const serviceUuid:string = 'serviceUuid';
57 let serviceInstanceObject : ServiceInstance = {
58 instanceName: 'instanceName',
59 isUserProvidedNaming: false,
60 globalSubscriberId: 'globalSubscriberId',
61 productFamilyId: 'productFamilyId',
62 subscriptionServiceType: 'subscriptionServiceType',
63 lcpCloudRegionId: 'lcpCloudRegionId',
65 tenantName: 'tenantName',
66 aicZoneId: 'aicZoneId',
67 aicZoneName: 'aicZoneName',
68 projectName: 'projectName',
69 owningEntityId: 'owningEntityId',
70 owningEntityName: 'owningEntityName',
75 rollbackOnFailure: false,
76 subscriberName: 'subscriberName'
79 let serviceState = ServiceReducer(<any>{serviceInstance : {}},
80 <UpdateServiceInstanceAction>{
81 type: UPDATE_SERVICE_INSTANCE,
82 serviceUuid: serviceUuid,
83 serviceInstance : serviceInstanceObject
84 }).serviceInstance['serviceUuid'];
86 expect(serviceState.instanceName).toEqual(serviceInstanceObject.instanceName);
87 expect(serviceState.isUserProvidedNaming).toEqual(serviceInstanceObject.isUserProvidedNaming);
88 expect(serviceState.globalSubscriberId).toEqual(serviceInstanceObject.globalSubscriberId);
89 expect(serviceState.productFamilyId).toEqual(serviceInstanceObject.productFamilyId);
90 expect(serviceState.subscriptionServiceType).toEqual(serviceInstanceObject.subscriptionServiceType);
91 expect(serviceState.lcpCloudRegionId).toEqual(serviceInstanceObject.lcpCloudRegionId);
92 expect(serviceState.tenantId).toEqual(serviceInstanceObject.tenantId);
93 expect(serviceState.tenantName).toEqual(serviceInstanceObject.tenantName);
94 expect(serviceState.aicZoneId).toEqual(serviceInstanceObject.aicZoneId);
95 expect(serviceState.aicZoneName).toEqual(serviceInstanceObject.aicZoneName);
96 expect(serviceState.projectName).toEqual(serviceInstanceObject.projectName);
97 expect(serviceState.owningEntityId).toEqual(serviceInstanceObject.owningEntityId);
98 expect(serviceState.owningEntityName).toEqual(serviceInstanceObject.owningEntityName);
99 expect(serviceState.pause).toEqual(serviceInstanceObject.pause);
100 expect(serviceState.bulkSize).toEqual(serviceInstanceObject.bulkSize);
101 expect(serviceState.vnfs).toEqual(serviceInstanceObject.vnfs);
102 expect(serviceState.instanceParams).toEqual(serviceInstanceObject.instanceParams);
103 expect(serviceState.rollbackOnFailure).toEqual(serviceInstanceObject.rollbackOnFailure);
104 expect(serviceState.subscriberName).toEqual(serviceInstanceObject.subscriberName);
109 it('#UPDATE_VNF_INSTANCE : should update vnf instance with service id and vnfModelName ', (done: DoneFn) => {
110 let vnfInstanceObj : VnfInstance = {
111 instanceName: 'instanceName',
112 isUserProvidedNaming: false,
113 productFamilyId: 'productFamilyId',
114 lcpCloudRegionId: 'lcpCloudRegionId',
115 legacyRegion: 'legacyRegion',
116 tenantId: 'tenantId',
117 platformName: 'platformName',
118 lineOfBusiness: 'lineOfBusiness',
119 rollbackOnFailure: 'false',
123 let vnfState = ServiceReducer(<any>{serviceInstance : {
128 <UpdateVnfInstanceAction>{
129 type: UPDATE_VNF_INSTANCE,
130 serviceUuid : 'serviceUuid',
131 vnfInstance: vnfInstanceObj,
132 vnfModelName : 'vnfModelName'
133 }).serviceInstance['serviceUuid'].vnfs['vnfModelName'];
135 expect(vnfState.instanceName).toEqual(vnfInstanceObj.instanceName);
136 expect(vnfState.isUserProvidedNaming).toEqual(vnfInstanceObj.isUserProvidedNaming);
137 expect(vnfState.productFamilyId).toEqual(vnfInstanceObj.productFamilyId);
138 expect(vnfState.lcpCloudRegionId).toEqual(vnfInstanceObj.lcpCloudRegionId);
139 expect(vnfState.legacyRegion).toEqual(vnfInstanceObj.legacyRegion);
140 expect(vnfState.tenantId).toEqual(vnfInstanceObj.tenantId);
141 expect(vnfState.platformName).toEqual(vnfInstanceObj.platformName);
142 expect(vnfState.lineOfBusiness).toEqual(vnfInstanceObj.lineOfBusiness);
143 expect(vnfState.vfModules).toEqual(vnfInstanceObj.vfModules);
144 expect(vnfState.rollbackOnFailure).toEqual(vnfInstanceObj.rollbackOnFailure);
149 it('#UPDATE_LCP_REGIONS_AND_TENANTS : should update lcp region and tenants', (done: DoneFn) => {
150 let lcpRegionsAndTenantsObj = [
154 "cloudRegionID" : 'cloudRegionID',
155 "is-permitted" : "is-permitted"
158 lcpRegionsTenantsMap : {
159 "lcpRegion" : [new Tenant({
160 "tenantID" : "tenantID",
161 "tenantName" : "tenantName",
162 "is-permitted" : true
167 let lcpRegionsAndTenantsState = ServiceReducer(<any>{serviceInstance : {}},
169 type: UPDATE_LCP_REGIONS_AND_TENANTS,
170 lcpRegionsAndTenants : lcpRegionsAndTenantsObj
171 })['lcpRegionsAndTenants'];
173 expect(lcpRegionsAndTenantsState).toBeDefined();
177 it('#UPDATE_SUBSCRIBERS : should update subscribers', (done: DoneFn) => {
178 let subscribersList = [
185 let subscribersState = ServiceReducer(<any>{serviceInstance : {}},
186 <UpdateSubscribersAction>{
187 type: UPDATE_SUBSCRIBERS,
188 subscribers : subscribersList
191 expect(subscribersState).toBeDefined();
192 expect(subscribersState[0].id).toEqual(subscribersList[0].id);
193 expect(subscribersState[0].isPermitted).toEqual(subscribersList[0].isPermitted);
194 expect(subscribersState[0].name).toEqual(subscribersList[0].name);
199 it('#UpdateProductFamiliesAction : should update product families', (done: DoneFn) => {
200 let productFamiliesObj = [
207 let productFamiliesState = ServiceReducer(<any>{serviceInstance : {}},
208 <UpdateProductFamiliesAction>{
209 type: UPDATE_PRODUCT_FAMILIES,
210 productFamilies : productFamiliesObj
211 })['productFamilies'];
213 expect(productFamiliesState).toBeDefined();
214 expect(productFamiliesState[0].id).toEqual(productFamiliesObj[0].id);
215 expect(productFamiliesState[0].isPermitted).toEqual(productFamiliesObj[0].isPermitted);
216 expect(productFamiliesState[0].name).toEqual(productFamiliesObj[0].name);
221 it('#UPDATE_AIC_ZONES : should update aic zones', (done: DoneFn) => {
229 let aicZonesState = ServiceReducer(<any>{serviceInstance : {}},
230 <UpdateAicZonesAction>{
231 type: UPDATE_AIC_ZONES,
232 aicZones : aicZonesObj
235 expect(aicZonesState).toBeDefined();
236 expect(aicZonesState[0].id).toEqual(aicZonesObj[0].id);
237 expect(aicZonesState[0].isPermitted).toEqual(aicZonesObj[0].isPermitted);
238 expect(aicZonesState[0].name).toEqual(aicZonesObj[0].name);
243 it('#DELETE_VNF_INSTANCE : should delete existing vnf', (done: DoneFn) => {
244 let state = ServiceReducer(<any>{serviceInstance : {
251 <DeleteVnfInstanceAction>{
252 type: DELETE_VNF_INSTANCE,
253 modelName : 'modelName',
254 serviceModelId : 'serviceModelId'
257 expect(state).toBeDefined();
258 expect(state.serviceInstance[ 'serviceModelId'].vnfs['modelName']).not.toBeDefined();
262 it('#DELETE_VNF_MODULE_INSTANCE : should delete existing vnf module', (done: DoneFn) => {
263 let state = ServiceReducer(<any>{serviceInstance : {
274 <DeleteVfModuleInstanceAction>{
275 type: DELETE_VNF_MODULE_INSTANCE,
276 modelName : 'modelName',
278 serviceModelId : 'serviceModelId'
281 expect(state).toBeDefined();
282 expect(state.serviceInstance['serviceModelId'].vnfs['vfName'].vfModules['modelName']).not.toBeDefined();