From cb1dcf6fd6acccdee40e63342cd23dadfd758bf9 Mon Sep 17 00:00:00 2001 From: Alexander Efremov Date: Mon, 13 Jun 2016 22:53:21 +0700 Subject: [PATCH] added new unit tests --- Octokit.Tests/Clients/EventsClientTests.cs | 213 ++++++++++++------ .../Reactive/ObservableEventsClientTests.cs | 183 +++++++++++++-- 2 files changed, 311 insertions(+), 85 deletions(-) diff --git a/Octokit.Tests/Clients/EventsClientTests.cs b/Octokit.Tests/Clients/EventsClientTests.cs index d6171804..6f543f7d 100644 --- a/Octokit.Tests/Clients/EventsClientTests.cs +++ b/Octokit.Tests/Clients/EventsClientTests.cs @@ -25,17 +25,18 @@ namespace Octokit.Tests.Clients public class TheGetAllMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAll(); + await client.GetAll(); connection.Received().GetAll(Arg.Is(u => u.ToString() == "events"), Args.ApiOptions); } + [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -47,7 +48,7 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAll(options); + await client.GetAll(options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "events"), options); } @@ -65,17 +66,29 @@ namespace Octokit.Tests.Clients public class TheGetAllForRepositoryMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllForRepository("fake", "repo"); + await client.GetAllForRepository("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/events"), Args.ApiOptions); } + [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new EventsClient(connection); + + await client.GetAllForRepository(1); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/events"), Args.ApiOptions); + } + + [Fact] + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -87,24 +100,46 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - - client.GetAllForRepository("fake", "repo", options); + await client.GetAllForRepository("fake", "repo", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task RequestsCorrectUrlWithRepositoryIdWithApiOptions() + { + var connection = Substitute.For(); + var client = new EventsClient(connection); + + var options = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 1 + }; + + await client.GetAllForRepository(1, options); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/events"), options); + } + + [Fact] + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllForRepository(null, "name")); - await Assert.ThrowsAsync(() => client.GetAllForRepository("", "name")); await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", null)); + await Assert.ThrowsAsync(() => client.GetAllForRepository(null, "name", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", null, ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.GetAllForRepository(1, null)); + + await Assert.ThrowsAsync(() => client.GetAllForRepository("", "name")); await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "")); - await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "name",null)); - await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "",ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "", ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllForRepository("", "name", ApiOptions.None)); } } @@ -112,17 +147,29 @@ namespace Octokit.Tests.Clients public class TheGetAllIssuesForRepositoryMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllIssuesForRepository("fake", "repo"); + await client.GetAllIssuesForRepository("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/events"), Args.ApiOptions); } + [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new EventsClient(connection); + + await client.GetAllIssuesForRepository(1); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/issues/events"), Args.ApiOptions); + } + + [Fact] + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -134,23 +181,45 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - - client.GetAllIssuesForRepository("fake", "repo", options); + await client.GetAllIssuesForRepository("fake", "repo", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task RequestsCorrectUrlWithRepositoryIdWithApiOptions() + { + var connection = Substitute.For(); + var client = new EventsClient(connection); + + var options = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 1 + }; + + await client.GetAllIssuesForRepository(1, options); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repositories/1/issues/events"), options); + } + + [Fact] + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository(null, "name")); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("", "name")); await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", null)); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", "")); + await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository(null, "name", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", null, ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository(1, null)); + + await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("", "name")); + await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", "")); await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", "", ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("", "name", ApiOptions.None)); } @@ -159,18 +228,18 @@ namespace Octokit.Tests.Clients public class TheGetAllForRepositoryNetworkMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllForRepositoryNetwork("fake", "repo"); + await client.GetAllForRepositoryNetwork("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "networks/fake/repo/events"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -182,22 +251,26 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllForRepositoryNetwork("fake", "repo", options); + await client.GetAllForRepositoryNetwork("fake", "repo", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "networks/fake/repo/events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork(null, "name")); - await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("", "name")); await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", null)); - await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", "")); + + await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork(null, "name", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", null, ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("", "name")); + await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", "")); await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("owner", "", ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllForRepositoryNetwork("", "name", ApiOptions.None)); } @@ -206,18 +279,18 @@ namespace Octokit.Tests.Clients public class TheGetAllForOrganizationMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllForOrganization("fake"); + await client.GetAllForOrganization("fake"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/fake/events"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -229,20 +302,21 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllForOrganization("fake", options); + await client.GetAllForOrganization("fake", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "orgs/fake/events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllForOrganization(null)); - await Assert.ThrowsAsync(() => client.GetAllForOrganization("")); await Assert.ThrowsAsync(() => client.GetAllForOrganization("fake", null)); + + await Assert.ThrowsAsync(() => client.GetAllForOrganization("")); await Assert.ThrowsAsync(() => client.GetAllForOrganization("", ApiOptions.None)); } } @@ -250,18 +324,18 @@ namespace Octokit.Tests.Clients public class TheGetUserReceivedMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllUserReceived("fake"); + await client.GetAllUserReceived("fake"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/received_events"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -273,20 +347,21 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllUserReceived("fake", options); + await client.GetAllUserReceived("fake", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/received_events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllUserReceived(null)); - await Assert.ThrowsAsync(() => client.GetAllUserReceived("")); await Assert.ThrowsAsync(() => client.GetAllUserReceived("fake", null)); + + await Assert.ThrowsAsync(() => client.GetAllUserReceived("")); await Assert.ThrowsAsync(() => client.GetAllUserReceived("", ApiOptions.None)); } } @@ -294,18 +369,18 @@ namespace Octokit.Tests.Clients public class TheGetUserReceivedPublicMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllUserReceivedPublic("fake"); + await client.GetAllUserReceivedPublic("fake"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/received_events/public"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -317,20 +392,21 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllUserReceivedPublic("fake", options); + await client.GetAllUserReceivedPublic("fake", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/received_events/public"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllUserReceivedPublic(null)); - await Assert.ThrowsAsync(() => client.GetAllUserReceivedPublic("")); await Assert.ThrowsAsync(() => client.GetAllUserReceivedPublic("fake", null)); + + await Assert.ThrowsAsync(() => client.GetAllUserReceivedPublic("")); await Assert.ThrowsAsync(() => client.GetAllUserReceivedPublic("", ApiOptions.None)); } } @@ -338,18 +414,18 @@ namespace Octokit.Tests.Clients public class TheGetUserPerformedMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllUserPerformed("fake"); + await client.GetAllUserPerformed("fake"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -361,20 +437,21 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllUserPerformed("fake", options); + await client.GetAllUserPerformed("fake", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllUserPerformed(null)); - await Assert.ThrowsAsync(() => client.GetAllUserPerformed("")); await Assert.ThrowsAsync(() => client.GetAllUserPerformed("fake", null)); + + await Assert.ThrowsAsync(() => client.GetAllUserPerformed("")); await Assert.ThrowsAsync(() => client.GetAllUserPerformed("", ApiOptions.None)); } } @@ -382,18 +459,18 @@ namespace Octokit.Tests.Clients public class TheGetUserPerformedPublicMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllUserPerformedPublic("fake"); + await client.GetAllUserPerformedPublic("fake"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events/public"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -405,39 +482,40 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllUserPerformedPublic("fake", options); + await client.GetAllUserPerformedPublic("fake", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events/public"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic(null)); + await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic("fake", null)); + await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic("")); - await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic("fake",null)); - await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic("",ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllUserPerformedPublic("", ApiOptions.None)); } } public class TheGetForAnOrganizationMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new EventsClient(connection); - client.GetAllForAnOrganization("fake", "org"); + await client.GetAllForAnOrganization("fake", "org"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events/orgs/org"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithApiOptions() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new EventsClient(connection); @@ -449,22 +527,25 @@ namespace Octokit.Tests.Clients StartPage = 1 }; - client.GetAllForAnOrganization("fake", "org", options); + await client.GetAllForAnOrganization("fake", "org", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "users/fake/events/orgs/org"), options); } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new EventsClient(connection); await Assert.ThrowsAsync(() => client.GetAllForAnOrganization(null, "org")); - await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("", "org")); await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", null)); - await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", "")); + await Assert.ThrowsAsync(() => client.GetAllForAnOrganization(null, "org", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", null, ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", "org", null)); + + await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("", "org")); + await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", "")); await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("fake", "", ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAllForAnOrganization("", "org", ApiOptions.None)); } diff --git a/Octokit.Tests/Reactive/ObservableEventsClientTests.cs b/Octokit.Tests/Reactive/ObservableEventsClientTests.cs index bccf493c..8d06a257 100644 --- a/Octokit.Tests/Reactive/ObservableEventsClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableEventsClientTests.cs @@ -32,6 +32,33 @@ namespace Octokit.Tests.Reactive gitHubClient.Connection.Received(1).Get>(new Uri("events", UriKind.Relative), Args.EmptyDictionary, null); } + + [Fact] + public void RequestsCorrectUrlWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + var options = new ApiOptions + { + PageSize = 1, + PageCount = 1, + StartPage = 1 + }; + + client.GetAll(options); + + gitHubClient.Connection.Received().Get>(new Uri("events", UriKind.Relative), Arg.Is>(d => d.Count == 2), null); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + Assert.Throws(() => client.GetAll(null)); + } } public class TheGetAllForRepositoryMethod @@ -44,19 +71,78 @@ namespace Octokit.Tests.Reactive client.GetAllForRepository("fake", "repo"); - gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/events", UriKind.Relative), Args.EmptyDictionary, null); + gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/events", UriKind.Relative), + Args.EmptyDictionary, null); } [Fact] - public async Task EnsuresArgumentsNotNull() + public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); - await Assert.ThrowsAsync(() => client.GetAllForRepository(null, "name").ToTask()); - await Assert.ThrowsAsync(() => client.GetAllForRepository("", "name").ToTask()); - await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", null).ToTask()); - await Assert.ThrowsAsync(() => client.GetAllForRepository("owner", "").ToTask()); + client.GetAllForRepository(1); + + gitHubClient.Connection.Received(1).Get>(new Uri("repositories/1/events", UriKind.Relative), + Args.EmptyDictionary, null); + } + + [Fact] + public void RequestsCorrectUrlWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAllForRepository("fake", "repo", options); + + gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/events", UriKind.Relative), + Arg.Is>(d => d.Count == 2), null); + } + + [Fact] + public void RequestsCorrectUrlWithRepositoryIdWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + var apiOptions = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAllForRepository(1, apiOptions); + + gitHubClient.Connection.Received(1).Get>(new Uri("repositories/1/events", UriKind.Relative), + Arg.Is>(d => d.Count == 2), null); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + Assert.Throws(() => client.GetAllForRepository(null, "name")); + Assert.Throws(() => client.GetAllForRepository("owner", null)); + Assert.Throws(() => client.GetAllForRepository(null, "name", ApiOptions.None)); + Assert.Throws(() => client.GetAllForRepository("owner", null, ApiOptions.None)); + Assert.Throws(() => client.GetAllForRepository("owner", "name", null)); + + Assert.Throws(() => client.GetAllForRepository(1, null)); + + Assert.Throws(() => client.GetAllForRepository("", "name")); + Assert.Throws(() => client.GetAllForRepository("owner", "")); + Assert.Throws(() => client.GetAllForRepository("", "name", ApiOptions.None)); + Assert.Throws(() => client.GetAllForRepository("owner", "", ApiOptions.None)); } } @@ -70,19 +156,78 @@ namespace Octokit.Tests.Reactive client.GetAllIssuesForRepository("fake", "repo"); - gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/issues/events", UriKind.Relative), Args.EmptyDictionary, null); + gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/issues/events", UriKind.Relative), + Args.EmptyDictionary, null); } [Fact] - public async Task EnsuresArgumentsNotNull() + public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository(null, "name").ToTask()); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("", "name").ToTask()); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", null).ToTask()); - await Assert.ThrowsAsync(() => client.GetAllIssuesForRepository("owner", "").ToTask()); + client.GetAllIssuesForRepository(1); + + gitHubClient.Connection.Received(1).Get>(new Uri("repositories/1/issues/events", UriKind.Relative), + Args.EmptyDictionary, null); + } + + [Fact] + public void RequestsCorrectUrlWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAllIssuesForRepository("fake", "repo", options); + + gitHubClient.Connection.Received(1).Get>(new Uri("repos/fake/repo/issues/events", UriKind.Relative), + Arg.Is>(d => d.Count == 2), null); + } + + [Fact] + public void RequestsCorrectUrlWithRepositoryIdWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAllIssuesForRepository(1, options); + + gitHubClient.Connection.Received(1).Get>(new Uri("repositories/1/issues/events", UriKind.Relative), + Arg.Is>(d => d.Count == 2), null); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var gitHubClient = Substitute.For(); + var client = new ObservableEventsClient(gitHubClient); + + Assert.Throws(() => client.GetAllIssuesForRepository(null, "name")); + Assert.Throws(() => client.GetAllIssuesForRepository("owner", null)); + Assert.Throws(() => client.GetAllIssuesForRepository(null, "name", ApiOptions.None)); + Assert.Throws(() => client.GetAllIssuesForRepository("owner", null, ApiOptions.None)); + Assert.Throws(() => client.GetAllIssuesForRepository("owner", "name", null)); + + Assert.Throws(() => client.GetAllIssuesForRepository(1, null)); + + Assert.Throws(() => client.GetAllIssuesForRepository("", "name")); + Assert.Throws(() => client.GetAllIssuesForRepository("owner", "")); + Assert.Throws(() => client.GetAllIssuesForRepository("", "name", ApiOptions.None)); + Assert.Throws(() => client.GetAllIssuesForRepository("owner", "", ApiOptions.None)); } } @@ -100,7 +245,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -126,7 +271,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -150,7 +295,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -174,7 +319,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -198,7 +343,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -222,7 +367,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient); @@ -246,7 +391,7 @@ namespace Octokit.Tests.Reactive } [Fact] - public async Task EnsuresArgumentsNotNull() + public async Task EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableEventsClient(gitHubClient);