From ff76b5ed0aa91d5fdf9dc4f95e8b20f91ed9d072 Mon Sep 17 00:00:00 2001 From: "Sonsino, Ofir (os0695)" Date: Tue, 10 Jul 2018 15:57:37 +0300 Subject: New Angular UI from 1806 Change-Id: I39c160db0e0a6ec2e587ccf007ee1b23c6a08666 Issue-ID: VID-208 Signed-off-by: Sonsino, Ofir (os0695) --- .../health-status.service.spec.ts | 60 ++++++ .../healthStatusService/health-status.service.ts | 17 ++ .../shared/server/serviceInfo/AuditStatus.model.ts | 10 + .../shared/server/serviceInfo/serviceInfo.model.ts | 38 ++++ .../server/serviceInfo/serviceInfo.service.spec.ts | 235 +++++++++++++++++++++ .../server/serviceInfo/serviceInfo.service.ts | 38 ++++ 6 files changed, 398 insertions(+) create mode 100644 vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.spec.ts create mode 100644 vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.ts create mode 100644 vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts create mode 100644 vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.model.ts create mode 100644 vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.spec.ts create mode 100644 vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.ts (limited to 'vid-webpack-master/src/app/shared/server') diff --git a/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.spec.ts b/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.spec.ts new file mode 100644 index 000000000..36f6349e2 --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.spec.ts @@ -0,0 +1,60 @@ +import {TestBed, inject, getTestBed} from '@angular/core/testing'; + +import { HealthStatusService } from './health-status.service'; +import {Constants} from "../../utils/constants"; +import {HttpClientTestingModule, HttpTestingController} from "@angular/common/http/testing"; +import {ExternalComponentStatus} from "../../models/externalComponentStatus"; + +describe('HealthStatusService', () => { + + let injector; + let service: HealthStatusService; + let httpMock: HttpTestingController; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [HealthStatusService] + }); + + injector = getTestBed(); + service = injector.get(HealthStatusService); + httpMock = injector.get(HttpTestingController); + }); + + describe('#getProbe', () =>{ + it('when call probe, there is http GET with right url', () => { + + service.getProbe().subscribe((result: Array)=>{ + expect(result[0].component).toEqual("AAI"); + expect(result[0].available).toBeTruthy(); + expect(result[0].metadata).toEqual({ myKey: 'myValue' }); + + expect(result[1].component).toEqual("MSO"); + expect(result[1].available).toBeFalsy(); + expect(result[1].metadata).toEqual({otherKey: 123}); + }); + + const req = httpMock.expectOne(Constants.Path.SERVICES_PROBE_PATH); + expect(req.request.method).toEqual('GET'); + req.flush([ + { + "component": "AAI", + "available": true, + "metadata": { + "myKey": "myValue" + } + }, + { + "component": "MSO", + "available": false, + "metadata": { + "otherKey": 123 + } + }, + ]); + }); + + }); + +}); diff --git a/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.ts b/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.ts new file mode 100644 index 000000000..4305ab97e --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/healthStatusService/health-status.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {Observable} from "rxjs/Observable"; +import {Constants} from "../../utils/constants"; +import {ExternalComponentStatus} from "../../models/externalComponentStatus"; + +@Injectable() +export class HealthStatusService { + + constructor(private _http: HttpClient) { + } + + getProbe(): Observable> { + let pathQuery = Constants.Path.SERVICES_PROBE_PATH; + return this._http.get>(pathQuery).map(res => res); + } +} diff --git a/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts b/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts new file mode 100644 index 000000000..0b4c70f9d --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/serviceInfo/AuditStatus.model.ts @@ -0,0 +1,10 @@ +export class AuditStatus{ + id: number; + createdDate: number; + final: boolean; + jobId :string; + jobStatus :string; + source: string; + requestId: string; + additionalInfo :any +} diff --git a/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.model.ts b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.model.ts new file mode 100644 index 000000000..0b4695930 --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.model.ts @@ -0,0 +1,38 @@ +import {ServiceStatus} from '../../../instantiationStatus/instantiationStatus.component.service'; + +export class ServiceInfoModel { + id: number; + created: Date; + modified: Date; + createdId: number; + modifiedId: number; + numRow: number; + uuid: string; + userId: string; + jobStatus: string; + pause: boolean; + owningEntityId: string; + owningEntityName: string; + project: string; + aicZoneId: string; + aicZoneName: string; + tenantId: string; + tenantName: string; + regionId: string; + regionName: string; + serviceType: string; + subscriberName: string; + serviceInstanceId: string; + serviceInstanceName: string; + serviceModelId: string; + serviceModelName: string; + serviceModelVersion: string; + templateId: string; + auditUserId: string; + jobId: string; +} + +export class ServiceInfoUiModel extends ServiceInfoModel{ + serviceStatus : ServiceStatus; + serviceIndex : number; +} diff --git a/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.spec.ts b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.spec.ts new file mode 100644 index 000000000..78c1b5ab9 --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.spec.ts @@ -0,0 +1,235 @@ +import {getTestBed, TestBed} from '@angular/core/testing'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {ServiceInfoService} from './serviceInfo.service'; +import {ServiceInfoModel} from './serviceInfo.model'; +import {Constants} from "../../utils/constants"; + +describe('Service Info Service', () => { + let injector; + let service: ServiceInfoService; + let httpMock: HttpTestingController; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ServiceInfoService] + }); + + injector = getTestBed(); + service = injector.get(ServiceInfoService); + httpMock = injector.get(HttpTestingController); + }); + + describe('#getServicesJobInfo', () => { + it('should return an Observable', () => { + const dummyServiceInfo: ServiceInfoModel[] = generateServiceInfoData(); + + service.getServicesJobInfo(true).subscribe((serviceInfo:Array) => { + expect(serviceInfo).toEqual(dummyServiceInfo); + }); + }); + + + }); + + describe('#deleteJob', () =>{ + it('delete job', () => { + const jobId : string = "1111"; + + service.deleteJob(jobId).subscribe(); + + const req = httpMock.expectOne(Constants.Path.SERVICES_JOB_INFO_PATH + '/job/' + jobId); + expect(req.request.method).toEqual('DELETE'); + + }); + }); + + describe('#hideJob', () =>{ + it('when call hide job, there is http POST with right url', () => { + const jobId : string = "3"; + + service.hideJob(jobId).subscribe(); + + const req = httpMock.expectOne(Constants.Path.SERVICES_JOB_INFO_PATH + '/hide/' + jobId); + expect(req.request.method).toEqual('POST'); + }); + }); + + describe('#getJobAuditStatus', ()=> { + it('should return Observable', ()=>{ + const jobId : string = '111'; + + service.getJobAuditStatus(jobId).subscribe(); + const req = httpMock.expectOne(Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobId + '?source=VID'); + const req2 = httpMock.expectOne(Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobId + '?source=MSO'); + + expect(req.request.method).toEqual('GET'); + expect(req2.request.method).toEqual('GET'); + }); + }); + + function generateServiceInfoData(){ + return JSON.parse(JSON.stringify( + [{ + "created": 1519956533000, + "modified": 1521727738000, + "createdId": null, + "modifiedId": null, + "rowNum": null, + "auditUserId": null, + "auditTrail": null, + "jobId": "6748648484", + "userId": "2222", + "jobStatus": "FAILED", + "pause": false, + "owningEntityId": "1234", + "owningEntityName": null, + "project": null, + "aicZoneId": null, + "aicZoneName": null, + "tenantId": null, + "tenantName": null, + "regionId": null, + "regionName": null, + "serviceType": null, + "subscriberName": null, + "serviceInstanceId": "1", + "serviceInstanceName": null, + "serviceModelId": null, + "serviceModelName": null, + "serviceModelVersion": null, + "createdBulkDate": 1519956533000, + "statusModifiedDate": 1520042933000, + "hidden": false + }, + { + "created": 1519956533000, + "modified": 1521727738000, + "createdId": null, + "modifiedId": null, + "rowNum": null, + "auditUserId": null, + "auditTrail": null, + "jobId": "6748648484", + "userId": "2222", + "jobStatus": "FAILED", + "pause": false, + "owningEntityId": "1234", + "owningEntityName": null, + "project": null, + "aicZoneId": null, + "aicZoneName": null, + "tenantId": null, + "tenantName": null, + "regionId": null, + "regionName": null, + "serviceType": null, + "subscriberName": null, + "serviceInstanceId": "1", + "serviceInstanceName": null, + "serviceModelId": null, + "serviceModelName": null, + "serviceModelVersion": null, + "createdBulkDate": 1519956533000, + "statusModifiedDate": 1520042933000, + "hidden": false + }, + { + "created": 1519956533000, + "modified": 1521727738000, + "createdId": null, + "modifiedId": null, + "rowNum": null, + "auditUserId": null, + "auditTrail": null, + "jobId": "6748648484", + "userId": "2222", + "jobStatus": "FAILED", + "pause": false, + "owningEntityId": "1234", + "owningEntityName": null, + "project": null, + "aicZoneId": null, + "aicZoneName": null, + "tenantId": null, + "tenantName": null, + "regionId": null, + "regionName": null, + "serviceType": null, + "subscriberName": null, + "serviceInstanceId": "2", + "serviceInstanceName": null, + "serviceModelId": null, + "serviceModelName": null, + "serviceModelVersion": null, + "createdBulkDate": 1519956533000, + "statusModifiedDate": 1520042933000, + "hidden": false + }, + { + "created": 1519956533000, + "modified": 1521727738000, + "createdId": null, + "modifiedId": null, + "rowNum": null, + "auditUserId": null, + "auditTrail": null, + "jobId": "6748648484", + "userId": "2222", + "jobStatus": "FAILED", + "pause": false, + "owningEntityId": "1234", + "owningEntityName": null, + "project": null, + "aicZoneId": null, + "aicZoneName": null, + "tenantId": null, + "tenantName": null, + "regionId": null, + "regionName": null, + "serviceType": null, + "subscriberName": null, + "serviceInstanceId": "2", + "serviceInstanceName": null, + "serviceModelId": null, + "serviceModelName": null, + "serviceModelVersion": null, + "createdBulkDate": 1519956533000, + "statusModifiedDate": 1520042933000, + "hidden": false + }, + { + "created": 1519956533000, + "modified": 1521727738000, + "createdId": null, + "modifiedId": null, + "rowNum": null, + "auditUserId": null, + "auditTrail": null, + "jobId": "6748648484", + "userId": "2222", + "jobStatus": "FAILED", + "pause": false, + "owningEntityId": "1234", + "owningEntityName": null, + "project": null, + "aicZoneId": null, + "aicZoneName": null, + "tenantId": null, + "tenantName": null, + "regionId": null, + "regionName": null, + "serviceType": null, + "subscriberName": null, + "serviceInstanceId": "3", + "serviceInstanceName": null, + "serviceModelId": null, + "serviceModelName": null, + "serviceModelVersion": null, + "createdBulkDate": 1519956533000, + "statusModifiedDate": 1520042933000, + "hidden": false + }] + )); + } +}); diff --git a/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.ts b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.ts new file mode 100644 index 000000000..e0057bb4d --- /dev/null +++ b/vid-webpack-master/src/app/shared/server/serviceInfo/serviceInfo.service.ts @@ -0,0 +1,38 @@ +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs/Observable'; +import {ServiceInfoModel} from './serviceInfo.model'; +import {HttpClient} from '@angular/common/http'; +import 'rxjs/add/operator/map' +import {Constants} from '../../utils/constants'; +import {forkJoin} from "rxjs/observable/forkJoin"; + +@Injectable() +export class ServiceInfoService { + constructor(private _http: HttpClient) { + } + + getServicesJobInfo(filterByUser : boolean): Observable { + let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH; + return this._http.get(pathQuery).map(res => res ); + } + + deleteJob(jobId: string): Observable { + let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/job/' + jobId; + return this._http.delete(pathQuery).map(res => res); + } + + hideJob(jobId: string): Observable { + let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/hide/' + jobId; + return this._http.post(pathQuery, null).map(res => res); + } + + getJobAuditStatus(jobId : string) : Observable{ + let pathQueryVID = Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobId + '?source=VID'; + let pathQueryMSO = Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobId + '?source=MSO'; + + let vidObs = this._http.get(pathQueryVID); + let msoObs = this._http.get(pathQueryMSO); + return forkJoin([vidObs, msoObs]); + } + +} -- cgit 1.2.3-korg