diff options
3 files changed, 86 insertions, 45 deletions
diff --git a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board.modes.ts b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board.modes.ts index 452666f91..78e2b629e 100644 --- a/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board.modes.ts +++ b/vid-webpack-master/src/app/drawingBoard/service-planning/drawing-board.modes.ts @@ -4,5 +4,6 @@ export enum DrawingBoardModes { VIEW = 'VIEW', EDIT = 'EDIT', OLD_VIEW_EDIT = 'OLD_VIEW_EDIT', - CREATE = 'CREATE' + CREATE = 'CREATE', + RECREATE = 'RECREATE' } diff --git a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts index 27d3f419b..29adfa9e0 100644 --- a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts +++ b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.spec.ts @@ -1,16 +1,5 @@ import {getTestBed, TestBed} from '@angular/core/testing'; -import { - COMPLETED_WITH_ERRORS, - INPROGRESS, - InstantiationStatusComponentService, - PAUSE, - PENDING, - ServiceStatus, - STOPPED, - SUCCESS_CIRCLE, - UNKNOWN, - X_O -} from './instantiationStatus.component.service'; +import {COMPLETED_WITH_ERRORS, INPROGRESS, InstantiationStatusComponentService, PAUSE, PENDING, ServiceStatus, STOPPED, SUCCESS_CIRCLE, UNKNOWN, X_O} from './instantiationStatus.component.service'; import {ServiceInfoModel} from '../shared/server/serviceInfo/serviceInfo.model'; import {AaiService} from "../shared/services/aaiService/aai.service"; import {MsoService} from "../shared/services/msoService/mso.service"; @@ -21,6 +10,8 @@ import {DrawingBoardModes} from "../drawingBoard/service-planning/drawing-board. import {RouterTestingModule} from "@angular/router/testing"; import {of} from "rxjs"; import {UrlTree} from "@angular/router"; +import each from "jest-each"; +import {ServiceAction} from "../shared/models/serviceInstanceActions"; class MockAppStore<T> { @@ -101,33 +92,48 @@ describe('Instantiation Status Service', () => { }); }); - test('click on "Open" button should open new view edit' , ()=>{ - const item = { - serviceModelId : 'serviceModelId', - serviceInstanceId : 'serviceInstanceId', - serviceType : 'serviceType', - subscriberId : 'subscriberId' - }; - let params:UrlTree = service.getNewViewEditUrlTree(<any>item, DrawingBoardModes.VIEW); - expect(params.toString().startsWith('/servicePlanning/VIEW')).toBeTruthy(); - expect(params.queryParams).toEqual( - { - serviceModelId: item.serviceModelId, - serviceInstanceId: item.serviceInstanceId, - serviceType : item.serviceType, - subscriberId : item.subscriberId - }); - }); + describe('navigations tests:', () => { - test('build the View Edit url' , ()=>{ const item = { - serviceModelId : '28aeb8f6-5620-4148-8bfb-a5fb406f0309', + serviceModelId: '28aeb8f6-5620-4148-8bfb-a5fb406f0309', + serviceInstanceId: 'myInstanceId', + serviceType: 'myService', + subscriberId: 'mySubscriber', + jobId: 'aJobId' }; - let serviceModelUrl: string = '/servicePlanning/EDIT?serviceModelId=28aeb8f6-5620-4148-8bfb-a5fb406f0309'; - let suffix:string = '../../serviceModels.htm#'; - let tree:UrlTree = service.getNewViewEditUrlTree(<any>item, DrawingBoardModes.EDIT); - let result = service.getViewEditUrl(tree); - expect (suffix + serviceModelUrl).toEqual(result); + + test('click on "Open" button should open new view edit', () => { + let params: UrlTree = service.getNewViewEditUrlTree(<any>item, DrawingBoardModes.VIEW); + expect(params.toString().startsWith('/servicePlanning/VIEW')).toBeTruthy(); + expect(params.queryParams).toEqual( + { + serviceModelId: item.serviceModelId, + serviceInstanceId: item.serviceInstanceId, + serviceType: item.serviceType, + subscriberId: item.subscriberId, + jobId: item.jobId + }); + }); + + test('build the View Edit url', () => { + + let serviceModelUrl: string = '/servicePlanning/EDIT?serviceModelId=28aeb8f6-5620-4148-8bfb-a5fb406f0309' + + '&serviceInstanceId=myInstanceId&serviceType=myService&subscriberId=mySubscriber&jobId=aJobId'; + let prefix: string = '../../serviceModels.htm#'; + let tree: UrlTree = service.getNewViewEditUrlTree(<any>item, DrawingBoardModes.EDIT); + let result = service.getViewEditUrl(tree); + expect(result).toEqual(prefix + serviceModelUrl); + }); + + test('recreate url shall contains mode RECREATE and only jobId and serviceModelId', () =>{ + let params: UrlTree = service.getNewViewEditUrlTree(<any>item, DrawingBoardModes.RECREATE); + expect(params.toString().startsWith('/servicePlanning/RECREATE')).toBeTruthy(); + expect(params.queryParams).toEqual( + { + serviceModelId: item.serviceModelId, + jobId: item.jobId + }); + }); }); for (let [status, tooltip] of Object.entries({ @@ -154,6 +160,18 @@ describe('Instantiation Status Service', () => { expect(statusResult.iconClassName).toEqual(UNKNOWN); }); + + each([ + [true, ServiceAction.INSTANTIATE], + [false, ServiceAction.UPDATE], + [false, ServiceAction.DELETE], + ]). + test('isRecreateEnabled: should be %s if action is %s', (expected:boolean, action:ServiceAction) => { + let serviceInfoModel = new ServiceInfoModel(); + serviceInfoModel.action = action; + expect(service.isRecreateEnabled(serviceInfoModel)).toBe(expected); + }); + test('getStatusTooltip should return correct icon per job status', () => { let result : ServiceStatus = service.getStatus('pending'); expect(result.iconClassName).toEqual(PENDING); diff --git a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts index ffc2e681a..227fff10d 100644 --- a/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts +++ b/vid-webpack-master/src/app/instantiationStatus/instantiationStatus.component.service.ts @@ -12,6 +12,7 @@ import {updateDrawingBoardStatus} from "../shared/storeUtil/utils/global/global. import {Router, UrlTree} from "@angular/router"; import {of} from "rxjs"; import {MsoService} from "../shared/services/msoService/mso.service"; +import {ServiceAction} from "../shared/models/serviceInstanceActions"; export let PENDING : string = "pending"; export let INPROGRESS : string = "in_progress"; @@ -122,19 +123,31 @@ export class InstantiationStatusComponentService { ['/servicePlanning/' + mode], { queryParams: - { - serviceModelId: item.serviceModelId, - serviceInstanceId: item.serviceInstanceId, - serviceType : item.serviceType, - subscriberId : item.subscriberId, - jobId: item.jobId - } + mode==DrawingBoardModes.RECREATE ? + this.getRecreateQueryParams(item) : + this.getDefaultViewEditQueryParams(item) }); } + private getDefaultViewEditQueryParams(item: ServiceInfoModel) { + return { + serviceModelId: item.serviceModelId, + serviceInstanceId: item.serviceInstanceId, + serviceType: item.serviceType, + subscriberId: item.subscriberId, + jobId: item.jobId + }; + } + + private getRecreateQueryParams(item: ServiceInfoModel) { + return { + serviceModelId: item.serviceModelId, + jobId: item.jobId + }; + } + getViewEditUrl(viewEditUrlTree:UrlTree): string { return '../../serviceModels.htm#' + viewEditUrlTree.toString(); - } getStatus(status : string) : ServiceStatus { @@ -162,6 +175,15 @@ export class InstantiationStatusComponentService { retry(item: ServiceInfoModel): void { this.navigateToNewViewEdit(item, DrawingBoardModes.RETRY_EDIT); } + + recreate(item: ServiceInfoModel): void { + this.navigateToNewViewEdit(item, DrawingBoardModes.RECREATE); + } + + isRecreateEnabled(item: ServiceInfoModel): boolean { + return item.action === ServiceAction.INSTANTIATE; + } + } |