From a4e54d3d89228c05ae0cd652466cc439c2916da7 Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Mon, 12 Dec 2016 10:18:23 +0000 Subject: [PATCH 1/3] #992 Use the js API and fix unit test --- .../analytics-report-list.component.spec.ts | 35 +++--- ...lytics-report-parameters.component.spec.ts | 42 ++++--- .../components/analytics.component.spec.ts | 2 + .../src/services/analytics.service.ts | 112 +++++------------- 4 files changed, 72 insertions(+), 119 deletions(-) diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.spec.ts index 8709b8157c..ce2cf64a8f 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-list.component.spec.ts @@ -82,8 +82,26 @@ describe('Test ng2-activiti-analytics Report list', () => { }); it('should return the default reports when the report list is empty', (done) => { + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/reports').andReturn({ + status: 200, + contentType: 'json', + responseText: [] + }); + fixture.detectChanges(); + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/default-reports').andReturn({ + status: 200, + contentType: 'json', + responseText: [] + }); + + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/reports').andReturn({ + status: 200, + contentType: 'json', + responseText: reportList + }); + component.onSuccess.subscribe(() => { fixture.detectChanges(); expect(element.querySelector('#report-list-0 > i').innerHTML).toBe('assignment'); @@ -96,23 +114,6 @@ describe('Test ng2-activiti-analytics Report list', () => { done(); }); - jasmine.Ajax.requests.mostRecent().respondWith({ - status: 200, - contentType: 'json', - responseText: [] - }); - - jasmine.Ajax.requests.mostRecent().respondWith({ - status: 200, - contentType: 'json', - responseText: [] - }); - - jasmine.Ajax.requests.mostRecent().respondWith({ - status: 200, - contentType: 'json', - responseText: reportList - }); }); it('Report render the report list relative to a single app', (done) => { diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts index bb435e61cc..d134654ce0 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts @@ -280,21 +280,22 @@ describe('Test ng2-analytics-report-parameters Report Parameters ', () => { done(); }); - let reportId = 1; - let change = new SimpleChange(null, reportId); - component.ngOnChanges({ 'reportId': change }); - - jasmine.Ajax.requests.first().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/report-params/1').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDef }); - jasmine.Ajax.requests.mostRecent().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/process-definitions').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDefOptionsNoApp }); + + let reportId = 1; + let change = new SimpleChange(null, reportId); + component.ngOnChanges({ 'reportId': change }); + }); it('Should render a dropdown with all the process definition when the definition parameter type is \'processDefinition\' and the' + @@ -310,22 +311,24 @@ describe('Test ng2-analytics-report-parameters Report Parameters ', () => { done(); }); - let appId = 1; - component.appId = appId; - let change = new SimpleChange(null, appId); - component.ngOnChanges({ 'appId': change }); - - jasmine.Ajax.requests.first().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/report-params/1').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDef }); - jasmine.Ajax.requests.mostRecent().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/process-definitions?appId=1').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDefOptionsApp }); + + let appId = 1; + component.appId = appId; + component.reportId = 1; + let change = new SimpleChange(null, appId); + component.ngOnChanges({ 'appId': change }); + }); it('Should load the task list when a process definition is selected', () => { @@ -355,21 +358,22 @@ describe('Test ng2-analytics-report-parameters Report Parameters ', () => { done(); }); - let reportId = 1; - let change = new SimpleChange(null, reportId); - component.ngOnChanges({ 'reportId': change }); - - jasmine.Ajax.requests.first().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/report-params/1').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDef }); - jasmine.Ajax.requests.mostRecent().respondWith({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/reporting/process-definitions').andReturn({ status: 404, contentType: 'json', responseText: [] }); + + let reportId = 1; + let change = new SimpleChange(null, reportId); + component.ngOnChanges({ 'reportId': change }); + }); it('Should emit an error with a 404 response when the report parameters response is not found', (done) => { diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics.component.spec.ts index ea77c223f8..4adbcbbed8 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics.component.spec.ts @@ -190,6 +190,7 @@ describe('Test ng2-activiti-analytics Report ', () => { }); let reportParamQuery = new ReportQuery({status: 'All'}); + component.reportId = 1; component.showReport(reportParamQuery); jasmine.Ajax.requests.mostRecent().respondWith({ @@ -214,6 +215,7 @@ describe('Test ng2-activiti-analytics Report ', () => { }); let reportParamQuery = new ReportQuery({status: 'All'}); + component.reportId = 1; component.showReport(reportParamQuery); jasmine.Ajax.requests.mostRecent().respondWith({ diff --git a/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts b/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts index 4e3f81dc55..1619244819 100644 --- a/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts +++ b/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts @@ -16,9 +16,9 @@ */ import { Injectable } from '@angular/core'; -import { AlfrescoAuthenticationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; +import { AlfrescoAuthenticationService, AlfrescoSettingsService, AlfrescoApiService } from 'ng2-alfresco-core'; import { Observable } from 'rxjs/Rx'; -import { Response, Http, Headers, RequestOptions, URLSearchParams } from '@angular/http'; +import { Response } from '@angular/http'; import { ReportParametersModel, ParameterValueModel } from '../models/report.model'; import { Chart, PieChart, TableChart, BarChart, HeatMapChart, MultiBarChart } from '../models/chart.model'; @@ -26,7 +26,7 @@ import { Chart, PieChart, TableChart, BarChart, HeatMapChart, MultiBarChart } fr export class AnalyticsService { constructor(private authService: AlfrescoAuthenticationService, - private http: Http, + public apiService: AlfrescoApiService, private alfrescoSettingsService: AlfrescoSettingsService) { } @@ -35,14 +35,10 @@ export class AnalyticsService { * @returns {Observable} */ getReportList(): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/reports`; - let options = this.getRequestOptions(); - return this.http - .get(url, options) + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getReportList()) .map((res: any) => { let reports: ReportParametersModel[] = []; - let body = res.json(); - body.forEach((report: ReportParametersModel) => { + res.forEach((report: ReportParametersModel) => { let reportModel = new ReportParametersModel(report); reports.push(reportModel); }); @@ -51,13 +47,9 @@ export class AnalyticsService { } getReportParams(reportId: string): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/report-params/${reportId}`; - let options = this.getRequestOptions(); - return this.http - .get(url, options) + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getReportParams(reportId)) .map((res: any) => { - let body = res.json(); - return new ReportParametersModel(body); + return new ReportParametersModel(res); }).catch(this.handleError); } @@ -72,7 +64,7 @@ export class AnalyticsService { } } else if (type === 'dateInterval') { return this.getDateIntervalValues(); - } else if (type === 'task') { + } else if (type === 'task' && reportId && processDefinitionId) { return this.getTasksByProcessDefinitionId(reportId, processDefinitionId); } else { return Observable.create(observer => { @@ -124,14 +116,10 @@ export class AnalyticsService { } getProcessDefinitionsValuesNoApp(): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/process-definitions`; - let options = this.getRequestOptions(); - return this.http - .get(url, options) + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getProcessDefinitionsValuesNoApp()) .map((res: any) => { let paramOptions: ParameterValueModel[] = []; - let body = res.json(); - body.forEach((opt) => { + res.forEach((opt) => { paramOptions.push(new ParameterValueModel(opt)); }); return paramOptions; @@ -139,17 +127,10 @@ export class AnalyticsService { } getProcessDefinitionsValues(appId: string): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/process-definitions`; - let params: URLSearchParams; - params = new URLSearchParams(); - params.set('appDefinitionId', appId); - let options = this.getRequestOptions(params); - return this.http - .get(url, options) + return Observable.fromPromise(this.apiService.getInstance().activiti.processDefinitionsApi.getProcessDefinitions(appId)) .map((res: any) => { let paramOptions: ParameterValueModel[] = []; - let body = res.json(); - body.data.forEach((opt) => { + res.data.forEach((opt) => { paramOptions.push(new ParameterValueModel(opt)); }); return paramOptions; @@ -157,42 +138,21 @@ export class AnalyticsService { } getTasksByProcessDefinitionId(reportId: string, processDefinitionId: string): Observable { - if (reportId && processDefinitionId) { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/report-params/${reportId}/tasks`; - let params: URLSearchParams; - if (processDefinitionId) { - params = new URLSearchParams(); - params.set('processDefinitionId', processDefinitionId); - } - let options = this.getRequestOptions(params); - return this.http - .get(url, options) - .map((res: any) => { - let paramOptions: ParameterValueModel[] = []; - let body = res.json(); - body.forEach((opt) => { - paramOptions.push(new ParameterValueModel({ id: opt, name: opt })); - }); - return paramOptions; - }).catch(this.handleError); - } else { - return Observable.create(observer => { - observer.next(null); - observer.complete(); - }); - } + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getTasksByProcessDefinitionId(reportId, processDefinitionId)) + .map((res: any) => { + let paramOptions: ParameterValueModel[] = []; + res.forEach((opt) => { + paramOptions.push(new ParameterValueModel({ id: opt, name: opt })); + }); + return paramOptions; + }).catch(this.handleError); } getReportsByParams(reportId: number, paramsQuery: any): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/report-params/${reportId}`; - let body = paramsQuery ? JSON.stringify(paramsQuery) : {}; - let options = this.getRequestOptions(); - return this.http - .post(url, body, options) + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getReportsByParams(reportId, paramsQuery)) .map((res: any) => { let elements: Chart[] = []; - let bodyRes = res.json(); - bodyRes.elements.forEach((chartData) => { + res.elements.forEach((chartData) => { if (chartData.type === 'pieChart') { elements.push(new PieChart(chartData)); } else if (chartData.type === 'table') { @@ -213,31 +173,17 @@ export class AnalyticsService { } public createDefaultReports(): Observable { - let url = `${this.alfrescoSettingsService.getBPMApiBaseUrl()}/app/rest/reporting/default-reports`; - let options = this.getRequestOptions(); - let body = {}; - return this.http - .post(url, body, options) - .map((res: any) => { - return res; - }).catch(this.handleError); - } - - public getHeaders(): Headers { - return new Headers({ - 'Accept': 'application/json', - 'Content-Type': 'application/json', - 'Authorization': this.authService.getTicketBpm() - }); - } - - public getRequestOptions(param?: any): RequestOptions { - let headers = this.getHeaders(); - return new RequestOptions({ headers: headers, withCredentials: true, search: param }); + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.createDefaultReports()) + .map(this.toJson) + .catch(this.handleError); } private handleError(error: Response) { console.error(error); return Observable.throw(error.json().error || 'Server error'); } + + toJson(res: any) { + return res || {}; + } } From 3ffc1bfd914b36e66315e4c194cfa914bc6f67aa Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Tue, 13 Dec 2016 16:14:05 +0000 Subject: [PATCH 2/3] #992 fix js api method name --- .../ng2-activiti-analytics/src/services/analytics.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts b/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts index 1619244819..d9fc0b94cd 100644 --- a/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts +++ b/ng2-components/ng2-activiti-analytics/src/services/analytics.service.ts @@ -116,7 +116,7 @@ export class AnalyticsService { } getProcessDefinitionsValuesNoApp(): Observable { - return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getProcessDefinitionsValuesNoApp()) + return Observable.fromPromise(this.apiService.getInstance().activiti.reportApi.getProcessDefinitions()) .map((res: any) => { let paramOptions: ParameterValueModel[] = []; res.forEach((opt) => { From 98bc7b0f52f6c2512ec44f7ec3346d02a13f117b Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Wed, 14 Dec 2016 09:52:52 +0000 Subject: [PATCH 3/3] #992 Fix unit test --- .../components/analytics-report-parameters.component.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts index d134654ce0..4020993b46 100644 --- a/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts +++ b/ng2-components/ng2-activiti-analytics/src/components/analytics-report-parameters.component.spec.ts @@ -317,7 +317,7 @@ describe('Test ng2-analytics-report-parameters Report Parameters ', () => { responseText: analyticParamsMock.reportDefParamProcessDef }); - jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/app/rest/process-definitions?appId=1').andReturn({ + jasmine.Ajax.stubRequest('http://localhost:9999/activiti-app/api/enterprise/process-definitions').andReturn({ status: 200, contentType: 'json', responseText: analyticParamsMock.reportDefParamProcessDefOptionsApp