diff --git a/lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.spec.ts index 0091ec8a86..f16de2ce0f 100644 --- a/lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/process/process-filters/components/process-filters/process-filters-cloud.component.spec.ts @@ -52,7 +52,7 @@ describe('ProcessFiltersCloudComponent', () => { provide: ProcessListCloudService, useValue: { getProcessCounter: () => of(10), - getProcessListCounter: () => of(10) + getProcessListCount: () => of(10) } }, { provide: ProcessFilterCloudService, useValue: ProcessFilterCloudServiceMock }, diff --git a/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.spec.ts index f91999fd0d..dc25d52f15 100644 --- a/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.spec.ts +++ b/lib/process-services-cloud/src/lib/process/process-list/services/process-list-cloud.service.spec.ts @@ -267,4 +267,40 @@ describe('ProcessListCloudService', () => { expect(requestBodyParams.variableKeys[1]).toBe('test-two'); }); }); + + describe('getProcessListCount', () => { + it('should concat the app name to the request url', async () => { + const taskRequest = { + appName: 'fakeName' + } as ProcessListRequestModel; + requestSpy.and.callFake(returnCallUrl); + + const res = await firstValueFrom(service.getProcessListCount(taskRequest)); + + expect(res).toBeDefined(); + expect(res).not.toBeNull(); + expect(res).toContain('fakeName/query/v1/process-instances/count'); + }); + + it('should return 0 if response is falsy for getProcessListCount', async () => { + const taskRequest = { + appName: 'fakeName', + pagination: { skipCount: 0, maxItems: 20 } + } as ProcessListRequestModel; + requestSpy.and.callFake(() => Promise.resolve(null)); + + const res = await firstValueFrom(service.getProcessListCount(taskRequest)); + + expect(res).toBe(0); + }); + + it('should throw error if appName is not configured in getProcessListCount', async () => { + const taskRequest = { appName: null } as ProcessListRequestModel; + requestSpy.and.callFake(returnCallUrl); + + const res = await firstValueFrom(service.getProcessListCount(taskRequest).pipe(catchError((error) => of(error.message)))); + + expect(res).toBe('Appname not configured'); + }); + }); }); diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.spec.ts index 206d0deb90..c944b43fb2 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.spec.ts @@ -42,7 +42,7 @@ describe('TaskFiltersCloudComponent', () => { let fixture: ComponentFixture; let getTaskFilterCounterSpy: jasmine.Spy; let getTaskListFiltersSpy: jasmine.Spy; - let getTaskListCounterSpy: jasmine.Spy; + let getTaskListCountSpy: jasmine.Spy; const configureTestingModule = (searchApiMethod: 'GET' | 'POST') => { TestBed.configureTestingModule({ @@ -52,7 +52,7 @@ describe('TaskFiltersCloudComponent', () => { taskFilterService = TestBed.inject(TaskFilterCloudService); taskListService = TestBed.inject(TaskListCloudService); getTaskFilterCounterSpy = spyOn(taskFilterService, 'getTaskFilterCounter').and.returnValue(of(11)); - getTaskListCounterSpy = spyOn(taskListService, 'getTaskListCounter').and.returnValue(of(11)); + getTaskListCountSpy = spyOn(taskListService, 'getTaskListCount').and.returnValue(of(11)); spyOn(taskFilterService, 'getTaskNotificationSubscription').and.returnValue(of(taskNotifications)); getTaskListFiltersSpy = spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(of(fakeGlobalFilter)); @@ -355,7 +355,7 @@ describe('TaskFiltersCloudComponent', () => { ); await filterButton.click(); - expect(getTaskListCounterSpy).toHaveBeenCalledWith(new TaskFilterCloudAdapter(fakeGlobalFilter[0])); + expect(getTaskListCountSpy).toHaveBeenCalledWith(new TaskFilterCloudAdapter(fakeGlobalFilter[0])); }); }); diff --git a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.ts b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.ts index 2994d3a4e2..68c7a5608f 100644 --- a/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.ts +++ b/lib/process-services-cloud/src/lib/task/task-filters/components/task-filters/task-filters-cloud.component.ts @@ -151,7 +151,7 @@ export class TaskFiltersCloudComponent extends BaseTaskFiltersCloudComponent imp private fetchTaskFilterCounter(filter: TaskFilterCloudModel): Observable { return this.searchApiMethod === 'POST' - ? this.taskListCloudService.getTaskListCounter(new TaskFilterCloudAdapter(filter)) + ? this.taskListCloudService.getTaskListCount(new TaskFilterCloudAdapter(filter)) : this.taskFilterCloudService.getTaskFilterCounter(filter); } diff --git a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.spec.ts b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.spec.ts index 03b43e7790..a00b4b7ca8 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.spec.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.spec.ts @@ -155,6 +155,41 @@ describe('TaskListCloudService', () => { const res = await firstValueFrom(service.fetchTaskList(taskRequest).pipe(catchError((error) => of(error.message)))); + expect(res).toBe('Appname not configured'); + }); + }); + describe('getTaskListCount', () => { + it('should concat the app name to the request url', async () => { + const taskRequest = { + appName: 'fakeName' + } as TaskListRequestModel; + requestSpy.and.callFake(returnCallUrl); + + const res = await firstValueFrom(service.getTaskListCount(taskRequest)); + + expect(res).toBeDefined(); + expect(res).not.toBeNull(); + expect(res).toContain('fakeName/query/v1/tasks/count'); + }); + + it('should return 0 if response is falsy for getTaskListCount', async () => { + const taskRequest = { + appName: 'fakeName', + pagination: { skipCount: 0, maxItems: 20 } + } as TaskListRequestModel; + requestSpy.and.callFake(() => Promise.resolve(null)); + + const res = await firstValueFrom(service.getTaskListCount(taskRequest)); + + expect(res).toBe(0); + }); + + it('should throw error if appName is not configured in getTaskListCount', async () => { + const taskRequest = { appName: null } as TaskListRequestModel; + requestSpy.and.callFake(returnCallUrl); + + const res = await firstValueFrom(service.getTaskListCount(taskRequest).pipe(catchError((error) => of(error.message)))); + expect(res).toBe('Appname not configured'); }); }); diff --git a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts index 12f74e8547..2c8983fc41 100644 --- a/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts +++ b/lib/process-services-cloud/src/lib/task/task-list/services/task-list-cloud.service.ts @@ -97,6 +97,17 @@ export class TaskListCloudService extends BaseCloudService implements TaskListCl return this.fetchTaskList(requestNode).pipe(map((tasks) => tasks.list.pagination.totalItems)); } + getTaskListCount(requestNode: TaskListRequestModel): Observable { + if (!requestNode?.appName) { + return throwError(() => new Error('Appname not configured')); + } + + const queryUrl = `${this.getBasePath(requestNode.appName)}/query/v1/tasks/count`; + const queryData = this.buildQueryData(requestNode); + + return this.post(queryUrl, queryData).pipe(map((response) => response || 0)); + } + protected buildQueryData(requestNode: TaskListRequestModel) { const queryData: any = { id: requestNode.id,