diff --git a/Octokit.Tests/Clients/RepositoryPagesClientTests.cs b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs index 7afe1f7a..1addcc7a 100644 --- a/Octokit.Tests/Clients/RepositoryPagesClientTests.cs +++ b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs @@ -1,6 +1,6 @@ -using NSubstitute; -using System; +using System; using System.Threading.Tasks; +using NSubstitute; using Xunit; namespace Octokit.Tests.Clients @@ -13,23 +13,34 @@ namespace Octokit.Tests.Clients public void EnsuresNonNullArguments() { Assert.Throws( - () => new RepositoryPagesClient(null)); + () => new RepositoryPagesClient(null)); } } public class TheGetMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new RepositoryPagesClient(connection); - client.Get("fake", "repo"); + await client.Get("fake", "repo"); connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/pages")); } + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await client.Get(1); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repositories/1/pages")); + } + [Fact] public async Task EnsuresNonNullArguments() { @@ -44,16 +55,63 @@ namespace Octokit.Tests.Clients public class TheGetAllMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new RepositoryPagesClient(connection); - client.GetAll("fake", "repo"); + await client.GetAll("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/pages/builds"), Args.ApiOptions); } + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await client.GetAll(1); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/pages/builds"), Args.ApiOptions); + } + + [Fact] + public async Task RequestsCorrectUrlWithApiOptions() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + await client.GetAll("fake", "repo", options); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/pages/builds"), options); + } + + [Fact] + public async Task RequestsCorrectUrlWithApiOptionsWithRepositoryId() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + await client.GetAll(1, options); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/pages/builds"), options); + } + [Fact] public async Task EnsuresNonNullArguments() { @@ -63,13 +121,8 @@ namespace Octokit.Tests.Clients await Assert.ThrowsAsync(() => client.GetAll(null, "name", new ApiOptions())); await Assert.ThrowsAsync(() => client.GetAll("owner", null, new ApiOptions())); await Assert.ThrowsAsync(() => client.GetAll("owner", "name", null)); - } - [Fact] - public async Task EnsuresNonEmptyArguments() - { - var connection = Substitute.For(); - var client = new RepositoryPagesClient(connection); + await Assert.ThrowsAsync(() => client.GetAll(1, null)); await Assert.ThrowsAsync(() => client.GetAll("", "name", new ApiOptions())); await Assert.ThrowsAsync(() => client.GetAll("owner", "", new ApiOptions())); @@ -79,24 +132,35 @@ namespace Octokit.Tests.Clients public class TheGetLatestBuildMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new RepositoryPagesClient(connection); - client.GetLatest("fake", "repo"); + await client.GetLatest("fake", "repo"); connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/pages/builds/latest")); } + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new RepositoryPagesClient(connection); + + await client.GetLatest(1); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repositories/1/pages/builds/latest")); + } + [Fact] public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new RepositoryPagesClient(connection); - await Assert.ThrowsAsync(() => client.Get(null, "name")); - await Assert.ThrowsAsync(() => client.Get("owner", null)); + await Assert.ThrowsAsync(() => client.GetLatest(null, "name")); + await Assert.ThrowsAsync(() => client.GetLatest("owner", null)); } } } diff --git a/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs index 35311d7c..90ceef43 100644 --- a/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs @@ -16,38 +16,150 @@ namespace Octokit.Tests.Reactive } } - public class TheGetAllMethod + public class TheGetMethod { [Fact] public void RequestsCorrectUrl() { - var githubClient = Substitute.For(); - var client = new ObservableRepositoryPagesClient(githubClient); - var options = new ApiOptions(); + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); - client.GetAll("fake", "repo", options); - githubClient.Received().Repository.Page.GetAll("fake", "repo", options); + client.Get("fake", "repo"); + + gitHubClient.Received().Repository.Page.Get("fake", "repo"); + } + + [Fact] + public void RequestsCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + client.Get(1); + + gitHubClient.Received().Repository.Page.Get(1); } [Fact] public void EnsuresNonNullArguments() { - var githubClient = Substitute.For(); - var client = new ObservableRepositoryPagesClient(githubClient); + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); - Assert.Throws(() => client.GetAll(null, "repo", new ApiOptions())); - Assert.Throws(() => client.GetAll("owner", null, new ApiOptions())); - Assert.Throws(() => client.GetAll("owner", "repo", null)); + Assert.Throws(() => client.Get(null, "name")); + Assert.Throws(() => client.Get("owner", null)); + } + } + + public class TheGetAllMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + client.GetAll("fake", "repo"); + + gitHubClient.Received().Repository.Page.GetAll("fake", "repo"); } [Fact] - public void EnsuresNonEmptyArguments() + public void RequestsCorrectUrlWithRepositoryId() { - var githubClient = Substitute.For(); - var client = new ObservableRepositoryPagesClient(githubClient); + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); - Assert.Throws(() => client.GetAll("", "repo", new ApiOptions())); - Assert.Throws(() => client.GetAll("owner", "", new ApiOptions())); + client.GetAll(1); + + gitHubClient.Received().Repository.Page.GetAll(1); + } + + [Fact] + public void RequestsCorrectUrlWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAll("fake", "repo", options); + + gitHubClient.Received().Repository.Page.GetAll("fake", "repo", options); + } + + [Fact] + public void RequestsCorrectUrlWithApiOptionsWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAll(1, options); + + gitHubClient.Received().Repository.Page.GetAll(1, options); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + Assert.Throws(() => client.GetAll(null, "repo", ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", null, ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "repo", null)); + + Assert.Throws(() => client.GetAll(1, null)); + + Assert.Throws(() => client.GetAll("", "repo", ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "", ApiOptions.None)); + } + } + + public class TheGetLatestBuildMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + client.GetLatest("fake", "repo"); + + gitHubClient.Received().Repository.Page.GetLatest("fake", "repo"); + } + + [Fact] + public void RequestsCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + client.GetLatest(1); + + gitHubClient.Received().Repository.Page.GetLatest(1); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(gitHubClient); + + Assert.Throws(() => client.GetLatest(null, "name")); + Assert.Throws(() => client.GetLatest("owner", null)); } } }