1 import {getTestBed, TestBed} from '@angular/core/testing';
5 InstantiationStatusComponentService,
12 } from './instantiationStatus.component.service';
13 import {ServiceInfoModel} from '../shared/server/serviceInfo/serviceInfo.model';
14 import {AaiService} from "../shared/services/aaiService/aai.service";
15 import {MsoService} from "../shared/services/msoService/mso.service";
16 import {NgRedux} from "@angular-redux/store";
17 import {HttpClientTestingModule} from "@angular/common/http/testing";
18 import {FeatureFlagsService} from "../shared/services/featureFlag/feature-flags.service";
19 import {DrawingBoardModes} from "../drawingBoard/service-planning/drawing-board.modes";
20 import {RouterTestingModule} from "@angular/router/testing";
21 import {of} from "rxjs";
22 import {UrlTree} from "@angular/router";
24 class MockAppStore<T> {
30 'FLAG_1902_NEW_VIEW_EDIT': true,
41 describe('Instantiation Status Service', () => {
43 let aaiService: AaiService;
44 let msoService: MsoService;
45 let service: InstantiationStatusComponentService;
48 beforeAll(done => (async () => {
49 TestBed.configureTestingModule({
51 HttpClientTestingModule,
55 InstantiationStatusComponentService,
59 {provide: NgRedux, useClass: MockAppStore}]
61 await TestBed.compileComponents();
63 injector = getTestBed();
64 aaiService = injector.get(AaiService);
65 msoService = injector.get(MsoService);
66 service = injector.get(InstantiationStatusComponentService);
68 })().then(done).catch(done.fail));
70 test('generateServiceInfoDataMapping should return mapping of arrays', () => {
71 let data : ServiceInfoModel[] = generateServiceInfoData();
72 let result = service.generateServiceInfoDataMapping(data);
74 expect(result['1']).toBeDefined();
75 expect(result['2']).toBeDefined();
76 expect(result['3']).toBeDefined();
78 expect(result['1'].length).toEqual(2);
79 expect(result['2'].length).toEqual(2);
80 expect(result['3'].length).toEqual(1);
83 test('generateServiceInfoDataMapping if array is empty should return empty object', () => {
84 let result = service.generateServiceInfoDataMapping([]);
86 expect(result['1']).not.toBeDefined();
87 expect(result['2']).not.toBeDefined();
88 expect(result['3']).not.toBeDefined();
91 test('convertObjectToArray', () => {
93 jest.spyOn(service, 'convertObjectToArray').mockReturnValue(
97 let data : ServiceInfoModel[] = generateServiceInfoData();
98 service.convertObjectToArray(data).subscribe((result) => {
99 expect(result).toBeDefined();
103 test('click on "Open" button should open new view edit' , ()=>{
105 serviceModelId : 'serviceModelId',
106 serviceInstanceId : 'serviceInstanceId',
107 serviceType : 'serviceType',
108 subscriberId : 'subscriberId'
110 let params:UrlTree = service.getNewViewEditUrlTree(item, DrawingBoardModes.VIEW);
111 expect(params.toString().startsWith('/servicePlanning/VIEW')).toBeTruthy();
112 expect(params.queryParams).toEqual(
114 serviceModelId: item.serviceModelId,
115 serviceInstanceId: item.serviceInstanceId,
116 serviceType : item.serviceType,
117 subscriberId : item.subscriberId
121 test('build the View Edit url' , ()=>{
123 serviceModelId : '28aeb8f6-5620-4148-8bfb-a5fb406f0309',
125 let serviceModelUrl: string = '/servicePlanning/EDIT?serviceModelId=28aeb8f6-5620-4148-8bfb-a5fb406f0309';
126 let suffix:string = '../../serviceModels.htm#';
127 let tree:UrlTree = service.getNewViewEditUrlTree(item, DrawingBoardModes.EDIT);
128 let result = service.getViewEditUrl(tree);
129 expect (suffix + serviceModelUrl).toEqual(result);
132 test('getStatusTooltip should return status popover', () => {
133 let result : ServiceStatus = service.getStatus('pending');
134 expect(result.tooltip).toEqual('Pending: The action required will be sent as soon as possible.');
136 result = service.getStatus('IN_PROGRESS');
137 expect(result.tooltip).toEqual('In-progress: the service is in process of the action required.');
139 result = service.getStatus('PAUSED');
140 expect(result.tooltip).toEqual('Paused: Service has paused and waiting for your action.\n Select actions from the menu to the right.');
142 result = service.getStatus('FAILED');
143 expect(result.tooltip).toEqual('Failed: All planned actions have failed.');
145 result = service.getStatus('COMPLETED');
146 expect(result.tooltip).toEqual('Completed successfully: Service is successfully instantiated, updated or deleted.');
148 result = service.getStatus('STOPPED');
149 expect(result.tooltip).toEqual('Stopped: Due to previous failure, will not be instantiated.');
151 result = service.getStatus('COMPLETED_WITH_ERRORS');
152 expect(result.tooltip).toEqual('Completed with errors: some of the planned actions where successfully committed while other have not.\n Open the service to check it out.');
155 test('getStatusTooltip should return correct icon per job status', () => {
156 let result : ServiceStatus = service.getStatus('pending');
157 expect(result.iconClassName).toEqual(PENDING);
159 result = service.getStatus('IN_PROGRESS');
160 expect(result.iconClassName).toEqual(INPROGRESS);
162 result = service.getStatus('PAUSED');
163 expect(result.iconClassName).toEqual(PAUSE);
165 result = service.getStatus('FAILED');
166 expect(result.iconClassName).toEqual(X_O);
168 result = service.getStatus('COMPLETED');
169 expect(result.iconClassName).toEqual(SUCCESS_CIRCLE);
171 result = service.getStatus('STOPPED');
172 expect(result.iconClassName).toEqual(STOPED);
174 result = service.getStatus('COMPLETED_WITH_ERRORS');
175 expect(result.iconClassName).toEqual(COMPLETED_WITH_ERRORS);
178 function generateServiceInfoData(){
179 return JSON.parse(JSON.stringify([
181 "created": 1519956533000,
182 "modified": 1521727738000,
188 "jobId": "6748648484",
190 "jobStatus": "FAILED",
192 "owningEntityId": "1234",
193 "owningEntityName": null,
202 "subscriberName": null,
203 "serviceInstanceId": "1",
204 "serviceInstanceName": null,
205 "serviceModelId": null,
206 "serviceModelName": null,
207 "serviceModelVersion": null,
208 "createdBulkDate": 1519956533000,
209 "statusModifiedDate": 1520042933000,
214 "created": 1519956533000,
215 "modified": 1521727738000,
221 "jobId": "6748648484",
223 "jobStatus": "FAILED",
225 "owningEntityId": "1234",
226 "owningEntityName": null,
235 "subscriberName": null,
236 "serviceInstanceId": "1",
237 "serviceInstanceName": null,
238 "serviceModelId": null,
239 "serviceModelName": null,
240 "serviceModelVersion": null,
241 "createdBulkDate": 1519956533000,
242 "statusModifiedDate": 1520042933000,
247 "created": 1519956533000,
248 "modified": 1521727738000,
254 "jobId": "6748648484",
256 "jobStatus": "FAILED",
258 "owningEntityId": "1234",
259 "owningEntityName": null,
268 "subscriberName": null,
269 "serviceInstanceId": "2",
270 "serviceInstanceName": null,
271 "serviceModelId": null,
272 "serviceModelName": null,
273 "serviceModelVersion": null,
274 "createdBulkDate": 1519956533000,
275 "statusModifiedDate": 1520042933000,
280 "created": 1519956533000,
281 "modified": 1521727738000,
287 "jobId": "6748648484",
289 "jobStatus": "FAILED",
291 "owningEntityId": "1234",
292 "owningEntityName": null,
301 "subscriberName": null,
302 "serviceInstanceId": "2",
303 "serviceInstanceName": null,
304 "serviceModelId": null,
305 "serviceModelName": null,
306 "serviceModelVersion": null,
307 "createdBulkDate": 1519956533000,
308 "statusModifiedDate": 1520042933000,
313 "created": 1519956533000,
314 "modified": 1521727738000,
320 "jobId": "6748648484",
322 "jobStatus": "FAILED",
324 "owningEntityId": "1234",
325 "owningEntityName": null,
334 "subscriberName": null,
335 "serviceInstanceId": "3",
336 "serviceInstanceName": null,
337 "serviceModelId": null,
338 "serviceModelName": null,
339 "serviceModelVersion": null,
340 "createdBulkDate": 1519956533000,
341 "statusModifiedDate": 1520042933000,