diff --git a/.github/extensions/external-plugin-review-board/public/app.js b/.github/extensions/external-plugin-review-board/public/app.js index d06bfc8fa..6cb15e984 100644 --- a/.github/extensions/external-plugin-review-board/public/app.js +++ b/.github/extensions/external-plugin-review-board/public/app.js @@ -146,7 +146,7 @@ function findItem(number) { function pendingReviewCount() { return board - ? board.items.filter((item) => !item.decision && item.reviewStatus !== "reviewed" && item.reviewStatus !== "queued").length + ? board.items.filter((item) => !item.decision && !item.pendingDecision && item.reviewStatus !== "reviewed" && item.reviewStatus !== "queued").length : 0; } diff --git a/eng/board-bulk-actions.test.mjs b/eng/board-bulk-actions.test.mjs index 38a751af0..197cf0da4 100644 --- a/eng/board-bulk-actions.test.mjs +++ b/eng/board-bulk-actions.test.mjs @@ -127,6 +127,18 @@ for (const boardName of ["open-pr-board", "external-plugin-review-board"]) { }); } +test("external-plugin-review-board: pending review count excludes posted decisions", async () => { + const ui = await createUI("external-plugin-review-board", [ + { number: 1, reviewStatus: "unreviewed" }, + { number: 2, reviewStatus: "unreviewed", pendingDecision: { kind: "approve" } }, + { number: 3, reviewStatus: "reviewed" }, + { number: 4, reviewStatus: "queued" }, + { number: 5, decision: { kind: "reject" } }, + ]); + + assert.equal(ui.context.pendingReviewCount(), 1); +}); + test("PR bulk close requires and posts the staged reason", async () => { const ui = await createUI("open-pr-board", [{ number: 1, column: "close", review: { suggestedComment: "Duplicate" } }]); await ui.context.bulkAction("close", "close");