public async Task FetchCommitMessage_ShouldReturnHeadCommitId_ForPushEvent()
        {
            var client  = Substitute.For <GithubHttpClient>();
            var logger  = Substitute.For <ILogger <GithubCommitMessageFetcher> >();
            var fetcher = new GithubCommitMessageFetcher(client, logger);

            var message = await fetcher.FetchCommitMessage(new PushEvent
            {
                HeadCommit = new Commit
                {
                    Message = commitMessage
                }
            });

            message.Should().Be(commitMessage);
        }
Example #2
0
 public Handler(
     RequestValidator requestValidator,
     PipelineStarter pipelineStarter,
     PipelineDeployer pipelineDeployer,
     GithubStatusNotifier statusNotifier,
     GithubCommitMessageFetcher commitMessageFetcher,
     IOptions <Config> config,
     ILogger <Handler> logger
     )
 {
     this.requestValidator     = requestValidator;
     this.pipelineStarter      = pipelineStarter;
     this.pipelineDeployer     = pipelineDeployer;
     this.statusNotifier       = statusNotifier;
     this.commitMessageFetcher = commitMessageFetcher;
     this.config = config.Value;
     this.logger = logger;
 }
        public async Task FetchCommitMessage_ShouldFetchMessageFromApi_ForPullRequestEvent()
        {
            var client  = Substitute.For <GithubHttpClient>();
            var logger  = Substitute.For <ILogger <GithubCommitMessageFetcher> >();
            var fetcher = new GithubCommitMessageFetcher(client, logger);

            client.GetAsync <RepoCommit>(Any <string>()).Returns(new RepoCommit
            {
                Commit = new RepoCommitDetails
                {
                    Message = commitMessage
                }
            });

            var message = await fetcher.FetchCommitMessage(new PullRequestEvent
            {
                PullRequest = new PullRequest
                {
                    Head = new PullRequestHead
                    {
                        Sha = headCommitSha
                    }
                },
                Repository = new Repository
                {
                    Name  = repoName,
                    Owner = new User
                    {
                        Login = ownerName,
                    }
                }
            });

            message.Should().Be(commitMessage);
            await client.Received().GetAsync <RepoCommit>(Is <string>($"https://api.github.com/repos/{ownerName}/{repoName}/commits/{headCommitSha}"));
        }