swarm ui: the PR report's approvals column filters on whether the rule is met
The report had an approvals column (1/2) and a separate approved column. They are one fact, so approvals now carries the filter, complete or missing, and the approved column is gone.
This commit is contained in:
parent
cac9b40714
commit
71a4d1d255
4 changed files with 27 additions and 12 deletions
|
|
@ -607,9 +607,9 @@ and base branch, and what a reviewer or merger filters on:
|
|||
rule asks for (`1/2`). An approval counts when it stands as the reviewer's latest
|
||||
decision, on the PR's current head, neither stale nor dismissed, and from a
|
||||
reviewer whose approval the rule accepts. A reviewer whose latest review asks for changes shows **changes
|
||||
requested**.
|
||||
- **approved**: the approvals meet the rule. A PR into a branch with no
|
||||
protection rule has nothing to approve, so it counts as approved.
|
||||
requested**. Filter the column to **complete** for the PRs whose approvals meet
|
||||
the rule, or **missing** for the rest. A PR into a branch with no protection
|
||||
rule has nothing to approve, so it counts as complete.
|
||||
- **diff**: the lines the PR adds and removes (`+120 −8`), as the forge counts them.
|
||||
- **conflicts**: the forge can't merge the PR as it stands.
|
||||
- **protected base**: the base branch has a protection rule. A stacked PR targets a
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ import {
|
|||
approvalsText,
|
||||
diffSize,
|
||||
diffText,
|
||||
hasAllApprovals,
|
||||
approvalsState,
|
||||
prReportUrl,
|
||||
yesNo,
|
||||
type PrReportRow,
|
||||
|
|
@ -125,14 +125,7 @@ const COLUMNS: TableColumn<PrReportRow>[] = [
|
|||
</>
|
||||
),
|
||||
sortBy: (r) => r.approvals,
|
||||
},
|
||||
{
|
||||
key: "approved",
|
||||
header: "approved",
|
||||
render: (r) =>
|
||||
hasAllApprovals(r) ? <Badge tone="positive" value="yes" /> : "no",
|
||||
sortBy: (r) => Number(hasAllApprovals(r)),
|
||||
filterValues: (r) => [yesNo(hasAllApprovals(r))],
|
||||
filterValues: (r) => [approvalsState(r)],
|
||||
filterMode: "multiselect",
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -55,6 +55,12 @@ export function hasAllApprovals(row: PrReportRow): boolean {
|
|||
return row.approvals >= row.required_approvals;
|
||||
}
|
||||
|
||||
/** What the approvals column filters on: whether the PR has all the approvals
|
||||
* its base branch asks for. */
|
||||
export function approvalsState(row: PrReportRow): "complete" | "missing" {
|
||||
return hasAllApprovals(row) ? "complete" : "missing";
|
||||
}
|
||||
|
||||
/** The diff size cell: lines added and removed, `+120 −8`. A count the forge
|
||||
* did not give reads as a dash. */
|
||||
export function diffText(row: PrReportRow): string {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
import assert from "node:assert/strict";
|
||||
import { test } from "node:test";
|
||||
import {
|
||||
approvalsState,
|
||||
approvalsText,
|
||||
diffSize,
|
||||
diffText,
|
||||
|
|
@ -78,3 +79,18 @@ test("a PR has all approvals when it meets the rule, and an unprotected base alw
|
|||
true,
|
||||
);
|
||||
});
|
||||
|
||||
test("the approvals column filters on whether the rule is met", () => {
|
||||
assert.equal(approvalsState(row({})), "missing");
|
||||
assert.equal(approvalsState(row({ approvals: 2 })), "complete");
|
||||
assert.equal(
|
||||
approvalsState(
|
||||
row({
|
||||
targets_protected_branch: false,
|
||||
required_approvals: 0,
|
||||
approvals: 0,
|
||||
}),
|
||||
),
|
||||
"complete",
|
||||
);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue