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

Commit 2360038

Browse files
committed
Remove pending badge from comment when review submitted.
1 parent f67582d commit 2360038

File tree

5 files changed

+103
-9
lines changed

5 files changed

+103
-9
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ async Task UpdateFileComments()
209209
{
210210
var result = new List<PullRequestReviewFileCommentViewModel>();
211211

212-
//if (Model.Id == 0 && session.PendingReviewId != 0)
213-
//{
214-
// ((PullRequestReviewModel)Model).Id = session.PendingReviewId;
215-
//}
212+
if (Model.Id == 0 && session.PendingReviewId != 0)
213+
{
214+
((PullRequestReviewModel)Model).Id = session.PendingReviewId;
215+
}
216216

217217
foreach (var file in await session.GetAllFiles())
218218
{

src/GitHub.Exports/Models/IPullRequestReviewCommentModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,6 @@ public interface IPullRequestReviewCommentModel : ICommentModel
4747
/// <summary>
4848
/// Gets a value indicating whether the comment is part of a pending review.
4949
/// </summary>
50-
bool IsPending { get; }
50+
bool IsPending { get; set; }
5151
}
5252
}

src/GitHub.InlineReviews/Services/PullRequestSession.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,18 @@ async Task AddReview(IPullRequestReviewModel review)
272272
.Where(x => x.NodeId != review.NodeId)
273273
.Concat(new[] { review })
274274
.ToList();
275+
276+
if (review.State != PullRequestReviewState.Pending)
277+
{
278+
foreach (var comment in PullRequest.ReviewComments)
279+
{
280+
if (comment.PullRequestReviewId == review.Id)
281+
{
282+
comment.IsPending = false;
283+
}
284+
}
285+
}
286+
275287
await Update(PullRequest);
276288
}
277289

test/GitHub.InlineReviews.UnitTests/Services/PullRequestSessionTests.cs

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,22 +343,39 @@ public async Task ReplacesPendingReviewWithModel()
343343

344344
var target = CreateTarget(service, "fork", "owner", true);
345345

346+
Assert.That(
347+
target.PullRequest.Reviews.Where(x => x.State == PullRequestReviewState.Pending).Count(),
348+
Is.EqualTo(1));
349+
346350
var submittedReview = CreatePullRequestReview(target.User, PullRequestReviewState.Approved);
347351
submittedReview.NodeId.Returns("pendingReviewId");
348352
service.SubmitPendingReview(null, null, null, null, Octokit.PullRequestReviewEvent.Approve)
349353
.ReturnsForAnyArgs(submittedReview);
350354

351-
Assert.That(
352-
target.PullRequest.Reviews.Where(x => x.State == PullRequestReviewState.Pending).Count(),
353-
Is.EqualTo(1));
354-
355355
var model = await target.PostReview("New Review", Octokit.PullRequestReviewEvent.Approve);
356356

357357
Assert.That(
358358
target.PullRequest.Reviews.Where(x => x.State == PullRequestReviewState.Pending).Count(),
359359
Is.Zero);
360360
}
361361

362+
[Test]
363+
public async Task MarksAssociatedCommentsAsNonPending()
364+
{
365+
var service = Substitute.For<IPullRequestSessionService>();
366+
var target = CreateTarget(service, "fork", "owner", true);
367+
368+
Assert.That(target.PullRequest.ReviewComments[0].IsPending, Is.True);
369+
370+
var submittedReview = CreatePullRequestReview(target.User, PullRequestReviewState.Approved);
371+
submittedReview.NodeId.Returns("pendingReviewId");
372+
service.SubmitPendingReview(null, null, null, null, Octokit.PullRequestReviewEvent.Approve)
373+
.ReturnsForAnyArgs(submittedReview);
374+
var model = await target.PostReview("New Review", Octokit.PullRequestReviewEvent.RequestChanges);
375+
376+
target.PullRequest.ReviewComments[0].Received(1).IsPending = false;
377+
}
378+
362379
PullRequestSession CreateTarget(
363380
IPullRequestSessionService service,
364381
string localRepositoryOwner,
@@ -376,6 +393,10 @@ PullRequestSession CreateTarget(
376393

377394
if (hasPendingReview)
378395
{
396+
var reviewComment = Substitute.For<IPullRequestReviewCommentModel>();
397+
reviewComment.IsPending.Returns(true);
398+
pr.ReviewComments.Returns(new[] { reviewComment });
399+
379400
var review = CreatePullRequestReview(user, PullRequestReviewState.Pending);
380401
review.NodeId.Returns("pendingReviewId");
381402
pr.Reviews.Returns(new[] { review });

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

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,67 @@ public async Task Updates_FileComments_When_Session_PullRequestChanged()
183183
Assert.That(target.FileComments, Has.Count.EqualTo(1));
184184
}
185185

186+
[Test]
187+
public async Task Updates_Model_Id_From_PendingReviewId_When_Session_PullRequestChanged()
188+
{
189+
var model = CreatePullRequest();
190+
var session = CreateSession(
191+
"grokys",
192+
CreateSessionFile(
193+
CreateInlineCommentThread(
194+
CreateReviewComment(11)),
195+
CreateInlineCommentThread(
196+
CreateReviewComment(12),
197+
CreateReviewComment(12))));
198+
199+
var target = CreateTarget(model, session);
200+
201+
await Initialize(target);
202+
203+
Assert.That(target.Model.Id, Is.EqualTo(0));
204+
205+
session.PendingReviewId.Returns(123);
206+
RaisePullRequestChanged(session, model);
207+
208+
Assert.That(target.Model.Id, Is.EqualTo(123));
209+
}
210+
211+
[Test]
212+
public async Task Submit_Calls_Session_PostReview()
213+
{
214+
var review = CreateReview(12, "grokys", state: PullRequestReviewState.Pending);
215+
var model = CreatePullRequest("shana", review);
216+
var session = CreateSession();
217+
218+
var target = CreateTarget(model, session);
219+
220+
await Initialize(target);
221+
222+
target.Body = "Post review";
223+
target.Submit.Execute(Octokit.PullRequestReviewEvent.Approve);
224+
225+
await session.Received(1).PostReview("Post review", Octokit.PullRequestReviewEvent.Approve);
226+
}
227+
228+
[Test]
229+
public async Task Submit_Closes_Page()
230+
{
231+
var review = CreateReview(12, "grokys", state: PullRequestReviewState.Pending);
232+
var model = CreatePullRequest("shana", review);
233+
var session = CreateSession();
234+
var closed = false;
235+
236+
var target = CreateTarget(model, session);
237+
238+
await Initialize(target);
239+
target.Body = "Post review";
240+
241+
target.CloseRequested.Subscribe(_ => closed = true);
242+
target.Submit.Execute(Octokit.PullRequestReviewEvent.Approve);
243+
244+
Assert.True(closed);
245+
}
246+
186247
static PullRequestReviewAuthoringViewModel CreateTarget(
187248
IPullRequestModel model,
188249
IPullRequestSession session = null)

0 commit comments

Comments
 (0)