From 590d01a06b4547984f801e6c9ec69535d87cfaaa Mon Sep 17 00:00:00 2001 From: Victor Castillo Escoto Date: Thu, 8 Oct 2015 13:33:10 -0500 Subject: [PATCH] Add tests for merge exceptions to PullRequestsClientTests --- .../Clients/PullRequestsClientTests.cs | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs index 003d9bcb..d021995f 100644 --- a/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs +++ b/Octokit.Tests.Integration/Clients/PullRequestsClientTests.cs @@ -227,7 +227,7 @@ public class PullRequestsClientTests : IDisposable } [IntegrationTest] - public async Task CannotBeMerged() + public async Task CannotBeMergedDueMismatchConflict() { await CreateTheWorld(); var fakeSha = new string('f', 40); @@ -236,9 +236,29 @@ public class PullRequestsClientTests : IDisposable var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); var merge = new MergePullRequest { Sha = fakeSha }; - var ex = await Assert.ThrowsAsync(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); + var ex = await Assert.ThrowsAsync(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); - Assert.True(ex.ApiError.Message.StartsWith("Head branch was modified")); + //merge exceptions don't inherit from ApiException so ApiError is not available + Assert.True(ex.Message.StartsWith("The merge operation specified a SHA which didn't match")); + } + + [IntegrationTest] + public async Task CannotBeMergedDueNotInMergeableState() + { + await CreateTheWorld(); + + var master = await _github.GitDatabase.Reference.Get(Helper.UserName, _context.RepositoryName, "heads/master"); + var newMasterTree = await CreateTree(new Dictionary { { "README.md", "Hello World, we meet again!" } }); + await CreateCommit("baseline for pull request", newMasterTree.Sha, master.Object.Sha); + + var newPullRequest = new NewPullRequest("a pull request", branchName, "master"); + var pullRequest = await _fixture.Create(Helper.UserName, _context.RepositoryName, newPullRequest); + + var merge = new MergePullRequest { Sha = pullRequest.Head.Sha }; + var ex = await Assert.ThrowsAsync(() => _fixture.Merge(Helper.UserName, _context.RepositoryName, pullRequest.Number, merge)); + + //merge exceptions don't inherit from ApiException so ApiError is not available + Assert.True(ex.Message.Equals("The pull request is not in a mergeable state")); } [IntegrationTest]