feat: Created new getPullRequestGroupConfigs function.

Signed-off-by: Marley Powell <Marley.Powell@exclaimer.com>
This commit is contained in:
Marley Powell
2021-12-06 14:56:37 +00:00
parent ed133e68cb
commit 949e73e125
2 changed files with 23 additions and 17 deletions
@@ -132,7 +132,7 @@ describe('getPullRequestGroups', () => {
{ title: 'Other PRs', filter: (_: unknown) => true, simplified: true },
];
const result = getPullRequestGroups(pullRequests, configs);
const result = getPullRequestGroups(pullRequests, configs) ?? [];
expect(result.length).toBe(2);
@@ -19,25 +19,13 @@ import {
PullRequestVoteStatus,
Reviewer,
} from '@backstage/plugin-azure-devops-common';
import { Filter, createFilter } from './filters';
import {
PullRequestFilter,
PullRequestColumnConfig,
PullRequestGroup,
PullRequestGroupConfig,
} from './types';
/**
* Creates a filter that matches pull requests created by `userEmail`.
* @param userEmail an email to filter by.
* @returns a filter for pull requests created by `userEmail`.
*/
export function getCreatedByUserFilter(
userEmail: string | undefined,
): PullRequestFilter {
return (pullRequest: DashboardPullRequest): boolean =>
pullRequest.createdBy?.uniqueName?.toLocaleLowerCase() ===
userEmail?.toLocaleLowerCase();
}
/**
* Filters a reviewer based on vote status and if the reviewer is required.
* @param reviewer a reviewer to filter.
@@ -97,9 +85,13 @@ export function arrayExtract<T>(arr: T[], filter: (value: T) => unknown): T[] {
* @returns a list of pull request groups.
*/
export function getPullRequestGroups(
pullRequests: DashboardPullRequest[],
pullRequests: DashboardPullRequest[] | undefined,
configs: PullRequestGroupConfig[],
): PullRequestGroup[] {
): PullRequestGroup[] | undefined {
if (!pullRequests) {
return undefined;
}
const remainingPullRequests: DashboardPullRequest[] = [...pullRequests];
const pullRequestGroups: PullRequestGroup[] = [];
@@ -115,3 +107,17 @@ export function getPullRequestGroups(
return pullRequestGroups;
}
export function getPullRequestGroupConfigs(
columnConfigs: PullRequestColumnConfig[],
filterProcessor: (filters: Filter[]) => Filter[],
): PullRequestGroupConfig[] {
return columnConfigs.map(columnConfig => {
const filters = filterProcessor(columnConfig.filters);
return {
title: columnConfig.title,
filter: createFilter(filters),
simplified: columnConfig.simplified,
};
});
}