diff --git a/Octokit.Tests/Clients/CommitsClientTests.cs b/Octokit.Tests/Clients/CommitsClientTests.cs index 72d3daff..6f04edc0 100644 --- a/Octokit.Tests/Clients/CommitsClientTests.cs +++ b/Octokit.Tests/Clients/CommitsClientTests.cs @@ -10,6 +10,28 @@ public class CommitsClientTests { public class TheGetMethod { + [Fact] + public async Task RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new CommitsClient(connection); + + await client.Get("owner", "repo", "reference"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repos/owner/repo/git/commits/reference")); + } + + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new CommitsClient(connection); + + await client.Get(1, "reference"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repositories/1/git/commits/reference")); + } + [Fact] public async Task EnsuresNonNullArguments() { @@ -18,20 +40,14 @@ public class CommitsClientTests await Assert.ThrowsAsync(() => client.Get(null, "name", "reference")); await Assert.ThrowsAsync(() => client.Get("owner", null, "reference")); await Assert.ThrowsAsync(() => client.Get("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.Get(1, null)); + await Assert.ThrowsAsync(() => client.Get("", "name", "reference")); await Assert.ThrowsAsync(() => client.Get("owner", "", "reference")); await Assert.ThrowsAsync(() => client.Get("owner", "name", "")); - } - [Fact] - public void RequestsCorrectUrl() - { - var connection = Substitute.For(); - var client = new CommitsClient(connection); - - client.Get("owner", "repo", "reference"); - - connection.Received().Get(Arg.Is(u => u.ToString() == "repos/owner/repo/git/commits/reference"), Arg.Any>(), "application/vnd.github.cryptographer-preview+sha"); + await Assert.ThrowsAsync(() => client.Get(1, "")); } } @@ -48,9 +64,26 @@ public class CommitsClientTests client.Create("owner", "repo", newCommit); connection.Received().Post(Arg.Is(u => u.ToString() == "repos/owner/repo/git/commits"), - Arg.Is(nc => nc.Message == "message" - && nc.Tree == "tree" - && nc.Parents.Count() == 2)); + Arg.Is(nc => nc.Message == "message" + && nc.Tree == "tree" + && nc.Parents.Count() == 2)); + } + + [Fact] + public void PostsToTheCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new CommitsClient(connection); + + var parents = new List { "sha-reference1", "sha-reference2" }; + var newCommit = new NewCommit("message", "tree", parents); + + client.Create(1, newCommit); + + connection.Received().Post(Arg.Is(u => u.ToString() == "repositories/1/git/commits"), + Arg.Is(nc => nc.Message == "message" + && nc.Tree == "tree" + && nc.Parents.Count() == 2)); } [Fact] @@ -59,9 +92,13 @@ public class CommitsClientTests var client = new CommitsClient(Substitute.For()); var newCommit = new NewCommit("message", "tree", new[] { "parent1", "parent2" }); + await Assert.ThrowsAsync(() => client.Create(null, "name", newCommit)); await Assert.ThrowsAsync(() => client.Create("owner", null, newCommit)); await Assert.ThrowsAsync(() => client.Create("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.Create(1, null)); + await Assert.ThrowsAsync(() => client.Create("", "name", newCommit)); await Assert.ThrowsAsync(() => client.Create("owner", "", newCommit)); } diff --git a/Octokit.Tests/Reactive/ObservableCommitsClientTests.cs b/Octokit.Tests/Reactive/ObservableCommitsClientTests.cs index da6bda02..961f0c76 100644 --- a/Octokit.Tests/Reactive/ObservableCommitsClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableCommitsClientTests.cs @@ -20,19 +20,6 @@ namespace Octokit.Tests.Reactive public class TheGetMethod { - [Fact] - public async Task EnsureNonNullArguments() - { - var client = new ObservableCommitsClient(Substitute.For()); - - await Assert.ThrowsAsync(() => client.Get(null, "name", "").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", null, "").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "name", null).ToTask()); - await Assert.ThrowsAsync(() => client.Get("", "name", "reference").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "", "reference").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "name", "").ToTask()); - } - [Fact] public async Task RequestsCorrectUrl() { @@ -43,34 +30,80 @@ namespace Octokit.Tests.Reactive gitHubClient.Git.Commit.Received(1).Get("owner", "name", "reference"); } + + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableCommitsClient(gitHubClient); + + client.Get(1, "reference"); + + gitHubClient.Git.Commit.Received(1).Get(1, "reference"); + } + + [Fact] + public void EnsureNonNullArguments() + { + var client = new ObservableCommitsClient(Substitute.For()); + + Assert.Throws(() => client.Get(null, "name", "")); + Assert.Throws(() => client.Get("owner", null, "")); + Assert.Throws(() => client.Get("owner", "name", null)); + + Assert.Throws(() => client.Get(1, null)); + + Assert.Throws(() => client.Get("", "name", "reference")); + Assert.Throws(() => client.Get("owner", "", "reference")); + Assert.Throws(() => client.Get("owner", "name", "")); + + Assert.Throws(() => client.Get(1, "")); + } } public class TheCreateMethod { [Fact] - public async Task EnsureNonNullArguments() - { - var client = new ObservableCommitsClient(Substitute.For()); - var newCommit = new NewCommit("message", "tree", new[] { "parent1", "parent2" }); - - await Assert.ThrowsAsync(() => client.Create(null, "name", newCommit).ToTask()); - await Assert.ThrowsAsync(() => client.Create("owner", null, newCommit).ToTask()); - await Assert.ThrowsAsync(() => client.Create("owner", "name", null).ToTask()); - await Assert.ThrowsAsync(() => client.Create("", "name", newCommit).ToTask()); - await Assert.ThrowsAsync(() => client.Create("owner", "", newCommit).ToTask()); - } - - [Fact] - public async Task RequestsCorrectUrl() + public async Task PostsToTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableCommitsClient(gitHubClient); + var newCommit = new NewCommit("message", "tree", new[] { "parent1", "parent2" }); client.Create("owner", "name", newCommit); gitHubClient.Git.Commit.Received().Create("owner", "name", newCommit); } + + [Fact] + public async Task PostsToTheCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableCommitsClient(gitHubClient); + + var newCommit = new NewCommit("message", "tree", new[] { "parent1", "parent2" }); + + client.Create(1, newCommit); + + gitHubClient.Git.Commit.Received().Create(1, newCommit); + } + + [Fact] + public async Task EnsureNonNullArguments() + { + var client = new ObservableCommitsClient(Substitute.For()); + var newCommit = new NewCommit("message", "tree", new[] { "parent1", "parent2" }); + + Assert.Throws(() => client.Create(null, "name", newCommit)); + Assert.Throws(() => client.Create("owner", null, newCommit)); + Assert.Throws(() => client.Create("owner", "name", null)); + + Assert.Throws(() => client.Create(1, null)); + + Assert.Throws(() => client.Create("", "name", newCommit)); + Assert.Throws(() => client.Create("owner", "", newCommit)); + } } } } \ No newline at end of file