diff --git a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs index af46950f..62dccdb0 100644 --- a/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs +++ b/Octokit.Reactive/Clients/Enterprise/IObservableEnterpriseAdminStatsClient.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; namespace Octokit.Reactive { @@ -10,13 +11,114 @@ namespace Octokit.Reactive /// public interface IObservableEnterpriseAdminStatsClient { + /// + /// Gets GitHub Enterprise Issue statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsIssues(); + + /// + /// Gets GitHub Enterprise Hook statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsHooks(); + + /// + /// Gets GitHub Enterprise Milestone statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsMilestones(); + + /// + /// Gets GitHub Enterprise Organization statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsOrgs(); + + /// + /// Gets GitHub Enterprise Comment statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsComments(); + + /// + /// Gets GitHub Enterprise Pages statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsPages(); + + /// + /// Gets GitHub Enterprise User statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsUsers(); + + /// + /// Gets GitHub Enterprise Gist statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsGists(); + + /// + /// Gets GitHub Enterprise PullRequest statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsPulls(); + + /// + /// Gets GitHub Enterprise Repository statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsRepos(); + /// /// Gets GitHub Enterprise statistics (must be Site Admin user). /// /// - ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics /// - /// The collection for the requested type. - IObservable GetStatistics(AdminStatsType type); + /// The collection of statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + IObservable GetStatisticsAll(); } } diff --git a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs index 1e121a48..1ae1f616 100644 --- a/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs +++ b/Octokit.Reactive/Clients/Enterprise/ObservableEnterpriseAdminStatsClient.cs @@ -20,16 +20,136 @@ namespace Octokit.Reactive _client = client.Enterprise.AdminStats; } + /// + /// Gets GitHub Enterprise Issue statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsIssues() + { + return _client.GetStatisticsIssues().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Hook statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsHooks() + { + return _client.GetStatisticsHooks().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Milestone statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsMilestones() + { + return _client.GetStatisticsMilestones().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Organization statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsOrgs() + { + return _client.GetStatisticsOrgs().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Comment statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsComments() + { + return _client.GetStatisticsComments().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Pages statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsPages() + { + return _client.GetStatisticsPages().ToObservable(); + } + + /// + /// Gets GitHub Enterprise User statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsUsers() + { + return _client.GetStatisticsUsers().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Gist statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsGists() + { + return _client.GetStatisticsGists().ToObservable(); + } + + /// + /// Gets GitHub Enterprise PullRequest statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsPulls() + { + return _client.GetStatisticsPulls().ToObservable(); + } + + /// + /// Gets GitHub Enterprise Repository statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public IObservable GetStatisticsRepos() + { + return _client.GetStatisticsRepos().ToObservable(); + } + /// /// Gets GitHub Enterprise statistics (must be Site Admin user). /// /// - ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics /// - /// The collection for the requested type. - public IObservable GetStatistics(AdminStatsType type) + /// The collection of statistics. + public IObservable GetStatisticsAll() { - return _client.GetStatistics(type).ToObservable(); + return _client.GetStatisticsAll().ToObservable(); } } } diff --git a/Octokit.Tests.Integration/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs b/Octokit.Tests.Integration/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs index 3e8dc2f1..43b9da9b 100644 --- a/Octokit.Tests.Integration/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs +++ b/Octokit.Tests.Integration/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs @@ -1,8 +1,6 @@ -using System.Linq; -using System.Threading.Tasks; +using System.Threading.Tasks; using Octokit; using Octokit.Tests.Integration; -using Octokit.Tests.Integration.Helpers; using Xunit; public class EnterpriseAdminStatsClientTest @@ -15,10 +13,100 @@ public class EnterpriseAdminStatsClientTest } [GitHubEnterpriseTest] - public async Task CanGetAllStatistics() + public async Task CanGetStatisticsIssues() + { + var issueStats = await + _github.Enterprise.AdminStats.GetStatisticsIssues(); + + Assert.NotNull(issueStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsHooks() + { + var hookStats = await + _github.Enterprise.AdminStats.GetStatisticsHooks(); + + Assert.NotNull(hookStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsMilestones() + { + var milestoneStats = await + _github.Enterprise.AdminStats.GetStatisticsMilestones(); + + Assert.NotNull(milestoneStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsOrgs() + { + var orgStats = await + _github.Enterprise.AdminStats.GetStatisticsOrgs(); + + Assert.NotNull(orgStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsComments() + { + var commentStats = await + _github.Enterprise.AdminStats.GetStatisticsComments(); + + Assert.NotNull(commentStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsPages() + { + var pageStats = await + _github.Enterprise.AdminStats.GetStatisticsPages(); + + Assert.NotNull(pageStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsUsers() + { + var userStats = await + _github.Enterprise.AdminStats.GetStatisticsUsers(); + + Assert.NotNull(userStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsGists() + { + var gistStats = await + _github.Enterprise.AdminStats.GetStatisticsGists(); + + Assert.NotNull(gistStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsPulls() + { + var pullStats = await + _github.Enterprise.AdminStats.GetStatisticsPulls(); + + Assert.NotNull(pullStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsRepos() + { + var repoStats = await + _github.Enterprise.AdminStats.GetStatisticsRepos(); + + Assert.NotNull(repoStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsAll() { var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.All); + _github.Enterprise.AdminStats.GetStatisticsAll(); Assert.NotNull(adminStats); Assert.NotNull(adminStats.Repos); @@ -32,194 +120,4 @@ public class EnterpriseAdminStatsClientTest Assert.NotNull(adminStats.Gists); Assert.NotNull(adminStats.Comments); } - - [GitHubEnterpriseTest] - public async Task CanGetReposStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Repos); - - Assert.NotNull(adminStats); - Assert.NotNull(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetHooksStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Hooks); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.NotNull(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetPagesStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Pages); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.NotNull(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetOrgsStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Orgs); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.NotNull(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetUsersStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Users); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.NotNull(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetPullsStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Pulls); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.NotNull(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetIssuesStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Issues); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.NotNull(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetMilstonesStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Milestones); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.NotNull(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetGistsStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Gists); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.NotNull(adminStats.Gists); - Assert.Null(adminStats.Comments); - } - - [GitHubEnterpriseTest] - public async Task CanGetCommentsStatistics() - { - var adminStats = await - _github.Enterprise.AdminStats.GetStatistics(AdminStatsType.Comments); - - Assert.NotNull(adminStats); - Assert.Null(adminStats.Repos); - Assert.Null(adminStats.Hooks); - Assert.Null(adminStats.Pages); - Assert.Null(adminStats.Orgs); - Assert.Null(adminStats.Users); - Assert.Null(adminStats.Pulls); - Assert.Null(adminStats.Issues); - Assert.Null(adminStats.Milestones); - Assert.Null(adminStats.Gists); - Assert.NotNull(adminStats.Comments); - } } \ No newline at end of file diff --git a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj index 1ce27e08..0a54c7a9 100644 --- a/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj +++ b/Octokit.Tests.Integration/Octokit.Tests.Integration.csproj @@ -119,6 +119,7 @@ + diff --git a/Octokit.Tests.Integration/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTest.cs b/Octokit.Tests.Integration/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTest.cs new file mode 100644 index 00000000..a87c1275 --- /dev/null +++ b/Octokit.Tests.Integration/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTest.cs @@ -0,0 +1,126 @@ +using System.Reactive.Linq; +using System.Threading.Tasks; +using Octokit.Reactive; +using Xunit; + +namespace Octokit.Tests.Integration +{ + public class ObservableEnterpriseAdminStatsClientTest + { + readonly IObservableGitHubClient _github; + + public ObservableEnterpriseAdminStatsClientTest() + { + _github = new ObservableGitHubClient(Helper.GetAuthenticatedClient()); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsIssues() + { + var issueStats = await + _github.Enterprise.AdminStats.GetStatisticsIssues(); + + Assert.NotNull(issueStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsHooks() + { + var hookStats = await + _github.Enterprise.AdminStats.GetStatisticsHooks(); + + Assert.NotNull(hookStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsMilestones() + { + var milestoneStats = await + _github.Enterprise.AdminStats.GetStatisticsMilestones(); + + Assert.NotNull(milestoneStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsOrgs() + { + var orgStats = await + _github.Enterprise.AdminStats.GetStatisticsOrgs(); + + Assert.NotNull(orgStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsComments() + { + var commentStats = await + _github.Enterprise.AdminStats.GetStatisticsComments(); + + Assert.NotNull(commentStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsPages() + { + var pageStats = await + _github.Enterprise.AdminStats.GetStatisticsPages(); + + Assert.NotNull(pageStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsUsers() + { + var userStats = await + _github.Enterprise.AdminStats.GetStatisticsUsers(); + + Assert.NotNull(userStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsGists() + { + var gistStats = await + _github.Enterprise.AdminStats.GetStatisticsGists(); + + Assert.NotNull(gistStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsPulls() + { + var pullStats = await + _github.Enterprise.AdminStats.GetStatisticsPulls(); + + Assert.NotNull(pullStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsRepos() + { + var repoStats = await + _github.Enterprise.AdminStats.GetStatisticsRepos(); + + Assert.NotNull(repoStats); + } + + [GitHubEnterpriseTest] + public async Task CanGetStatisticsAll() + { + var adminStats = await + _github.Enterprise.AdminStats.GetStatisticsAll(); + + Assert.NotNull(adminStats); + Assert.NotNull(adminStats.Repos); + Assert.NotNull(adminStats.Hooks); + Assert.NotNull(adminStats.Pages); + Assert.NotNull(adminStats.Orgs); + Assert.NotNull(adminStats.Users); + Assert.NotNull(adminStats.Pulls); + Assert.NotNull(adminStats.Issues); + Assert.NotNull(adminStats.Milestones); + Assert.NotNull(adminStats.Gists); + Assert.NotNull(adminStats.Comments); + } + } +} \ No newline at end of file diff --git a/Octokit.Tests/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs b/Octokit.Tests/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs index ee3b9848..dbb270b3 100644 --- a/Octokit.Tests/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs +++ b/Octokit.Tests/Clients/Enterprise/EnterpriseAdminStatsClientTest.cs @@ -6,7 +6,7 @@ namespace Octokit.Tests.Clients { public class EnterpriseAdminStatsClientTest { - public class TheGetStatisticsMethod + public class TheGetStatisticsIssuesMethod { [Fact] public void RequestsCorrectUrl() @@ -14,70 +14,149 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new EnterpriseAdminStatsClient(connection); - foreach (AdminStatsType type in Enum.GetValues(typeof(AdminStatsType))) - { - client.GetStatistics(type); + string expectedUri = "enterprise/stats/issues"; + client.GetStatisticsIssues(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } - string expectedUri = String.Format("enterprise/stats/{0}", type.ToString().ToLowerInvariant()); - switch (type) - { - case AdminStatsType.All: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Repos: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Hooks: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Pages: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Orgs: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Users: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Pulls: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Issues: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Milestones: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Gists: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - case AdminStatsType.Comments: - { - connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); - break; - } - } - } + public class TheGetStatisticsHooksMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/hooks"; + client.GetStatisticsHooks(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsMilestonesMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/milestones"; + client.GetStatisticsMilestones(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsOrgsMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/orgs"; + client.GetStatisticsOrgs(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsCommentsMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/comments"; + client.GetStatisticsComments(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsPagesMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/pages"; + client.GetStatisticsPages(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsUsersMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/users"; + client.GetStatisticsUsers(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsGistsMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/gists"; + client.GetStatisticsGists(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsPullsMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/pulls"; + client.GetStatisticsPulls(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsReposMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/repos"; + client.GetStatisticsRepos(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); + } + } + + public class TheGetStatisticsAllMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var connection = Substitute.For(); + var client = new EnterpriseAdminStatsClient(connection); + + string expectedUri = "enterprise/stats/all"; + client.GetStatisticsAll(); + connection.Received().Get(Arg.Is(u => u.ToString() == expectedUri), null); } } } diff --git a/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs b/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs index bfbfc9d5..fb219ba9 100644 --- a/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs +++ b/Octokit.Tests/Reactive/Enterprise/ObservableEnterpriseAdminStatsClientTests.cs @@ -1,13 +1,27 @@ -using NSubstitute; +using System; +using NSubstitute; using Octokit.Reactive; -using System; using Xunit; namespace Octokit.Tests { public class ObservableEnterpriseAdminStatsClientTests { - public class TheGetStatisticsMethod + public class TheGetStatisticsIssuesMethod + { + [Fact] + public void CallsIntoClient() + { + + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsIssues(); + github.Enterprise.AdminStats.Received(1).GetStatisticsIssues(); + } + } + + public class TheGetStatisticsHooksMethod { [Fact] public void CallsIntoClient() @@ -15,16 +29,132 @@ namespace Octokit.Tests var github = Substitute.For(); var client = new ObservableEnterpriseAdminStatsClient(github); - foreach (AdminStatsType type in Enum.GetValues(typeof(AdminStatsType))) - { - var expectedUri = "enterprise/stats/{0}".FormatUri(type.ToString().ToLowerInvariant()); - client.GetStatistics(type); + client.GetStatisticsHooks(); + github.Enterprise.AdminStats.Received(1).GetStatisticsHooks(); + } + } - github.Enterprise.AdminStats.Received(1).GetStatistics(type); + public class TheGetStatisticsMilestonesMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsMilestones(); + github.Enterprise.AdminStats.Received(1).GetStatisticsMilestones(); + } + } + + public class TheGetStatisticsOrgsMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsOrgs(); + github.Enterprise.AdminStats.Received(1).GetStatisticsOrgs(); + } + } + + public class TheGetStatisticsCommentsMethod + { + [Fact] + public void CallsIntoClient() + { + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsComments(); + github.Enterprise.AdminStats.Received(1).GetStatisticsComments(); } } } + public class TheGetStatisticsPagesMethod + { + [Fact] + public void CallsIntoClient() + { + + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsPages(); + github.Enterprise.AdminStats.Received(1).GetStatisticsPages(); + } + } + + public class TheGetStatisticsUsersMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsUsers(); + github.Enterprise.AdminStats.Received(1).GetStatisticsUsers(); + } + } + + public class TheGetStatisticsGistsMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsGists(); + github.Enterprise.AdminStats.Received(1).GetStatisticsGists(); + } + } + + public class TheGetStatisticsPullsMethod + { + [Fact] + public void CallsIntoClient() + { + + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsPulls(); + github.Enterprise.AdminStats.Received(1).GetStatisticsPulls(); + } + } + + public class TheGetStatisticsReposMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsRepos(); + github.Enterprise.AdminStats.Received(1).GetStatisticsRepos(); + } + } + + public class TheGetStatisticsAllMethod + { + [Fact] + public void CallsIntoClient() + { + var github = Substitute.For(); + var client = new ObservableEnterpriseAdminStatsClient(github); + + client.GetStatisticsAll(); + github.Enterprise.AdminStats.Received(1).GetStatisticsAll(); + } + } + public class TheCtor { [Fact] @@ -35,4 +165,4 @@ namespace Octokit.Tests } } } -} +} \ No newline at end of file diff --git a/Octokit/Clients/Enterprise/EnterpriseAdminStatsClient.cs b/Octokit/Clients/Enterprise/EnterpriseAdminStatsClient.cs index 03bc8289..69bf34f1 100644 --- a/Octokit/Clients/Enterprise/EnterpriseAdminStatsClient.cs +++ b/Octokit/Clients/Enterprise/EnterpriseAdminStatsClient.cs @@ -1,6 +1,4 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace Octokit { @@ -16,100 +14,169 @@ namespace Octokit : base(apiConnection) { } + /// + /// Gets GitHub Enterprise Issue statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsIssues() + { + var endpoint = ApiUrls.EnterpriseAdminStatsIssues(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Hook statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsHooks() + { + var endpoint = ApiUrls.EnterpriseAdminStatsHooks(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Milestone statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsMilestones() + { + var endpoint = ApiUrls.EnterpriseAdminStatsMilestones(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Organization statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsOrgs() + { + var endpoint = ApiUrls.EnterpriseAdminStatsOrgs(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Comment statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsComments() + { + var endpoint = ApiUrls.EnterpriseAdminStatsComments(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Pages statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsPages() + { + var endpoint = ApiUrls.EnterpriseAdminStatsPages(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise User statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsUsers() + { + var endpoint = ApiUrls.EnterpriseAdminStatsUsers(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Gist statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsGists() + { + var endpoint = ApiUrls.EnterpriseAdminStatsGists(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise PullRequest statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsPulls() + { + var endpoint = ApiUrls.EnterpriseAdminStatsPulls(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + + /// + /// Gets GitHub Enterprise Repository statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + public async Task GetStatisticsRepos() + { + var endpoint = ApiUrls.EnterpriseAdminStatsRepos(); + + return await ApiConnection.Get(endpoint) + .ConfigureAwait(false); + } + /// /// Gets GitHub Enterprise statistics (must be Site Admin user). /// /// - ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics /// - /// The collection for the requested type. - [SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] - public async Task GetStatistics(AdminStatsType type) + /// The collection of statistics. + public async Task GetStatisticsAll() { - var endpoint = ApiUrls.EnterpriseAdminStats(type.ToString().ToLowerInvariant()); + var endpoint = ApiUrls.EnterpriseAdminStatsAll(); - if (type == AdminStatsType.All) - { - return await ApiConnection.Get(endpoint) + return await ApiConnection.Get(endpoint) .ConfigureAwait(false); - } - - AdminStatsRepos repos = null; - AdminStatsHooks hooks = null; - AdminStatsPages pages = null; - AdminStatsOrgs orgs = null; - AdminStatsUsers users = null; - AdminStatsPulls pulls = null; - AdminStatsIssues issues = null; - AdminStatsMilestones milestones = null; - AdminStatsGists gists = null; - AdminStatsComments comments = null; - - switch (type) - { - case AdminStatsType.Repos: - { - repos = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Hooks: - { - hooks = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Pages: - { - pages = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Orgs: - { - orgs = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Users: - { - users = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Pulls: - { - pulls = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Issues: - { - issues = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Milestones: - { - milestones = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Gists: - { - gists = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - case AdminStatsType.Comments: - { - comments = await ApiConnection.Get(endpoint) - .ConfigureAwait(false); - break; - } - } - - return new AdminStats(repos, hooks, pages, orgs, users, pulls, issues, milestones, gists, comments); } } } diff --git a/Octokit/Clients/Enterprise/EnterpriseClient.cs b/Octokit/Clients/Enterprise/EnterpriseClient.cs index f78d7aac..42e1763a 100644 --- a/Octokit/Clients/Enterprise/EnterpriseClient.cs +++ b/Octokit/Clients/Enterprise/EnterpriseClient.cs @@ -1,7 +1,4 @@ -using System; -using System.Threading.Tasks; - -namespace Octokit +namespace Octokit { /// /// A client for GitHub's Enterprise API. diff --git a/Octokit/Clients/Enterprise/IEnterpriseAdminStatsClient.cs b/Octokit/Clients/Enterprise/IEnterpriseAdminStatsClient.cs index 718b9f29..52c9e4e6 100644 --- a/Octokit/Clients/Enterprise/IEnterpriseAdminStatsClient.cs +++ b/Octokit/Clients/Enterprise/IEnterpriseAdminStatsClient.cs @@ -1,4 +1,5 @@ -using System.Threading.Tasks; +using System.Diagnostics.CodeAnalysis; +using System.Threading.Tasks; namespace Octokit { @@ -10,28 +11,115 @@ namespace Octokit /// public interface IEnterpriseAdminStatsClient { + /// + /// Gets GitHub Enterprise Issue statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsIssues(); + + /// + /// Gets GitHub Enterprise Hook statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsHooks(); + + /// + /// Gets GitHub Enterprise Milestone statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsMilestones(); + + /// + /// Gets GitHub Enterprise Organization statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsOrgs(); + + /// + /// Gets GitHub Enterprise Comment statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsComments(); + + /// + /// Gets GitHub Enterprise Pages statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsPages(); + + /// + /// Gets GitHub Enterprise User statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsUsers(); + + /// + /// Gets GitHub Enterprise Gist statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsGists(); + + /// + /// Gets GitHub Enterprise PullRequest statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsPulls(); + + /// + /// Gets GitHub Enterprise Repository statistics (must be Site Admin user). + /// + /// + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// + /// The statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsRepos(); + /// /// Gets GitHub Enterprise statistics (must be Site Admin user). /// /// - ///https://developer.github.com/v3/enterprise/admin_stats/#get-statistics + /// https://developer.github.com/v3/enterprise/admin_stats/#get-statistics /// - /// The collection for the requested type. - Task GetStatistics(AdminStatsType type); - } - - public enum AdminStatsType - { - Issues, - Hooks, - Milestones, - Orgs, - Comments, - Pages, - Users, - Gists, - Pulls, - Repos, - All + /// The collection of statistics. + [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] + Task GetStatisticsAll(); } } diff --git a/Octokit/Helpers/ApiUrls.cs b/Octokit/Helpers/ApiUrls.cs index 9811e446..734382be 100644 --- a/Octokit/Helpers/ApiUrls.cs +++ b/Octokit/Helpers/ApiUrls.cs @@ -1555,9 +1555,64 @@ namespace Octokit return "repos/{0}/{1}/contents/{2}?ref={3}".FormatUri(owner, name, path, reference); } - public static Uri EnterpriseAdminStats(string type) + private static Uri EnterpriseAdminStats(string type) { return "enterprise/stats/{0}".FormatUri(type); } + + public static Uri EnterpriseAdminStatsIssues() + { + return EnterpriseAdminStats("issues"); + } + + public static Uri EnterpriseAdminStatsHooks() + { + return EnterpriseAdminStats("hooks"); + } + + public static Uri EnterpriseAdminStatsMilestones() + { + return EnterpriseAdminStats("milestones"); + } + + public static Uri EnterpriseAdminStatsOrgs() + { + return EnterpriseAdminStats("orgs"); + } + + public static Uri EnterpriseAdminStatsComments() + { + return EnterpriseAdminStats("comments"); + } + + public static Uri EnterpriseAdminStatsPages() + { + return EnterpriseAdminStats("pages"); + } + + public static Uri EnterpriseAdminStatsUsers() + { + return EnterpriseAdminStats("users"); + } + + public static Uri EnterpriseAdminStatsGists() + { + return EnterpriseAdminStats("gists"); + } + + public static Uri EnterpriseAdminStatsPulls() + { + return EnterpriseAdminStats("pulls"); + } + + public static Uri EnterpriseAdminStatsRepos() + { + return EnterpriseAdminStats("repos"); + } + + public static Uri EnterpriseAdminStatsAll() + { + return EnterpriseAdminStats("all"); + } } }