Exemplo n.º 1
0
        public async Task OnCleanButUnmergeablePR_LogsErrorAndReturnsFalse()
        {
            string      owner = "owner", repo = "repo";
            int         number      = 1234;
            PullRequest pullRequest = new PullRequest
            {
                Merged         = false,
                MergeableState = "clean",
                Mergeable      = false,
                Title          = "bug 123",
                Head           = new Branch {
                },
                Base           = new Branch {
                }
            };

            var client = new Mock <IGitHubClient>();
            var logger = new Mock <ILogger>();
            var ui     = new Mock <IUserInterface>();

            client.Setup(c => c.GetPullRequest(owner, repo, number))
            .Returns(Task.FromResult(pullRequest));
            ui.Setup(u => u.Prompt(It.IsAny <string>()))
            .Returns(() => pullRequest.Title);

            IAutocompleteService service = GetService(client: client.Object, logger: logger.Object, ui: ui.Object);

            bool result = await service.Run(owner, repo, number);

            ui.Verify(u => u.Prompt(It.IsAny <string>()), Times.Exactly(1));
            logger.VerifyLogged(LogLevel.Error);
            Assert.False(result);
        }
Exemplo n.º 2
0
        public async Task OnAnOutdatedPullRequest_CallsUpdatePullRequestHead()
        {
            // number of times until PR is returned with Merged = true to break the loop
            const int   calledMax = 5;
            string      owner = "owner", repo = "repo";
            int         number      = 1234;
            PullRequest pullRequest = new PullRequest
            {
                Merged         = false,
                MergeableState = "behind",
                Title          = "bug 123",
                Head           = new Branch {
                },
                Base           = new Branch {
                }
            };

            var client = new Mock <IGitHubClient>();
            var logger = new Mock <ILogger>();
            var ui     = new Mock <IUserInterface>();

            int called = 0;

            client.Setup(c => c.GetPullRequest(owner, repo, number))
            .Returns <string, string, int>((o, r, n) =>
            {
                if (++called > calledMax)
                {
                    pullRequest.Merged = true;
                }

                return(Task.FromResult(pullRequest));
            });
            client.Setup(c => c.UpdatePullRequestHead(pullRequest))
            .Returns(Task.FromResult(true));
            ui.Setup(u => u.Prompt(It.IsAny <string>()))
            .Returns(() => pullRequest.Title);

            IAutocompleteService service = GetService(client: client.Object, logger: logger.Object, ui: ui.Object);

            await service.Run(owner, repo, number);

            ui.Verify(u => u.Prompt(It.IsAny <string>()), Times.Exactly(1));
            client.Verify(c => c.UpdatePullRequestHead(pullRequest), Times.Exactly(calledMax));
        }
Exemplo n.º 3
0
        public async Task OnNullPullRequest_LogsErrorAndReturnsFalse()
        {
            string      owner = "owner", repo = "repo";
            int         number      = 1234;
            PullRequest pullRequest = null;

            var client = new Mock <IGitHubClient>();
            var logger = new Mock <ILogger>();

            client.Setup(c => c.GetPullRequest(owner, repo, number))
            .Returns(Task.FromResult(pullRequest));

            IAutocompleteService service = GetService(client: client.Object, logger: logger.Object);

            bool result = await service.Run(owner, repo, number);

            logger.VerifyLogged(LogLevel.Error);
            Assert.False(result);
        }
Exemplo n.º 4
0
        public async Task OnPullRequestWithMergedTrue_LogsInfoAndReturnsTrue()
        {
            string      owner = "owner", repo = "repo";
            int         number      = 1234;
            PullRequest pullRequest = new PullRequest {
                Merged = true
            };

            var client = new Mock <IGitHubClient>();
            var logger = new Mock <ILogger>();

            client.Setup(c => c.GetPullRequest(owner, repo, number))
            .Returns(Task.FromResult(pullRequest));

            IAutocompleteService service = GetService(client: client.Object, logger: logger.Object);

            bool result = await service.Run(owner, repo, number);

            logger.VerifyLogged(LogLevel.Information);
            Assert.True(result);
        }
Exemplo n.º 5
0
        public async Task OnPRMergeSuccess_LogsInfoAndReturnsTrue(string mergeableState)
        {
            string      owner = "owner", repo = "repo";
            int         number      = 1234;
            PullRequest pullRequest = new PullRequest
            {
                Merged         = false,
                MergeableState = mergeableState,
                Mergeable      = true,
                Title          = "bug 123",
                Head           = new Branch {
                },
                Base           = new Branch {
                }
            };

            var client = new Mock <IGitHubClient>();
            var logger = new Mock <ILogger>();
            var ui     = new Mock <IUserInterface>();
            var config = GetConfiguration(true);

            client.Setup(c => c.GetPullRequest(owner, repo, number))
            .Returns(Task.FromResult(pullRequest));
            client.Setup(c => c.MergePullRequest(pullRequest, It.IsAny <MergeMethod>()))
            .Returns(Task.FromResult(true));
            ui.Setup(u => u.Prompt(It.IsAny <string>()))
            .Returns(() => pullRequest.Title);

            IAutocompleteService service = GetService(config, client.Object, ui.Object, logger.Object);

            bool result = await service.Run(owner, repo, number);

            ui.Verify(u => u.Prompt(It.IsAny <string>()), Times.Exactly(1));
            client.Verify(c => c.MergePullRequest(pullRequest, It.IsAny <MergeMethod>()), Times.Once);
            logger.VerifyLogged(LogLevel.Information);
            Assert.True(result);
        }
Exemplo n.º 6
0
 public async Task Autocomplete(string repositoryOwner, string repositoryName, int pullRequestId)
 {
     await _autocompleteService.Run(repositoryOwner, repositoryName, pullRequestId);
 }