From 73605ebf676c2ebdc55ccec07af9fbb2f67c552f Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Wed, 8 Jun 2016 22:23:56 +0700 Subject: [PATCH 1/5] added new overloads on clients --- .../IObservableRepositoryForksClient.cs | 21 ++++++++ .../ObservableRepositoryForksClient.cs | 48 ++++++++++++++++-- .../Clients/RepositoryForksClientTests.cs | 2 +- .../Clients/RepositoryForksClientTests.cs | 6 +-- Octokit/Clients/IRepositoryForksClient.cs | 21 ++++++++ Octokit/Clients/RepositoryForksClient.cs | 49 +++++++++++++++++-- 6 files changed, 136 insertions(+), 11 deletions(-) diff --git a/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs b/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs index bac871d5..212d582b 100644 --- a/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs +++ b/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs @@ -4,12 +4,33 @@ namespace Octokit.Reactive { public interface IObservableRepositoryForksClient { + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + IObservable GetAll(string owner, string repositoryName); + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + IObservable GetAll(string owner, string repositoryName, ApiOptions options); + /// /// Gets the list of forks defined for a repository /// /// See API documentation for more information. /// IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request); + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options); /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. diff --git a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs index 3238cd6c..d011bc19 100644 --- a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs +++ b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs @@ -16,10 +16,38 @@ namespace Octokit.Reactive public ObservableRepositoryForksClient(IGitHubClient client) { Ensure.ArgumentNotNull(client, "client"); + _client = client.Repository.Forks; _connection = client.Connection; } + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public IObservable GetAll(string owner, string repositoryName) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + + return GetAll(owner, repositoryName, ApiOptions.None); + } + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public IObservable GetAll(string owner, string repositoryName, ApiOptions options) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(options, "options"); + + return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), options); + } + /// /// Gets the list of forks defined for a repository /// @@ -29,10 +57,24 @@ namespace Octokit.Reactive { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(request, "request"); - return request == null - ? _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName)) - : _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary()); + return GetAll(owner, repositoryName, request, ApiOptions.None); + } + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(request, "request"); + Ensure.ArgumentNotNull(options, "options"); + + return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); } /// diff --git a/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs b/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs index 3f7c5af7..a0d73878 100644 --- a/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs +++ b/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs @@ -13,7 +13,7 @@ namespace Octokit.Tests.Integration.Clients { var github = Helper.GetAuthenticatedClient(); - var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", null); + var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net"); var masterFork = forks.FirstOrDefault(fork => fork.FullName == "TeamBinary/octokit.net"); Assert.NotNull(masterFork); diff --git a/Octokit.Tests/Clients/RepositoryForksClientTests.cs b/Octokit.Tests/Clients/RepositoryForksClientTests.cs index acc0f47a..28474a7b 100644 --- a/Octokit.Tests/Clients/RepositoryForksClientTests.cs +++ b/Octokit.Tests/Clients/RepositoryForksClientTests.cs @@ -26,7 +26,7 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new RepositoriesClient(connection); - client.Forks.GetAll("fake", "repo", null); + client.Forks.GetAll("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks")); } @@ -49,8 +49,8 @@ namespace Octokit.Tests.Clients { var client = new RepositoriesClient(Substitute.For()); - await Assert.ThrowsAsync(() => client.Forks.GetAll(null, "name", null)); - await Assert.ThrowsAsync(() => client.Forks.GetAll("owner", null, null)); + await Assert.ThrowsAsync(() => client.Forks.GetAll(null, "name")); + await Assert.ThrowsAsync(() => client.Forks.GetAll("owner", null)); } } diff --git a/Octokit/Clients/IRepositoryForksClient.cs b/Octokit/Clients/IRepositoryForksClient.cs index 8d026244..76ac2864 100644 --- a/Octokit/Clients/IRepositoryForksClient.cs +++ b/Octokit/Clients/IRepositoryForksClient.cs @@ -5,12 +5,33 @@ namespace Octokit { public interface IRepositoryForksClient { + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + Task> GetAll(string owner, string repositoryName); + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + Task> GetAll(string owner, string repositoryName, ApiOptions options); + /// /// Gets the list of forks defined for a repository /// /// See API documentation for more information. /// Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request); + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options); /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. diff --git a/Octokit/Clients/RepositoryForksClient.cs b/Octokit/Clients/RepositoryForksClient.cs index c45a634b..91920403 100644 --- a/Octokit/Clients/RepositoryForksClient.cs +++ b/Octokit/Clients/RepositoryForksClient.cs @@ -19,14 +19,55 @@ namespace Octokit /// /// See API documentation for more information. /// - public Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request) + public Task> GetAll(string owner, string repositoryName) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); - return request == null - ? ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName)) - : ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary()); + return GetAll(owner, repositoryName, ApiOptions.None); + } + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public Task> GetAll(string owner, string repositoryName, ApiOptions options) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(options, "options"); + + return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), options); + } + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(request, "request"); + + return GetAll(owner, repositoryName, request, ApiOptions.None); + } + + /// + /// Gets the list of forks defined for a repository + /// + /// See API documentation for more information. + /// + public Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options) + { + Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); + Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNull(request, "request"); + Ensure.ArgumentNotNull(options, "options"); + + return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); } /// From be141ee6f5633e974f66833dab52170849ae2a2d Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Wed, 8 Jun 2016 23:10:59 +0700 Subject: [PATCH 2/5] added integration tests --- .../Clients/RepositoryForksClientTests.cs | 170 ++++++++++++++++++ .../Clients/RepositoryForksClientTests.cs | 97 +++++++--- Octokit.Tests/Octokit.Tests.csproj | 1 + .../ObservableRepositoryForksClientTests.cs | 143 +++++++++++++++ 4 files changed, 387 insertions(+), 24 deletions(-) create mode 100644 Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs diff --git a/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs b/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs index a0d73878..5c19b2b2 100644 --- a/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs +++ b/Octokit.Tests.Integration/Clients/RepositoryForksClientTests.cs @@ -20,6 +20,176 @@ namespace Octokit.Tests.Integration.Clients Assert.Equal("TeamBinary", masterFork.Owner.Login); } + [IntegrationTest] + public async Task ReturnsCorrectCountOfForksWithoutStart() + { + var github = Helper.GetAuthenticatedClient(); + + var options = new ApiOptions + { + PageCount = 1, + PageSize = 1 + }; + + var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", options); + + Assert.Equal(1, forks.Count); + } + + [IntegrationTest] + public async Task ReturnsCorrectCountOfForksWithStart() + { + var github = Helper.GetAuthenticatedClient(); + + var options = new ApiOptions + { + PageCount = 1, + PageSize = 1, + StartPage = 1 + }; + + var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", options); + + Assert.Equal(1, forks.Count); + } + + [IntegrationTest] + public async Task ReturnsDistinctForksBasedOnStartPage() + { + var github = Helper.GetAuthenticatedClient(); + + var startOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 1 + }; + + var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", startOptions); + + var skipStartOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 2 + }; + + var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", skipStartOptions); + + Assert.Equal(3, firstPage.Count); + Assert.Equal(3, secondPage.Count); + Assert.NotEqual(firstPage[0].Id, secondPage[0].Id); + Assert.NotEqual(firstPage[1].Id, secondPage[1].Id); + Assert.NotEqual(firstPage[2].Id, secondPage[2].Id); + } + + [IntegrationTest] + public async Task ReturnsCorrectCountOfForksWithoutStartParameterized() + { + var github = Helper.GetAuthenticatedClient(); + + var options = new ApiOptions + { + PageCount = 1, + PageSize = 1 + }; + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest }; + + var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, options); + + Assert.Equal(1, forks.Count); + } + + [IntegrationTest] + public async Task ReturnsCorrectCountOfForksWithStartParameterized() + { + var github = Helper.GetAuthenticatedClient(); + + var options = new ApiOptions + { + PageCount = 1, + PageSize = 1, + StartPage = 1 + }; + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest }; + + var forks = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, options); + + Assert.Equal(1, forks.Count); + } + + [IntegrationTest] + public async Task ReturnsDistinctForksBasedOnStartPageParameterized() + { + var github = Helper.GetAuthenticatedClient(); + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Newest }; + + var startOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 1 + }; + + var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, startOptions); + + var skipStartOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 2 + }; + + var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, skipStartOptions); + + Assert.Equal(3, firstPage.Count); + Assert.Equal(3, secondPage.Count); + Assert.NotEqual(firstPage[0].Id, secondPage[0].Id); + Assert.NotEqual(firstPage[1].Id, secondPage[1].Id); + Assert.NotEqual(firstPage[2].Id, secondPage[2].Id); + } + + [IntegrationTest] + public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirstWithApiOptions() + { + var github = Helper.GetAuthenticatedClient(); + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Oldest }; + + var startOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 1 + }; + + var firstPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, startOptions); + var firstPageOrdered = firstPage.OrderBy(r => r.CreatedAt).ToList(); + + var skipStartOptions = new ApiOptions + { + PageCount = 1, + PageSize = 3, + StartPage = 1 + }; + + var secondPage = await github.Repository.Forks.GetAll("octokit", "octokit.net", repositoryForksListRequest, skipStartOptions); + var secondPageOrdered = secondPage.OrderBy(r => r.CreatedAt).ToList(); + + for (var index = 0; index < firstPage.Count; index++) + { + Assert.Equal(firstPageOrdered[index].FullName, firstPage[index].FullName); + } + + for (var index = 0; index < firstPage.Count; index++) + { + Assert.Equal(secondPageOrdered[index].FullName, secondPage[index].FullName); + } + } + [IntegrationTest] public async Task ReturnsForksForRepositorySortingTheResultWithOldestFirst() { diff --git a/Octokit.Tests/Clients/RepositoryForksClientTests.cs b/Octokit.Tests/Clients/RepositoryForksClientTests.cs index 28474a7b..a5f436e0 100644 --- a/Octokit.Tests/Clients/RepositoryForksClientTests.cs +++ b/Octokit.Tests/Clients/RepositoryForksClientTests.cs @@ -21,36 +21,93 @@ namespace Octokit.Tests.Clients public class TheGetAllMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new RepositoriesClient(connection); - client.Forks.GetAll("fake", "repo"); + await client.Forks.GetAll("fake", "repo"); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks")); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), Args.ApiOptions); } [Fact] - public void RequestsCorrectUrlWithRequestParameters() + public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); var client = new RepositoriesClient(connection); - client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }); + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + await client.Forks.GetAll("fake", "repo", options); + + connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), options); + } + + [Fact] + public async Task RequestsCorrectUrlWithRequestParameters() + { + var connection = Substitute.For(); + var client = new RepositoriesClient(connection); + + await client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }); connection.Received().GetAll( Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), - Arg.Is>(d => d["sort"] == "stargazers")); + Arg.Is>(d => d["sort"] == "stargazers"), Args.ApiOptions); + } + + [Fact] + public async Task RequestsCorrectUrlWithRequestParametersWithApiOptions() + { + var connection = Substitute.For(); + var client = new RepositoriesClient(connection); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + await client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }, options); + + connection.Received().GetAll( + Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), + Arg.Is>(d => d["sort"] == "stargazers"), options); } [Fact] public async Task EnsuresNonNullArguments() { - var client = new RepositoriesClient(Substitute.For()); + var client = new RepositoryForksClient(Substitute.For()); - await Assert.ThrowsAsync(() => client.Forks.GetAll(null, "name")); - await Assert.ThrowsAsync(() => client.Forks.GetAll("owner", null)); + await Assert.ThrowsAsync(() => client.GetAll(null, "name")); + await Assert.ThrowsAsync(() => client.GetAll("owner", null)); + await Assert.ThrowsAsync(() => client.GetAll(null, "name", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", null, ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", "name", (ApiOptions)null)); + await Assert.ThrowsAsync(() => client.GetAll(null, "name", new RepositoryForksListRequest())); + await Assert.ThrowsAsync(() => client.GetAll("owner", null, new RepositoryForksListRequest())); + await Assert.ThrowsAsync(() => client.GetAll("owner", "name", (RepositoryForksListRequest)null)); + await Assert.ThrowsAsync(() => client.GetAll(null, "name", new RepositoryForksListRequest(), ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", null, new RepositoryForksListRequest(), ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", "name", null, ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", "name", new RepositoryForksListRequest(), null)); + + await Assert.ThrowsAsync(() => client.GetAll("", "name")); + await Assert.ThrowsAsync(() => client.GetAll("owner", "")); + await Assert.ThrowsAsync(() => client.GetAll("", "name", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", "", ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("", "name", new RepositoryForksListRequest())); + await Assert.ThrowsAsync(() => client.GetAll("owner", "", new RepositoryForksListRequest())); + await Assert.ThrowsAsync(() => client.GetAll("", "name", new RepositoryForksListRequest(), ApiOptions.None)); + await Assert.ThrowsAsync(() => client.GetAll("owner", "", new RepositoryForksListRequest(), ApiOptions.None)); } } @@ -61,6 +118,7 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var client = new RepositoriesClient(connection); + var newRepositoryFork = new NewRepositoryFork(); client.Forks.Create("fake", "repo", newRepositoryFork); @@ -71,23 +129,14 @@ namespace Octokit.Tests.Clients [Fact] public async Task EnsuresNonNullArguments() { - var client = new RepositoriesClient(Substitute.For()); + var client = new RepositoryForksClient(Substitute.For()); - await Assert.ThrowsAsync(() => client.Forks.Create(null, "name", new NewRepositoryFork())); - await Assert.ThrowsAsync(() => client.Forks.Create("owner", null, new NewRepositoryFork())); - await Assert.ThrowsAsync(() => client.Forks.Create("owner", "name", null)); - } + await Assert.ThrowsAsync(() => client.Create(null, "name", new NewRepositoryFork())); + await Assert.ThrowsAsync(() => client.Create("owner", null, new NewRepositoryFork())); + await Assert.ThrowsAsync(() => client.Create("owner", "name", null)); - [Fact] - public void UsesTheSuppliedHook() - { - var connection = Substitute.For(); - var client = new RepositoriesClient(connection); - var newRepositoryFork = new NewRepositoryFork { Organization = "aName" }; - - client.Forks.Create("owner", "repo", newRepositoryFork); - - connection.Received().Post(Arg.Any(), newRepositoryFork); + await Assert.ThrowsAsync(() => client.Create("", "name", new NewRepositoryFork())); + await Assert.ThrowsAsync(() => client.Create("owner", "", new NewRepositoryFork())); } } } diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 34824301..f9a3d74c 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -228,6 +228,7 @@ + diff --git a/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs new file mode 100644 index 00000000..20f2756c --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs @@ -0,0 +1,143 @@ +using System; +using NSubstitute; +using Octokit.Reactive; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableRepositoryForksClientTests + { + public class TheCtor + { + [Fact] + public void EnsuresNonNullArguments() + { + Assert.Throws( + () => new ObservableRepositoryForksClient(null)); + } + } + + public class TheGetAllMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryForksClient(gitHubClient); + + client.GetAll("fake", "repo"); + + gitHubClient.Received().Repository.Forks.GetAll("fake", "repo"); + } + + [Fact] + public void RequestsCorrectUrlWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryForksClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + client.GetAll("fake", "repo", options); + + gitHubClient.Received().Repository.Forks.GetAll("fake", "repo", options); + } + + [Fact] + public void RequestsCorrectUrlWithRequestParameters() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryForksClient(gitHubClient); + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Stargazers }; + + client.GetAll("fake", "repo", repositoryForksListRequest); + + gitHubClient.Received().Repository.Forks.GetAll( + "fake", "repo", repositoryForksListRequest); + } + + [Fact] + public void RequestsCorrectUrlWithRequestParametersWithApiOptions() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryForksClient(gitHubClient); + + var options = new ApiOptions + { + PageCount = 1, + StartPage = 1, + PageSize = 1 + }; + + var repositoryForksListRequest = new RepositoryForksListRequest { Sort = Sort.Stargazers }; + + client.GetAll("fake", "repo", repositoryForksListRequest, options); + + gitHubClient.Received().Repository.Forks.GetAll("fake", "name", repositoryForksListRequest, options); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var client = new ObservableRepositoryForksClient(Substitute.For()); + + Assert.Throws(() => client.GetAll(null, "name")); + Assert.Throws(() => client.GetAll("owner", null)); + Assert.Throws(() => client.GetAll(null, "name", ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", null, ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "name", (ApiOptions)null)); + Assert.Throws(() => client.GetAll(null, "name", new RepositoryForksListRequest())); + Assert.Throws(() => client.GetAll("owner", null, new RepositoryForksListRequest())); + Assert.Throws(() => client.GetAll("owner", "name", (RepositoryForksListRequest)null)); + Assert.Throws(() => client.GetAll(null, "name", new RepositoryForksListRequest(), ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", null, new RepositoryForksListRequest(), ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "name", null, ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "name", new RepositoryForksListRequest(), null)); + + Assert.Throws(() => client.GetAll("", "name")); + Assert.Throws(() => client.GetAll("owner", "")); + Assert.Throws(() => client.GetAll("", "name", ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "", ApiOptions.None)); + Assert.Throws(() => client.GetAll("", "name", new RepositoryForksListRequest())); + Assert.Throws(() => client.GetAll("owner", "", new RepositoryForksListRequest())); + Assert.Throws(() => client.GetAll("", "name", new RepositoryForksListRequest(), ApiOptions.None)); + Assert.Throws(() => client.GetAll("owner", "", new RepositoryForksListRequest(), ApiOptions.None)); + } + } + + public class TheCreateMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var gitHubClient = Substitute.For(); + var client = new ObservableRepositoryForksClient(gitHubClient); + + var newRepositoryFork = new NewRepositoryFork(); + + client.Create("fake", "repo", newRepositoryFork); + + gitHubClient.Received().Repository.Forks.Create("fake", "repo", newRepositoryFork); + } + + [Fact] + public void EnsuresNonNullArguments() + { + var client = new ObservableRepositoryForksClient(Substitute.For()); + + Assert.Throws(() => client.Create(null, "name", new NewRepositoryFork())); + Assert.Throws(() => client.Create("owner", null, new NewRepositoryFork())); + Assert.Throws(() => client.Create("owner", "name", null)); + + Assert.Throws(() => client.Create("", "name", new NewRepositoryFork())); + Assert.Throws(() => client.Create("owner", "", new NewRepositoryFork())); + } + } + } +} From 6ad491bd5759dbf0bd41661f1d6f1a9ac4a2a372 Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Thu, 9 Jun 2016 14:43:42 +0700 Subject: [PATCH 3/5] fixed remarks --- Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs | 5 ++--- Octokit/Clients/RepositoryForksClient.cs | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs index d011bc19..f4c2a0f3 100644 --- a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs +++ b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs @@ -57,7 +57,6 @@ namespace Octokit.Reactive { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); - Ensure.ArgumentNotNull(request, "request"); return GetAll(owner, repositoryName, request, ApiOptions.None); } @@ -71,10 +70,10 @@ namespace Octokit.Reactive { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); - Ensure.ArgumentNotNull(request, "request"); Ensure.ArgumentNotNull(options, "options"); - return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); + return request == null ? _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), options) : + _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); } /// diff --git a/Octokit/Clients/RepositoryForksClient.cs b/Octokit/Clients/RepositoryForksClient.cs index 91920403..749a9418 100644 --- a/Octokit/Clients/RepositoryForksClient.cs +++ b/Octokit/Clients/RepositoryForksClient.cs @@ -50,7 +50,6 @@ namespace Octokit { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); - Ensure.ArgumentNotNull(request, "request"); return GetAll(owner, repositoryName, request, ApiOptions.None); } @@ -64,10 +63,11 @@ namespace Octokit { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); - Ensure.ArgumentNotNull(request, "request"); Ensure.ArgumentNotNull(options, "options"); - return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); + return request == null + ? ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), options) : + ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); } /// From cf683f0582c104e9a0d1e0ef7d59e7359d2ee2b6 Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Thu, 9 Jun 2016 14:47:55 +0700 Subject: [PATCH 4/5] fixed unut tests --- .../Clients/RepositoryForksClientTests.cs | 30 +++++++++---------- .../ObservableRepositoryForksClientTests.cs | 2 -- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/Octokit.Tests/Clients/RepositoryForksClientTests.cs b/Octokit.Tests/Clients/RepositoryForksClientTests.cs index a5f436e0..32d8bccb 100644 --- a/Octokit.Tests/Clients/RepositoryForksClientTests.cs +++ b/Octokit.Tests/Clients/RepositoryForksClientTests.cs @@ -1,7 +1,7 @@ -using NSubstitute; -using System; +using System; using System.Collections.Generic; using System.Threading.Tasks; +using NSubstitute; using Xunit; namespace Octokit.Tests.Clients @@ -14,7 +14,7 @@ namespace Octokit.Tests.Clients public void EnsuresNonNullArguments() { Assert.Throws( - () => new RepositoryForksClient(null)); + () => new RepositoryForksClient(null)); } } @@ -24,9 +24,9 @@ namespace Octokit.Tests.Clients public async Task RequestsCorrectUrl() { var connection = Substitute.For(); - var client = new RepositoriesClient(connection); + var client = new RepositoryForksClient(connection); - await client.Forks.GetAll("fake", "repo"); + await client.GetAll("fake", "repo"); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), Args.ApiOptions); } @@ -35,7 +35,7 @@ namespace Octokit.Tests.Clients public async Task RequestsCorrectUrlWithApiOptions() { var connection = Substitute.For(); - var client = new RepositoriesClient(connection); + var client = new RepositoryForksClient(connection); var options = new ApiOptions { @@ -44,7 +44,7 @@ namespace Octokit.Tests.Clients PageSize = 1 }; - await client.Forks.GetAll("fake", "repo", options); + await client.GetAll("fake", "repo", options); connection.Received().GetAll(Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), options); } @@ -53,9 +53,9 @@ namespace Octokit.Tests.Clients public async Task RequestsCorrectUrlWithRequestParameters() { var connection = Substitute.For(); - var client = new RepositoriesClient(connection); + var client = new RepositoryForksClient(connection); - await client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }); + await client.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }); connection.Received().GetAll( Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), @@ -66,7 +66,7 @@ namespace Octokit.Tests.Clients public async Task RequestsCorrectUrlWithRequestParametersWithApiOptions() { var connection = Substitute.For(); - var client = new RepositoriesClient(connection); + var client = new RepositoryForksClient(connection); var options = new ApiOptions { @@ -75,7 +75,7 @@ namespace Octokit.Tests.Clients PageSize = 1 }; - await client.Forks.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }, options); + await client.GetAll("fake", "repo", new RepositoryForksListRequest { Sort = Sort.Stargazers }, options); connection.Received().GetAll( Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), @@ -94,10 +94,8 @@ namespace Octokit.Tests.Clients await Assert.ThrowsAsync(() => client.GetAll("owner", "name", (ApiOptions)null)); await Assert.ThrowsAsync(() => client.GetAll(null, "name", new RepositoryForksListRequest())); await Assert.ThrowsAsync(() => client.GetAll("owner", null, new RepositoryForksListRequest())); - await Assert.ThrowsAsync(() => client.GetAll("owner", "name", (RepositoryForksListRequest)null)); await Assert.ThrowsAsync(() => client.GetAll(null, "name", new RepositoryForksListRequest(), ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAll("owner", null, new RepositoryForksListRequest(), ApiOptions.None)); - await Assert.ThrowsAsync(() => client.GetAll("owner", "name", null, ApiOptions.None)); await Assert.ThrowsAsync(() => client.GetAll("owner", "name", new RepositoryForksListRequest(), null)); await Assert.ThrowsAsync(() => client.GetAll("", "name")); @@ -117,11 +115,11 @@ namespace Octokit.Tests.Clients public void RequestsCorrectUrl() { var connection = Substitute.For(); - var client = new RepositoriesClient(connection); + var client = new RepositoryForksClient(connection); var newRepositoryFork = new NewRepositoryFork(); - client.Forks.Create("fake", "repo", newRepositoryFork); + client.Create("fake", "repo", newRepositoryFork); connection.Received().Post(Arg.Is(u => u.ToString() == "repos/fake/repo/forks"), newRepositoryFork); } @@ -140,4 +138,4 @@ namespace Octokit.Tests.Clients } } } -} \ No newline at end of file +} diff --git a/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs b/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs index 20f2756c..77acb660 100644 --- a/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableRepositoryForksClientTests.cs @@ -94,10 +94,8 @@ namespace Octokit.Tests.Reactive Assert.Throws(() => client.GetAll("owner", "name", (ApiOptions)null)); Assert.Throws(() => client.GetAll(null, "name", new RepositoryForksListRequest())); Assert.Throws(() => client.GetAll("owner", null, new RepositoryForksListRequest())); - Assert.Throws(() => client.GetAll("owner", "name", (RepositoryForksListRequest)null)); Assert.Throws(() => client.GetAll(null, "name", new RepositoryForksListRequest(), ApiOptions.None)); Assert.Throws(() => client.GetAll("owner", null, new RepositoryForksListRequest(), ApiOptions.None)); - Assert.Throws(() => client.GetAll("owner", "name", null, ApiOptions.None)); Assert.Throws(() => client.GetAll("owner", "name", new RepositoryForksListRequest(), null)); Assert.Throws(() => client.GetAll("", "name")); From e7d3c343b2b3e6658ad3d5e9e739c391800cab63 Mon Sep 17 00:00:00 2001 From: "aedampir@gmail.com" Date: Thu, 9 Jun 2016 16:27:49 +0700 Subject: [PATCH 5/5] modified xml docs --- .../IObservableRepositoryForksClient.cs | 67 ++++++++++---- .../ObservableRepositoryForksClient.cs | 83 ++++++++++++------ Octokit/Clients/IRepositoryForksClient.cs | 67 ++++++++++---- Octokit/Clients/RepositoryForksClient.cs | 87 +++++++++++++------ 4 files changed, 214 insertions(+), 90 deletions(-) diff --git a/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs b/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs index 212d582b..ccc58d70 100644 --- a/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs +++ b/Octokit.Reactive/Clients/IObservableRepositoryForksClient.cs @@ -2,41 +2,72 @@ namespace Octokit.Reactive { + /// + /// A client for GitHub's Repository Forks API. + /// + /// + /// See the Forks API documentation for more information. + /// public interface IObservableRepositoryForksClient { /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - IObservable GetAll(string owner, string repositoryName); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// A of s representing forks of specified repository. + IObservable GetAll(string owner, string name); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - IObservable GetAll(string owner, string repositoryName, ApiOptions options); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Options for changing the API response + /// A of s representing forks of specified repository. + IObservable GetAll(string owner, string name, ApiOptions options); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// A of s representing forks of specified repository. + IObservable GetAll(string owner, string name, RepositoryForksListRequest request); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options); + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// Options for changing the API response + /// A of s representing forks of specified repository. + IObservable GetAll(string owner, string name, RepositoryForksListRequest request, ApiOptions options); /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// - /// See API documentation for more information. - /// - IObservable Create(string owner, string repositoryName, NewRepositoryFork fork); + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to fork a repository + /// A of representing the created fork of specified repository. + IObservable Create(string owner, string name, NewRepositoryFork fork); } } diff --git a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs index f4c2a0f3..25b0b325 100644 --- a/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs +++ b/Octokit.Reactive/Clients/ObservableRepositoryForksClient.cs @@ -4,6 +4,12 @@ using Octokit.Reactive.Internal; namespace Octokit.Reactive { + /// + /// A client for GitHub's Repository Forks API. + /// + /// + /// See the Forks API documentation for more information. + /// public class ObservableRepositoryForksClient : IObservableRepositoryForksClient { readonly IRepositoryForksClient _client; @@ -24,70 +30,95 @@ namespace Octokit.Reactive /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public IObservable GetAll(string owner, string repositoryName) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// A of s representing forks of specified repository. + public IObservable GetAll(string owner, string name) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); - return GetAll(owner, repositoryName, ApiOptions.None); + return GetAll(owner, name, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public IObservable GetAll(string owner, string repositoryName, ApiOptions options) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Options for changing the API response + /// A of s representing forks of specified repository. + public IObservable GetAll(string owner, string name, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(options, "options"); - return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), options); + return _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, name), options); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// A of s representing forks of specified repository. + public IObservable GetAll(string owner, string name, RepositoryForksListRequest request) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); - return GetAll(owner, repositoryName, request, ApiOptions.None); + return GetAll(owner, name, request, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public IObservable GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// Options for changing the API response + /// A of s representing forks of specified repository. + public IObservable GetAll(string owner, string name, RepositoryForksListRequest request, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(options, "options"); - return request == null ? _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), options) : - _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); + return request == null ? _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, name), options) : + _connection.GetAndFlattenAllPages(ApiUrls.RepositoryForks(owner, name), request.ToParametersDictionary(), options); } /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// - /// See API documentation for more information. - /// - public IObservable Create(string owner, string repositoryName, NewRepositoryFork fork) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to fork a repository + /// A of representing the created fork of specified repository. + public IObservable Create(string owner, string name, NewRepositoryFork fork) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(fork, "fork"); - return _client.Create(owner, repositoryName, fork).ToObservable(); + return _client.Create(owner, name, fork).ToObservable(); } } } \ No newline at end of file diff --git a/Octokit/Clients/IRepositoryForksClient.cs b/Octokit/Clients/IRepositoryForksClient.cs index 76ac2864..742b38d0 100644 --- a/Octokit/Clients/IRepositoryForksClient.cs +++ b/Octokit/Clients/IRepositoryForksClient.cs @@ -3,41 +3,72 @@ using System.Threading.Tasks; namespace Octokit { + /// + /// A client for GitHub's Repository Forks API. + /// + /// + /// See the Forks API documentation for more information. + /// public interface IRepositoryForksClient { /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - Task> GetAll(string owner, string repositoryName); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// A of s representing forks of specified repository. + Task> GetAll(string owner, string name); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - Task> GetAll(string owner, string repositoryName, ApiOptions options); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Options for changing the API response + /// A of s representing forks of specified repository. + Task> GetAll(string owner, string name, ApiOptions options); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request); - + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// A of s representing forks of specified repository. + Task> GetAll(string owner, string name, RepositoryForksListRequest request); + /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options); + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// Options for changing the API response + /// A of s representing forks of specified repository. + Task> GetAll(string owner, string name, RepositoryForksListRequest request, ApiOptions options); /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// - /// See API documentation for more information. - /// - Task Create(string owner, string repositoryName, NewRepositoryFork fork); + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to fork a repository + /// A representing the created fork of specified repository. + Task Create(string owner, string name, NewRepositoryFork fork); } } diff --git a/Octokit/Clients/RepositoryForksClient.cs b/Octokit/Clients/RepositoryForksClient.cs index 749a9418..0915cde3 100644 --- a/Octokit/Clients/RepositoryForksClient.cs +++ b/Octokit/Clients/RepositoryForksClient.cs @@ -3,6 +3,12 @@ using System.Threading.Tasks; namespace Octokit { + /// + /// A client for GitHub's Repository Forks API. + /// + /// + /// See the Forks API documentation for more information. + /// public class RepositoryForksClient : ApiClient, IRepositoryForksClient { /// @@ -17,71 +23,96 @@ namespace Octokit /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public Task> GetAll(string owner, string repositoryName) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// A of s representing forks of specified repository. + public Task> GetAll(string owner, string name) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); - return GetAll(owner, repositoryName, ApiOptions.None); + return GetAll(owner, name, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public Task> GetAll(string owner, string repositoryName, ApiOptions options) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Options for changing the API response + /// A of s representing forks of specified repository. + public Task> GetAll(string owner, string name, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(options, "options"); - return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), options); + return ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, name), options); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// A of s representing forks of specified repository. + public Task> GetAll(string owner, string name, RepositoryForksListRequest request) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); - return GetAll(owner, repositoryName, request, ApiOptions.None); + return GetAll(owner, name, request, ApiOptions.None); } /// /// Gets the list of forks defined for a repository /// - /// See API documentation for more information. - /// - public Task> GetAll(string owner, string repositoryName, RepositoryForksListRequest request, ApiOptions options) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to request and filter a list of repository forks + /// Options for changing the API response + /// A of s representing forks of specified repository. + public Task> GetAll(string owner, string name, RepositoryForksListRequest request, ApiOptions options) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(options, "options"); - return request == null - ? ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), options) : - ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, repositoryName), request.ToParametersDictionary(), options); + return request == null + ? ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, name), options) : + ApiConnection.GetAll(ApiUrls.RepositoryForks(owner, name), request.ToParametersDictionary(), options); } /// /// Creates a fork for a repository. Specify organization in the fork parameter to create for an organization. /// - /// See API documentation for more information. - /// - public Task Create(string owner, string repositoryName, NewRepositoryFork fork) + /// + /// See API documentation for more information. + /// + /// The owner of the repository + /// The name of the repository + /// Used to fork a repository + /// A representing the created fork of specified repository. + public Task Create(string owner, string name, NewRepositoryFork fork) { Ensure.ArgumentNotNullOrEmptyString(owner, "owner"); - Ensure.ArgumentNotNullOrEmptyString(repositoryName, "repositoryName"); + Ensure.ArgumentNotNullOrEmptyString(name, "name"); Ensure.ArgumentNotNull(fork, "fork"); - return ApiConnection.Post(ApiUrls.RepositoryForks(owner, repositoryName), fork); + return ApiConnection.Post(ApiUrls.RepositoryForks(owner, name), fork); } } -} \ No newline at end of file +}