Refactoring based on feedback
Signed-off-by: Andre Wanlin <awanlin@rapidrtc.com>
This commit is contained in:
@@ -29,12 +29,13 @@ export class AzureDevOpsApi {
|
||||
projectName: string,
|
||||
repoName: string,
|
||||
): Promise<GitRepository>;
|
||||
// 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<PullRequest[]>;
|
||||
// (undocumented)
|
||||
getRepoBuilds(
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -43,3 +43,8 @@ export type PullRequest = {
|
||||
isDraft?: boolean;
|
||||
link: string;
|
||||
};
|
||||
|
||||
export type PullRequestOptions = {
|
||||
top: number;
|
||||
status: PullRequestStatus;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user