Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 58aff2e

Browse files
committed
Don't show other users' pending reviews.
1 parent cad6463 commit 58aff2e

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ public async Task Load(IPullRequestModel pullRequest)
369369
TargetBranchDisplayName = GetBranchDisplayName(IsFromFork, pullRequest.Base?.Label);
370370
CommentCount = pullRequest.Comments.Count + pullRequest.ReviewComments.Count;
371371
Body = !string.IsNullOrWhiteSpace(pullRequest.Body) ? pullRequest.Body : Resources.NoDescriptionProvidedMarkdown;
372-
Reviews = PullRequestReviewSummaryViewModel.BuildByUser(pullRequest).ToList();
372+
Reviews = PullRequestReviewSummaryViewModel.BuildByUser(Session.User, pullRequest).ToList();
373373

374374
await Files.InitializeAsync(Session);
375375

src/GitHub.App/ViewModels/GitHubPane/PullRequestReviewSummaryViewModel.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,23 @@ public class PullRequestReviewSummaryViewModel : IPullRequestReviewSummaryViewMo
2929
/// <summary>
3030
/// Builds a collection of <see cref="PullRequestReviewSummaryViewModel"/>s by user.
3131
/// </summary>
32+
/// <param name="currentUser">The current user.</param>
3233
/// <param name="pullRequest">The pull request model.</param>
3334
/// <remarks>
3435
/// This method builds a list similar to that found in the "Reviewers" section at the top-
3536
/// right of the Pull Request page on GitHub.
3637
/// </remarks>
37-
public static IEnumerable<PullRequestReviewSummaryViewModel> BuildByUser(IPullRequestModel pullRequest)
38+
public static IEnumerable<PullRequestReviewSummaryViewModel> BuildByUser(
39+
IAccount currentUser,
40+
IPullRequestModel pullRequest)
3841
{
3942
var existing = new Dictionary<string, PullRequestReviewSummaryViewModel>();
4043

4144
foreach (var review in pullRequest.Reviews.OrderBy(x => x.Id))
4245
{
46+
if (review.State == PullRequestReviewState.Pending && review.User.Login != currentUser.Login)
47+
continue;
48+
4349
PullRequestReviewSummaryViewModel previous;
4450
existing.TryGetValue(review.User.Login, out previous);
4551

@@ -68,6 +74,7 @@ public static IEnumerable<PullRequestReviewSummaryViewModel> BuildByUser(IPullRe
6874
var newReview = new PullRequestReviewSummaryViewModel
6975
{
7076
State = PullRequestReviewState.Pending,
77+
User = currentUser,
7178
};
7279
result = result.Concat(new[] { newReview });
7380
}

test/UnitTests/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModelTests.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public async Task ShouldShowLatestAcceptedOrChangesRequestedReview()
6868
Assert.That(target.Reviews, Has.Count.EqualTo(3));
6969
Assert.That(target.Reviews[0].User.Login, Is.EqualTo("grokys"));
7070
Assert.That(target.Reviews[1].User.Login, Is.EqualTo("shana"));
71-
Assert.That(target.Reviews[2].User, Is.Null);
71+
Assert.That(target.Reviews[2].User.Login, Is.EqualTo("grokys"));
7272
Assert.That(target.Reviews[0].Id, Is.EqualTo(3));
7373
Assert.That(target.Reviews[1].Id, Is.EqualTo(2));
7474
Assert.That(target.Reviews[2].Id, Is.EqualTo(0));
@@ -79,14 +79,14 @@ public async Task ShouldShowLatestCommentedReviewIfNothingElsePresent()
7979
{
8080
var target = CreateTarget();
8181
var model = CreatePullRequestModel(
82-
CreatePullRequestReviewModel(1, "grokys", PullRequestReviewState.Commented),
83-
CreatePullRequestReviewModel(2, "grokys", PullRequestReviewState.Commented));
82+
CreatePullRequestReviewModel(1, "shana", PullRequestReviewState.Commented),
83+
CreatePullRequestReviewModel(2, "shana", PullRequestReviewState.Commented));
8484

8585
await target.Load(model);
8686

8787
Assert.That(target.Reviews, Has.Count.EqualTo(2));
88-
Assert.That(target.Reviews[0].User.Login, Is.EqualTo("grokys"));
89-
Assert.That(target.Reviews[1].User, Is.Null);
88+
Assert.That(target.Reviews[0].User.Login, Is.EqualTo("shana"));
89+
Assert.That(target.Reviews[1].User.Login, Is.EqualTo("grokys"));
9090
Assert.That(target.Reviews[0].Id, Is.EqualTo(2));
9191
}
9292

@@ -119,6 +119,20 @@ public async Task ShouldShowPendingReviewOverApproved()
119119
Assert.That(target.Reviews[0].Id, Is.EqualTo(2));
120120
}
121121

122+
[Test]
123+
public async Task ShouldNotShowPendingReviewForOtherUser()
124+
{
125+
var target = CreateTarget();
126+
var model = CreatePullRequestModel(
127+
CreatePullRequestReviewModel(1, "shana", PullRequestReviewState.Pending));
128+
129+
await target.Load(model);
130+
131+
Assert.That(target.Reviews, Has.Count.EqualTo(1));
132+
Assert.That(target.Reviews[0].User.Login, Is.EqualTo("grokys"));
133+
Assert.That(target.Reviews[0].Id, Is.EqualTo(0));
134+
}
135+
122136
static PullRequestModel CreatePullRequestModel(
123137
params IPullRequestReviewModel[] reviews)
124138
{
@@ -550,7 +564,7 @@ static Tuple<PullRequestDetailViewModel, IPullRequestService> CreateTargetAndSer
550564
if (sessionManager == null)
551565
{
552566
var currentSession = Substitute.For<IPullRequestSession>();
553-
currentSession.User.Login.Returns("[CurrentUser]");
567+
currentSession.User.Login.Returns("grokys");
554568

555569
sessionManager = Substitute.For<IPullRequestSessionManager>();
556570
sessionManager.CurrentSession.Returns(currentSession);

0 commit comments

Comments
 (0)