From 09ebe007b75f3dc40ae63709eb5dd8cb2c3b6548 Mon Sep 17 00:00:00 2001 From: Ryan Gribble Date: Sun, 3 Apr 2016 22:20:02 +1000 Subject: [PATCH] Add unit test for ObservableMiscellaneousClient Fix observable's constructor (obsoleting old constructor) to make it consistent with the other API clients --- .../Clients/ObservableMiscellaneousClient.cs | 8 + Octokit.Reactive/ObservableGitHubClient.cs | 2 +- Octokit.Tests/Octokit.Tests.csproj | 1 + .../ObservableMiscellaneousClientTests.cs | 145 ++++++++++++++++++ 4 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 Octokit.Tests/Reactive/ObservableMiscellaneousClientTests.cs diff --git a/Octokit.Reactive/Clients/ObservableMiscellaneousClient.cs b/Octokit.Reactive/Clients/ObservableMiscellaneousClient.cs index ea9c4096..c92d2db9 100644 --- a/Octokit.Reactive/Clients/ObservableMiscellaneousClient.cs +++ b/Octokit.Reactive/Clients/ObservableMiscellaneousClient.cs @@ -9,6 +9,7 @@ namespace Octokit.Reactive { readonly IMiscellaneousClient _client; + [Obsolete("Please use another constructor")] public ObservableMiscellaneousClient(IMiscellaneousClient client) { Ensure.ArgumentNotNull(client, "client"); @@ -16,6 +17,13 @@ namespace Octokit.Reactive _client = client; } + public ObservableMiscellaneousClient(IGitHubClient client) + { + Ensure.ArgumentNotNull(client, "client"); + + _client = client.Miscellaneous; + } + /// /// Gets all the emojis available to use on GitHub. /// diff --git a/Octokit.Reactive/ObservableGitHubClient.cs b/Octokit.Reactive/ObservableGitHubClient.cs index d938bf1b..16485593 100644 --- a/Octokit.Reactive/ObservableGitHubClient.cs +++ b/Octokit.Reactive/ObservableGitHubClient.cs @@ -34,7 +34,7 @@ namespace Octokit.Reactive Authorization = new ObservableAuthorizationsClient(gitHubClient); Activity = new ObservableActivitiesClient(gitHubClient); Issue = new ObservableIssuesClient(gitHubClient); - Miscellaneous = new ObservableMiscellaneousClient(gitHubClient.Miscellaneous); + Miscellaneous = new ObservableMiscellaneousClient(gitHubClient); Notification = new ObservableNotificationsClient(gitHubClient); Oauth = new ObservableOauthClient(gitHubClient); Organization = new ObservableOrganizationsClient(gitHubClient); diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index 842cb3bc..e93524cf 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -209,6 +209,7 @@ + diff --git a/Octokit.Tests/Reactive/ObservableMiscellaneousClientTests.cs b/Octokit.Tests/Reactive/ObservableMiscellaneousClientTests.cs new file mode 100644 index 00000000..b5a47719 --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableMiscellaneousClientTests.cs @@ -0,0 +1,145 @@ +using System; +using NSubstitute; +using Octokit.Reactive; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableMiscellaneousClientTests + { + public class TheGetAllEmojisMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetAllEmojis(); + + gitHubClient.Miscellaneous.Received(1).GetAllEmojis(); + } + } + + public class TheRenderArbitraryMarkdownMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.RenderArbitraryMarkdown(new NewArbitraryMarkdown("# test")); + + gitHubClient.Miscellaneous.Received(1).RenderArbitraryMarkdown(Arg.Is(a => a.Text == "# test")); + } + } + + public class TheRenderRawMarkdownMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.RenderRawMarkdown("# test"); + + gitHubClient.Miscellaneous.Received(1).RenderRawMarkdown("# test"); + } + } + + public class TheGetAllGitIgnoreTemplatesMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetAllGitIgnoreTemplates(); + + gitHubClient.Miscellaneous.Received(1).GetAllGitIgnoreTemplates(); + } + } + + public class TheGetGitIgnoreTemplate + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetGitIgnoreTemplate("template"); + + gitHubClient.Miscellaneous.Received(1).GetGitIgnoreTemplate("template"); + } + } + + public class TheGetAllLicensesMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetAllLicenses(); + + gitHubClient.Miscellaneous.Received(1).GetAllLicenses(); + } + } + + public class TheGetLicenseMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetLicense("key"); + + gitHubClient.Miscellaneous.Received(1).GetLicense("key"); + } + } + + public class TheGetRateLimitsMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetRateLimits(); + + gitHubClient.Miscellaneous.Received(1).GetRateLimits(); + } + } + + public class TheGetMetadataMethod + { + [Fact] + public void CallsIntoClient() + { + var gitHubClient = Substitute.For(); + var client = new ObservableMiscellaneousClient(gitHubClient); + + client.GetMetadata(); + + gitHubClient.Miscellaneous.Received(1).GetMetadata(); + } + } + + public class TheCtor + { + [Fact] + public void EnsuresArgument() + { + Assert.Throws(() => new ObservableMiscellaneousClient((IGitHubClient)null)); + } + } + } +}