diff --git a/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs b/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs index 28d06ccc..16df2d91 100644 --- a/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs +++ b/Octokit.Reactive/Clients/ObservableRepositoryPagesClient.cs @@ -7,9 +7,15 @@ namespace Octokit.Reactive { public class ObservableRepositoryPagesClient : IObservableRepositoryPagesClient { + private Func @for; readonly IRepositoryPagesClient _client; readonly IConnection _connection; + public ObservableRepositoryPagesClient(Func @for) + { + this.@for = @for; + } + public ObservableRepositoryPagesClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, "client"); diff --git a/Octokit.Tests.Integration/Clients/RepositoryPagesClientTests.cs b/Octokit.Tests.Integration/Clients/RepositoryPagesClientTests.cs index 42137555..71e9a0b7 100644 --- a/Octokit.Tests.Integration/Clients/RepositoryPagesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/RepositoryPagesClientTests.cs @@ -24,6 +24,7 @@ public class RepositoryPagesClientTests Assert.Equal("https://api.github.com/repos/octokit/octokit.net/pages", data.Url); } } + public class TheGetAllMethod { readonly IRepositoryPagesClient _repositoryPagesClient; diff --git a/Octokit.Tests/Clients/RepositoryPagesClientTests.cs b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs index 29932402..8c7a1f57 100644 --- a/Octokit.Tests/Clients/RepositoryPagesClientTests.cs +++ b/Octokit.Tests/Clients/RepositoryPagesClientTests.cs @@ -54,6 +54,16 @@ namespace Octokit.Tests.Clients 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("", "name", new ApiOptions())); + await Assert.ThrowsAsync(() => client.GetAll("owner", "", new ApiOptions())); + } } public class TheGetLatestBuildMethod diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 8aee294e..2051df68 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -216,6 +216,7 @@ + diff --git a/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs new file mode 100644 index 00000000..133547cb --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableRepositoryPagesClientTests.cs @@ -0,0 +1,48 @@ +using System; +using NSubstitute; +using Octokit.Reactive; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableRepositoryPagesClientTests + { + public class TheGetAllMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var githubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(githubClient); + var options = new ApiOptions(); + + client.GetAll("fake", "repo", options); + + githubClient.Repository.Page.Received().GetAll("fake", "repo", options); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var githubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(githubClient); + var options = new ApiOptions(); + + Assert.Throws(() => client.GetAll(null, "repo", new ApiOptions())); + Assert.Throws(() => client.GetAll("owner", null, new ApiOptions())); + Assert.Throws(() => client.GetAll("owner", "repo", null)); + } + + [Fact] + public void EnsuresNonEmptyArguments() + { + var githubClient = Substitute.For(); + var client = new ObservableRepositoryPagesClient(githubClient); + var options = new ApiOptions(); + + Assert.Throws(() => client.GetAll("", "repo", new ApiOptions())); + Assert.Throws(() => client.GetAll("owner", "", new ApiOptions())); + } + } + } +}