From ac7edbb437ad3af875a843a15360b4a6cadea54f Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Mon, 11 Oct 2021 15:08:53 -0500 Subject: [PATCH] Refactoring based on feedback Signed-off-by: Andre Wanlin --- plugins/azure-devops-backend/api-report.md | 5 +++-- .../azure-devops-backend/src/api/AzureDevOpsApi.ts | 14 +++++++------- plugins/azure-devops-backend/src/api/types.ts | 5 +++++ .../src/service/router.test.ts | 3 +-- plugins/azure-devops-backend/src/service/router.ts | 8 ++++++-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index 34477a71ca..74b4ac5b23 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -29,12 +29,13 @@ export class AzureDevOpsApi { projectName: string, repoName: string, ): Promise; + // Warning: (ae-forgotten-export) The symbol "PullRequestOptions" needs to be exported by the entry point index.d.ts + // // (undocumented) getPullRequests( projectName: string, repoName: string, - top: number, - status: PullRequestStatus, + options: PullRequestOptions, ): Promise; // (undocumented) getRepoBuilds( diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index 991a68fcee..89e32aa2f3 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -24,9 +24,8 @@ import { import { GitPullRequest, GitPullRequestSearchCriteria, - PullRequestStatus, } from 'azure-devops-node-api/interfaces/GitInterfaces'; -import { PullRequest, RepoBuild } from './types'; +import { PullRequest, PullRequestOptions, RepoBuild } from './types'; export class AzureDevOpsApi { constructor( @@ -102,8 +101,7 @@ export class AzureDevOpsApi { async getPullRequests( projectName: string, repoName: string, - top: number, - status: PullRequestStatus, + options: PullRequestOptions, ) { if (this.logger) { this.logger.debug( @@ -114,7 +112,7 @@ export class AzureDevOpsApi { const gitRepository = await this.getGitRepository(projectName, repoName); const client = await this.webApi.getGitApi(); const searchCriteria: GitPullRequestSearchCriteria = { - status: status, + status: options.status, }; const gitPullRequests = await client.getPullRequests( gitRepository.id as string, @@ -122,9 +120,11 @@ export class AzureDevOpsApi { projectName, undefined, undefined, - top, + options.top, ); - const linkBaseUrl = `${this.webApi.serverUrl}/${projectName}/_git/${repoName}/pullrequest`; + const linkBaseUrl = `${this.webApi.serverUrl}/${encodeURIComponent( + projectName, + )}/_git/${encodeURIComponent(repoName)}/pullrequest`; const pullRequests: PullRequest[] = gitPullRequests.map(gitPullRequest => { return mappedPullRequest(gitPullRequest, linkBaseUrl); }); diff --git a/plugins/azure-devops-backend/src/api/types.ts b/plugins/azure-devops-backend/src/api/types.ts index 4b2a0f7988..a53f501f26 100644 --- a/plugins/azure-devops-backend/src/api/types.ts +++ b/plugins/azure-devops-backend/src/api/types.ts @@ -43,3 +43,8 @@ export type PullRequest = { isDraft?: boolean; link: string; }; + +export type PullRequestOptions = { + top: number; + status: PullRequestStatus; +}; diff --git a/plugins/azure-devops-backend/src/service/router.test.ts b/plugins/azure-devops-backend/src/service/router.test.ts index e6444bb9d3..4143291409 100644 --- a/plugins/azure-devops-backend/src/service/router.test.ts +++ b/plugins/azure-devops-backend/src/service/router.test.ts @@ -254,8 +254,7 @@ describe('createRouter', () => { expect(azureDevOpsApi.getPullRequests).toHaveBeenCalledWith( 'myProject', 'myRepo', - 50, - 1, + { status: 1, top: 50 }, ); expect(response.status).toEqual(200); expect(response.body).toEqual(pullRequests); diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index 62ac06afe4..0929d5cde9 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -22,6 +22,7 @@ import { Config } from '@backstage/config'; import { getPersonalAccessTokenHandler, WebApi } from 'azure-devops-node-api'; import { AzureDevOpsApi } from '../api'; import { PullRequestStatus } from 'azure-devops-node-api/interfaces/GitInterfaces'; +import { PullRequestOptions } from '../api/types'; const DEFAULT_TOP: number = 10; @@ -91,11 +92,14 @@ export async function createRouter( const status = req.query.status ? Number(req.query.status) : PullRequestStatus.Active; + const pullRequestOptions: PullRequestOptions = { + top: top, + status: status, + }; const gitPullRequest = await azureDevOpsApi.getPullRequests( projectName, repoName, - top, - status, + pullRequestOptions, ); res.status(200).json(gitPullRequest); });