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

Commit c738fec

Browse files
Merge branch 'master' into fixes/1348-dont-open-deleted-file
2 parents 29358b2 + e486cf9 commit c738fec

File tree

7 files changed

+95
-14
lines changed

7 files changed

+95
-14
lines changed

src/GitHub.App/Services/PullRequestService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ public IObservable<Unit> Checkout(ILocalRepositoryModel repository, PullRequestD
392392
{
393393
await gitClient.Checkout(repo, localBranchName);
394394
}
395-
else if (repository.CloneUrl.Owner == pullRequest.HeadRepositoryOwner)
395+
else if (string.Equals(repository.CloneUrl.Owner, pullRequest.HeadRepositoryOwner, StringComparison.OrdinalIgnoreCase))
396396
{
397397
var remote = await gitClient.GetHttpRemote(repo, "origin");
398398
await gitClient.Fetch(repo, remote.Name);
@@ -524,7 +524,7 @@ public IObservable<bool> EnsureLocalBranchesAreMarkedAsPullRequests(ILocalReposi
524524

525525
public bool IsPullRequestFromRepository(ILocalRepositoryModel repository, PullRequestDetailModel pullRequest)
526526
{
527-
return pullRequest.HeadRepositoryOwner == repository.CloneUrl.Owner;
527+
return string.Equals(repository.CloneUrl?.Owner, pullRequest.HeadRepositoryOwner, StringComparison.OrdinalIgnoreCase);
528528
}
529529

530530
public IObservable<Unit> SwitchToBranch(ILocalRepositoryModel repository, PullRequestDetailModel pullRequest)

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Reactive.Disposables;
88
using System.Reactive.Linq;
99
using System.Threading.Tasks;
10+
using System.Windows.Threading;
1011
using GitHub.Collections;
1112
using GitHub.Extensions;
1213
using GitHub.Extensions.Reactive;
@@ -209,6 +210,7 @@ public override Task Refresh()
209210
this.WhenAnyValue(x => x.SelectedState),
210211
this.WhenAnyValue(x => x.AuthorFilter.Selected),
211212
(loading, count, _, __, ___) => Tuple.Create(loading, count))
213+
.ObserveOn(RxApp.MainThreadScheduler)
212214
.Subscribe(x => UpdateState(x.Item1, x.Item2)));
213215
dispose.Add(
214216
Observable.FromEventPattern<ErrorEventArgs>(

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static IEnumerable<PullRequestReviewSummaryViewModel> BuildByUser(
4141
{
4242
var existing = new Dictionary<string, PullRequestReviewSummaryViewModel>();
4343

44-
foreach (var review in pullRequest.Reviews.OrderBy(x => x.Id))
44+
foreach (var review in pullRequest.Reviews.OrderBy(x => x.SubmittedAt))
4545
{
4646
if (review.State == PullRequestReviewState.Pending && review.Author.Login != currentUser.Login)
4747
continue;
@@ -90,6 +90,7 @@ static int ToPriority(PullRequestReviewState state)
9090
{
9191
case PullRequestReviewState.Approved:
9292
case PullRequestReviewState.ChangesRequested:
93+
case PullRequestReviewState.Dismissed:
9394
return 1;
9495
case PullRequestReviewState.Pending:
9596
return 2;

src/GitHub.InlineReviews/Services/PullRequestSessionManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ async Task<PullRequestSession> GetSessionInternal(string owner, string name, int
225225
{
226226
PullRequestSession session = null;
227227
WeakReference<PullRequestSession> weakSession;
228-
var key = Tuple.Create(owner, number);
228+
var key = Tuple.Create(owner.ToLowerInvariant(), number);
229229

230230
if (sessions.TryGetValue(key, out weakSession))
231231
{

test/GitHub.App.UnitTests/Services/PullRequestServiceTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,35 @@ public async Task ShouldCheckoutLocalBranchAsync()
777777
Assert.That(4, Is.EqualTo(gitClient.ReceivedCalls().Count()));
778778
}
779779

780+
[Test]
781+
public async Task ShouldCheckoutLocalBranchOwnerCaseMismatchAsync()
782+
{
783+
var gitClient = MockGitClient();
784+
var service = CreateTarget(gitClient, MockGitService());
785+
786+
var localRepo = Substitute.For<ILocalRepositoryModel>();
787+
localRepo.CloneUrl.Returns(new UriString("https://foo.bar/Owner/repo"));
788+
789+
var pr = new PullRequestDetailModel
790+
{
791+
Number = 5,
792+
BaseRefName = "master",
793+
BaseRefSha = "123",
794+
BaseRepositoryOwner = "owner",
795+
HeadRefName = "prbranch",
796+
HeadRefSha = "123",
797+
HeadRepositoryOwner = "owner",
798+
};
799+
800+
await service.Checkout(localRepo, pr, "prbranch");
801+
802+
gitClient.Received().Fetch(Arg.Any<IRepository>(), "origin").Forget();
803+
gitClient.Received().Checkout(Arg.Any<IRepository>(), "prbranch").Forget();
804+
gitClient.Received().SetConfig(Arg.Any<IRepository>(), "branch.prbranch.ghfvs-pr-owner-number", "owner#5").Forget();
805+
806+
Assert.That(4, Is.EqualTo(gitClient.ReceivedCalls().Count()));
807+
}
808+
780809
[Test]
781810
public async Task ShouldCheckoutBranchFromForkAsync()
782811
{
@@ -899,6 +928,19 @@ public async Task ShouldReturnPullRequestBranchForPullRequestFromSameRepositoryA
899928
Assert.That("source", Is.EqualTo(result.Name));
900929
}
901930

931+
[Test]
932+
public async Task ShouldReturnPullRequestBranchForPullRequestFromSameRepositoryOwnerCaseMismatchAsync()
933+
{
934+
var service = CreateTarget(MockGitClient(), MockGitService());
935+
936+
var localRepo = Substitute.For<ILocalRepositoryModel>();
937+
localRepo.CloneUrl.Returns(new UriString("https://github.com/Foo/bar"));
938+
939+
var result = await service.GetLocalBranches(localRepo, CreatePullRequest(fromFork: false));
940+
941+
Assert.That("source", Is.EqualTo(result.Name));
942+
}
943+
902944
[Test]
903945
public async Task ShouldReturnMarkedBranchForPullRequestFromForkAsync()
904946
{

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

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,13 @@ public class TheReviewsProperty : TestBaseClass
5656
[Test]
5757
public async Task ShouldShowLatestAcceptedOrChangesRequestedReviewAsync()
5858
{
59+
var dateTimeOffset = DateTimeOffset.Now;
5960
var target = CreateTarget();
6061
var model = CreatePullRequestModel(
61-
CreatePullRequestReviewModel("1", "grokys", PullRequestReviewState.ChangesRequested),
62-
CreatePullRequestReviewModel("2", "shana", PullRequestReviewState.ChangesRequested),
63-
CreatePullRequestReviewModel("3", "grokys", PullRequestReviewState.Approved),
64-
CreatePullRequestReviewModel("4", "grokys", PullRequestReviewState.Commented));
62+
CreatePullRequestReviewModel("1", "grokys", PullRequestReviewState.ChangesRequested, dateTimeOffset.AddMinutes(1)),
63+
CreatePullRequestReviewModel("2", "shana", PullRequestReviewState.ChangesRequested, dateTimeOffset.AddMinutes(2)),
64+
CreatePullRequestReviewModel("3", "grokys", PullRequestReviewState.Approved, dateTimeOffset.AddMinutes(3)),
65+
CreatePullRequestReviewModel("4", "grokys", PullRequestReviewState.Commented, dateTimeOffset.AddMinutes(4)));
6566

6667
await target.Load(model);
6768

@@ -77,10 +78,11 @@ public async Task ShouldShowLatestAcceptedOrChangesRequestedReviewAsync()
7778
[Test]
7879
public async Task ShouldShowLatestCommentedReviewIfNothingElsePresentAsync()
7980
{
81+
var dateTimeOffset = DateTimeOffset.Now;
8082
var target = CreateTarget();
8183
var model = CreatePullRequestModel(
82-
CreatePullRequestReviewModel("1", "shana", PullRequestReviewState.Commented),
83-
CreatePullRequestReviewModel("2", "shana", PullRequestReviewState.Commented));
84+
CreatePullRequestReviewModel("1", "shana", PullRequestReviewState.Commented, dateTimeOffset.AddMinutes(1)),
85+
CreatePullRequestReviewModel("2", "shana", PullRequestReviewState.Commented, dateTimeOffset.AddMinutes(2)));
8486

8587
await target.Load(model);
8688

@@ -107,9 +109,11 @@ public async Task ShouldNotShowStartNewReviewWhenHasPendingReviewAsync()
107109
[Test]
108110
public async Task ShouldShowPendingReviewOverApprovedAsync()
109111
{
112+
var dateTimeOffset = DateTimeOffset.Now;
113+
110114
var target = CreateTarget();
111115
var model = CreatePullRequestModel(
112-
CreatePullRequestReviewModel("1", "grokys", PullRequestReviewState.Approved),
116+
CreatePullRequestReviewModel("1", "grokys", PullRequestReviewState.Approved, dateTimeOffset.AddMinutes(1)),
113117
CreatePullRequestReviewModel("2", "grokys", PullRequestReviewState.Pending));
114118

115119
await target.Load(model);
@@ -133,16 +137,34 @@ public async Task ShouldNotShowPendingReviewForOtherUserAsync()
133137
Assert.That(target.Reviews[0].Id, Is.Null);
134138
}
135139

140+
[Test]
141+
public async Task ShouldNotShowChangesRequestedAfterDismissed()
142+
{
143+
var dateTimeOffset = DateTimeOffset.Now;
144+
145+
var target = CreateTarget();
146+
var model = CreatePullRequestModel(
147+
CreatePullRequestReviewModel("1", "shana", PullRequestReviewState.ChangesRequested, dateTimeOffset.AddMinutes(1)),
148+
CreatePullRequestReviewModel("2", "shana", PullRequestReviewState.Dismissed, dateTimeOffset.AddMinutes(2)));
149+
150+
await target.Load(model);
151+
152+
Assert.That(target.Reviews, Has.Count.EqualTo(2));
153+
Assert.That(target.Reviews[0].User.Login, Is.EqualTo("shana"));
154+
Assert.That(target.Reviews[0].State, Is.EqualTo(PullRequestReviewState.Dismissed));
155+
Assert.That(target.Reviews[1].User.Login, Is.EqualTo("grokys"));
156+
}
157+
136158
static PullRequestDetailModel CreatePullRequestModel(
137159
params PullRequestReviewModel[] reviews)
138160
{
139161
return PullRequestDetailViewModelTests.CreatePullRequestModel(reviews: reviews);
140162
}
141163

142-
static PullRequestReviewModel CreatePullRequestReviewModel(
143-
string id,
164+
static PullRequestReviewModel CreatePullRequestReviewModel(string id,
144165
string login,
145-
PullRequestReviewState state)
166+
PullRequestReviewState state,
167+
DateTimeOffset? submittedAt = null)
146168
{
147169
var account = new ActorModel
148170
{
@@ -154,6 +176,7 @@ static PullRequestReviewModel CreatePullRequestReviewModel(
154176
Id = id,
155177
Author = account,
156178
State = state,
179+
SubmittedAt = submittedAt
157180
};
158181
}
159182
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,19 @@ public async Task GetSessionReturnsSameSessionForSamePullRequest()
770770
Assert.That(result1, Is.Not.SameAs(result3));
771771
}
772772

773+
[Test]
774+
public async Task GetSessionReturnsSameSessionForSamePullRequestOwnerCaseMismatch()
775+
{
776+
var target = CreateTarget();
777+
var newModel = CreatePullRequestModel(NotCurrentBranchPullRequestNumber);
778+
var result1 = await target.GetSession("owner", "repo", 5);
779+
var result2 = await target.GetSession("Owner", "repo", 5);
780+
var result3 = await target.GetSession("owner", "repo", 6);
781+
782+
Assert.That(result1, Is.SameAs(result2));
783+
Assert.That(result1, Is.Not.SameAs(result3));
784+
}
785+
773786
[Test]
774787
public async Task SessionCanBeCollected()
775788
{

0 commit comments

Comments
 (0)