From 5fcc30d068fa0c90033838fdd9150848d4975b59 Mon Sep 17 00:00:00 2001 From: lrz-hal Date: Wed, 1 Jun 2016 22:21:54 +0200 Subject: [PATCH] added missing unit tests for observable reaction clients --- Octokit.Tests/Octokit.Tests.csproj | 3 + ...ervableIssueCommentReactionsClientTests.cs | 65 +++++++++++++++++++ .../ObservableIssueReactionsClientTests.cs | 65 +++++++++++++++++++ .../ObservableReactionsClientTests.cs | 35 ++++++++++ 4 files changed, 168 insertions(+) create mode 100644 Octokit.Tests/Reactive/ObservableIssueCommentReactionsClientTests.cs create mode 100644 Octokit.Tests/Reactive/ObservableIssueReactionsClientTests.cs create mode 100644 Octokit.Tests/Reactive/ObservableReactionsClientTests.cs diff --git a/Octokit.Tests/Octokit.Tests.csproj b/Octokit.Tests/Octokit.Tests.csproj index f82e598e..67d9bfc2 100644 --- a/Octokit.Tests/Octokit.Tests.csproj +++ b/Octokit.Tests/Octokit.Tests.csproj @@ -213,9 +213,12 @@ + + + diff --git a/Octokit.Tests/Reactive/ObservableIssueCommentReactionsClientTests.cs b/Octokit.Tests/Reactive/ObservableIssueCommentReactionsClientTests.cs new file mode 100644 index 00000000..1ae5f48b --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableIssueCommentReactionsClientTests.cs @@ -0,0 +1,65 @@ +using NSubstitute; +using Octokit.Reactive; +using System; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableIssueCommentReactionsClientTests + { + public class TheCtor + { + [Fact] + public void EnsuresNonNullArguments() + { + Assert.Throws(() => new ObservableIssueCommentReactionsClient(null)); + } + } + + public class TheGetAllMethod + { + private readonly IGitHubClient _githubClient; + private readonly IObservableReactionsClient _client; + private const string owner = "owner"; + private const string name = "name"; + + public TheGetAllMethod() + { + _githubClient = Substitute.For(); + _client = new ObservableReactionsClient(_githubClient); + } + + [Fact] + public void RequestsCorrectUrl() + { + _client.IssueComment.GetAll("fake", "repo", 42); + _githubClient.Received().Reaction.IssueComment.GetAll("fake", "repo", 42); + } + + [Fact] + public void EnsuresArgumentsNotNull() + { + + Assert.Throws(() => _client.IssueComment.Create(null, "name", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.IssueComment.Create("", "name", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.IssueComment.Create("owner", null, 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.IssueComment.Create("owner", "", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.IssueComment.Create("owner", "name", 1, null)); + } + } + + public class TheCreateMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var githubClient = Substitute.For(); + var client = new ObservableReactionsClient(githubClient); + var newReaction = new NewReaction(ReactionType.Confused); + + client.IssueComment.Create("fake", "repo", 1, newReaction); + githubClient.Received().Reaction.IssueComment.Create("fake", "repo", 1, newReaction); + } + } + } +} diff --git a/Octokit.Tests/Reactive/ObservableIssueReactionsClientTests.cs b/Octokit.Tests/Reactive/ObservableIssueReactionsClientTests.cs new file mode 100644 index 00000000..08d51994 --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableIssueReactionsClientTests.cs @@ -0,0 +1,65 @@ +using NSubstitute; +using Octokit.Reactive; +using System; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableIssueReactionsClientTests + { + public class TheCtor + { + [Fact] + public void EnsuresNonNullArguments() + { + Assert.Throws(() => new ObservableIssueReactionsClient(null)); + } + } + + public class TheGetAllMethod + { + private readonly IGitHubClient _githubClient; + private readonly IObservableReactionsClient _client; + private const string owner = "owner"; + private const string name = "name"; + + public TheGetAllMethod() + { + _githubClient = Substitute.For(); + _client = new ObservableReactionsClient(_githubClient); + } + + [Fact] + public void RequestsCorrectUrl() + { + _client.Issue.GetAll("fake", "repo", 42); + _githubClient.Received().Reaction.Issue.GetAll("fake", "repo", 42); + } + + [Fact] + public void EnsuresArgumentsNotNull() + { + + Assert.Throws(() => _client.Issue.Create(null, "name", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.Issue.Create("", "name", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.Issue.Create("owner", null, 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.Issue.Create("owner", "", 1, new NewReaction(ReactionType.Heart))); + Assert.Throws(() => _client.Issue.Create("owner", "name", 1, null)); + } + } + + public class TheCreateMethod + { + [Fact] + public void RequestsCorrectUrl() + { + var githubClient = Substitute.For(); + var client = new ObservableReactionsClient(githubClient); + var newReaction = new NewReaction(ReactionType.Confused); + + client.Issue.Create("fake", "repo", 1, newReaction); + githubClient.Received().Reaction.Issue.Create("fake", "repo", 1, newReaction); + } + } + } +} diff --git a/Octokit.Tests/Reactive/ObservableReactionsClientTests.cs b/Octokit.Tests/Reactive/ObservableReactionsClientTests.cs new file mode 100644 index 00000000..054fe574 --- /dev/null +++ b/Octokit.Tests/Reactive/ObservableReactionsClientTests.cs @@ -0,0 +1,35 @@ +using NSubstitute; +using Octokit.Reactive; +using System; +using System.Reactive.Threading.Tasks; +using System.Threading.Tasks; +using Xunit; + +namespace Octokit.Tests.Reactive +{ + public class ObservableReactionsClientTests + { + public class TheCtor + { + [Fact] + public void EnsuresNonNullArguments() + { + Assert.Throws(() => new ObservableReactionsClient(null)); + } + } + + public class TheDeleteMethod + { + [Fact] + public void PostsToCorrectUrl() + { + var gitHubClient = Substitute.For(); + var client = new ObservableReactionsClient(gitHubClient); + + client.Delete(13); + + gitHubClient.Reaction.Received().Delete(13); + } + } + } +}