示例#1
0
        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());
        }
示例#2
0
        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();
            }
        }
示例#3
0
        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()));
        }
示例#4
0
        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());
        }
示例#5
0
        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());
        }
示例#6
0
        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()));
        }