diff --git a/Octokit.Tests/Clients/RepositoriesClientTests.cs b/Octokit.Tests/Clients/RepositoriesClientTests.cs index 06505535..9f7b1812 100644 --- a/Octokit.Tests/Clients/RepositoriesClientTests.cs +++ b/Octokit.Tests/Clients/RepositoriesClientTests.cs @@ -557,5 +557,52 @@ namespace Octokit.Tests.Clients Assert.Throws(() => client.Edit("owner", "", update)); } } + + public class TheCompareMethod + { + [Fact] + public void EnsureNonNullArguments() + { + var client = new RepositoriesClient(Substitute.For()); + + Assert.Throws(() => client.Compare(null, "repo", "base", "head")); + Assert.Throws(() => client.Compare("", "repo", "base", "head")); + + Assert.Throws(() => client.Compare("owner", null, "base", "head")); + Assert.Throws(() => client.Compare("owner", "", "base", "head")); + + Assert.Throws(() => client.Compare("owner", "repo", null, "head")); + Assert.Throws(() => client.Compare("owner", "repo", "", "head")); + + Assert.Throws(() => client.Compare("owner", "repo", "base", null)); + Assert.Throws(() => client.Compare("owner", "repo", "base", "")); + } + + [Fact] + public void GetsCorrectUrl() + { + var connection = Substitute.For(); + + var client = new RepositoriesClient(connection); + + client.Compare("owner", "repo", "base", "head"); + + connection.Received() + .Get(Arg.Is(u => u.ToString() == "repos/owner/repo/compare/base...head"), null); + } + + [Fact] + public void EncodesUrl() + { + var connection = Substitute.For(); + + var client = new RepositoriesClient(connection); + + client.Compare("owner", "repo", "base", "shiftkey/my-cool-branch"); + + connection.Received() + .Get(Arg.Is(u => u.ToString() == "repos/owner/repo/compare/base...shiftkey%2Fmy-cool-branch"), null); + } + } } } diff --git a/Octokit/Clients/RepositoriesClient.cs b/Octokit/Clients/RepositoriesClient.cs index 5fab5ea7..4806ab87 100644 --- a/Octokit/Clients/RepositoriesClient.cs +++ b/Octokit/Clients/RepositoriesClient.cs @@ -439,7 +439,8 @@ namespace Octokit { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(name, "repositoryName"); - Ensure.ArgumentNotNullOrEmptyString(@base, "branchName"); + Ensure.ArgumentNotNullOrEmptyString(@base, "base"); + Ensure.ArgumentNotNullOrEmptyString(head, "head"); return ApiConnection.Get(ApiUrls.RepoCompare(owner, name, @base, head)); }