public async void ShouldCheckoutBranchFromFork() { var gitClient = Substitute.For <IGitClient>(); var service = new PullRequestService( gitClient, MockGitService(), Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); localRepo.CloneUrl.Returns(new UriString("https://foo.bar/owner/repo")); var pr = Substitute.For <IPullRequestModel>(); pr.Number.Returns(5); pr.Head.Returns(new GitReferenceModel("source", "owner:local", "123", "https://foo.bar/fork/repo.git")); await service.Checkout(localRepo, pr, "pr/5-fork-branch"); gitClient.Received().SetRemote(Arg.Any <IRepository>(), "fork", new Uri("https://foo.bar/fork/repo.git")).Forget(); gitClient.Received().Fetch(Arg.Any <IRepository>(), "fork").Forget(); gitClient.Received().Fetch(Arg.Any <IRepository>(), "fork", "source:pr/5-fork-branch").Forget(); gitClient.Received().Checkout(Arg.Any <IRepository>(), "pr/5-fork-branch").Forget(); gitClient.Received().SetTrackingBranch(Arg.Any <IRepository>(), "pr/5-fork-branch", "refs/remotes/fork/source").Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "branch.pr/5-fork-branch.ghfvs-pr", "5").Forget(); Assert.Equal(6, gitClient.ReceivedCalls().Count()); }
public async Task ShouldUseUniquelyNamedRemoteForFork() { var gitClient = MockGitClient(); var gitService = MockGitService(); var service = new PullRequestService( gitClient, gitService, Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); localRepo.CloneUrl.Returns(new UriString("https://foo.bar/owner/repo")); using (var repo = gitService.GetRepository(localRepo.CloneUrl)) { var remote = Substitute.For <Remote>(); var remoteCollection = Substitute.For <RemoteCollection>(); remoteCollection["fork"].Returns(remote); repo.Network.Remotes.Returns(remoteCollection); var pr = Substitute.For <IPullRequestModel>(); pr.Number.Returns(5); pr.Base.Returns(new GitReferenceModel("master", "owner:master", "123", "https://foo.bar/owner/repo.git")); pr.Head.Returns(new GitReferenceModel("prbranch", "fork:prbranch", "123", "https://foo.bar/fork/repo.git")); await service.Checkout(localRepo, pr, "pr/5-fork-branch"); gitClient.Received().SetRemote(Arg.Any <IRepository>(), "fork1", new Uri("https://foo.bar/fork/repo.git")).Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "remote.fork1.created-by-ghfvs", "true").Forget(); } }
public async Task ShouldCheckoutBranchFromFork() { var gitClient = MockGitClient(); var service = new PullRequestService( gitClient, MockGitService(), Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); localRepo.CloneUrl.Returns(new UriString("https://foo.bar/owner/repo")); var pr = Substitute.For <IPullRequestModel>(); pr.Number.Returns(5); pr.Base.Returns(new GitReferenceModel("master", "owner:master", "123", "https://foo.bar/owner/repo.git")); pr.Head.Returns(new GitReferenceModel("prbranch", "fork:prbranch", "123", "https://foo.bar/fork/repo.git")); await service.Checkout(localRepo, pr, "pr/5-fork-branch"); gitClient.Received().SetRemote(Arg.Any <IRepository>(), "fork", new Uri("https://foo.bar/fork/repo.git")).Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "remote.fork.created-by-ghfvs", "true").Forget(); gitClient.Received().Fetch(Arg.Any <IRepository>(), "fork").Forget(); gitClient.Received().Fetch(Arg.Any <IRepository>(), "fork", "prbranch:pr/5-fork-branch").Forget(); gitClient.Received().Checkout(Arg.Any <IRepository>(), "pr/5-fork-branch").Forget(); gitClient.Received().SetTrackingBranch(Arg.Any <IRepository>(), "pr/5-fork-branch", "refs/remotes/fork/prbranch").Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "branch.pr/5-fork-branch.ghfvs-pr-owner-number", "owner#5").Forget(); Assert.That(7, Is.EqualTo(gitClient.ReceivedCalls().Count())); }
public async void ShouldCheckoutLocalBranch() { var gitClient = MockGitClient(); var service = new PullRequestService( gitClient, MockGitService(), Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); localRepo.CloneUrl.Returns(new UriString("https://foo.bar/owner/repo")); var pr = Substitute.For <IPullRequestModel>(); pr.Number.Returns(5); pr.Base.Returns(new GitReferenceModel("master", "owner:master", "123", "https://foo.bar/owner/repo.git")); pr.Head.Returns(new GitReferenceModel("prbranch", "owner:prbranch", "123", "https://foo.bar/owner/repo")); await service.Checkout(localRepo, pr, "prbranch"); gitClient.Received().Fetch(Arg.Any <IRepository>(), "origin").Forget(); gitClient.Received().Checkout(Arg.Any <IRepository>(), "prbranch").Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "branch.prbranch.ghfvs-pr-owner-number", "owner#5").Forget(); Assert.Equal(4, gitClient.ReceivedCalls().Count()); }
public async void ShouldCheckoutExistingBranch() { var gitClient = Substitute.For <IGitClient>(); var service = new PullRequestService( gitClient, MockGitService(), Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); var pr = Substitute.For <IPullRequestModel>(); await service.Checkout(localRepo, pr, "pr/123-foo1"); gitClient.Received().Checkout(Arg.Any <IRepository>(), "pr/123-foo1").Forget(); Assert.Equal(1, gitClient.ReceivedCalls().Count()); }
public async Task ShouldCheckoutExistingBranch() { var gitClient = MockGitClient(); var service = new PullRequestService( gitClient, MockGitService(), Substitute.For <IOperatingSystem>(), Substitute.For <IUsageTracker>()); var localRepo = Substitute.For <ILocalRepositoryModel>(); var pr = Substitute.For <IPullRequestModel>(); pr.Number.Returns(4); pr.Base.Returns(new GitReferenceModel("master", "owner:master", "123", "https://foo.bar/owner/repo.git")); await service.Checkout(localRepo, pr, "pr/123-foo1"); gitClient.Received().Checkout(Arg.Any <IRepository>(), "pr/123-foo1").Forget(); gitClient.Received().SetConfig(Arg.Any <IRepository>(), "branch.pr/123-foo1.ghfvs-pr-owner-number", "owner#4").Forget(); Assert.That(2, Is.EqualTo(gitClient.ReceivedCalls().Count())); }