AAE-46476 Fix sorting functionality of task list retrieval from runtime bundle (#11921)

This commit is contained in:
Fabian Kindgen
2026-05-29 07:20:26 +02:00
committed by GitHub
parent f4882e99be
commit 1314f0751f
3 changed files with 43 additions and 15 deletions
@@ -84,18 +84,6 @@ export class BaseCloudService {
); );
} }
protected getWithBody<T, R>(url: string, data?: T, queryParams?: any): Observable<R> {
return from(
this.callApi<R>(url, {
...this.defaultParams,
path: url,
httpMethod: 'GET',
bodyParam: data,
queryParams
})
);
}
protected callApi<T>(url: string, params: RequestOptions): Promise<T> { protected callApi<T>(url: string, params: RequestOptions): Promise<T> {
return this.adfHttpClient.request(url, params); return this.adfHttpClient.request(url, params);
} }
@@ -189,6 +189,44 @@ describe('TaskListCloudService', () => {
expect(res.maxItems).toBe(25); expect(res.maxItems).toBe(25);
}); });
it('should include sort parameter when sorting.orderBy is set', async () => {
const taskRequest = {
appName: 'fakeName',
pagination: { skipCount: 0, maxItems: 20 },
sorting: { orderBy: 'NAME', direction: 'DESC', isFieldProcessVariable: false }
} as TaskListRequestModel;
requestSpy.and.callFake(returnCallQueryParameters);
const res = await firstValueFrom(service.fetchTaskList_UsingRuntimeBundleService(taskRequest));
expect(res.sort).toBe('NAME,DESC');
});
it('should not include sort parameter when sorting is not set', async () => {
const taskRequest = {
appName: 'fakeName',
pagination: { skipCount: 0, maxItems: 20 }
} as TaskListRequestModel;
requestSpy.and.callFake(returnCallQueryParameters);
const res = await firstValueFrom(service.fetchTaskList_UsingRuntimeBundleService(taskRequest));
expect(res.sort).toBeUndefined();
});
it('should not include sort parameter when sorting.orderBy is empty', async () => {
const taskRequest = {
appName: 'fakeName',
pagination: { skipCount: 0, maxItems: 20 },
sorting: { orderBy: '', direction: 'DESC', isFieldProcessVariable: false }
} as TaskListRequestModel;
requestSpy.and.callFake(returnCallQueryParameters);
const res = await firstValueFrom(service.fetchTaskList_UsingRuntimeBundleService(taskRequest));
expect(res.sort).toBeUndefined();
});
it('should return an error when app name is not specified', async () => { it('should return an error when app name is not specified', async () => {
const taskRequest = { appName: null } as TaskListRequestModel; const taskRequest = { appName: null } as TaskListRequestModel;
requestSpy.and.callFake(returnCallUrl); requestSpy.and.callFake(returnCallUrl);
@@ -97,14 +97,16 @@ export class TaskListCloudService extends BaseCloudService implements TaskListCl
const url = `${this.getBasePath(requestNode.appName)}/rb/v1/tasks`; const url = `${this.getBasePath(requestNode.appName)}/rb/v1/tasks`;
const queryParams = { const queryParams: { maxItems: number; skipCount: number; sort?: string } = {
maxItems: requestNode.pagination?.maxItems || 25, maxItems: requestNode.pagination?.maxItems || 25,
skipCount: requestNode.pagination?.skipCount || 0 skipCount: requestNode.pagination?.skipCount || 0
}; };
const queryData = this.buildQueryData(requestNode); if (requestNode.sorting?.orderBy) {
queryParams.sort = `${requestNode.sorting.orderBy},${requestNode.sorting.direction}`;
}
return this.getWithBody<any, TaskCloudNodePaging>(url, queryData, queryParams).pipe( return this.get<TaskCloudNodePaging>(url, queryParams).pipe(
map((response) => { map((response) => {
const entries = response.list?.entries; const entries = response.list?.entries;
if (entries) { if (entries) {