From c3e8d4a484280fecf876b0f189b13241829be887 Mon Sep 17 00:00:00 2001 From: Peter MacNaughton Date: Tue, 21 Jan 2014 12:00:48 -0700 Subject: [PATCH] Implemented missing methods for IssueLabels... Client, as well as unit tests. --- .../Clients/IssuesLabelsClientTests.cs | 123 ++++++++++++++++++ Octokit/Clients/IIssuesLabelsClient.cs | 63 +++++++++ Octokit/Clients/IssuesLabelsClient.cs | 97 ++++++++++++++ Octokit/Helpers/ApiUrls.cs | 16 ++- 4 files changed, 297 insertions(+), 2 deletions(-) diff --git a/Octokit.Tests/Clients/IssuesLabelsClientTests.cs b/Octokit.Tests/Clients/IssuesLabelsClientTests.cs index 11e65314..0ceef6de 100644 --- a/Octokit.Tests/Clients/IssuesLabelsClientTests.cs +++ b/Octokit.Tests/Clients/IssuesLabelsClientTests.cs @@ -3,6 +3,7 @@ using System.Threading.Tasks; using NSubstitute; using Octokit.Tests.Helpers; using Xunit; +using System.Collections.Generic; namespace Octokit.Tests.Clients { @@ -79,5 +80,127 @@ namespace Octokit.Tests.Clients await AssertEx.Throws(async () => await client.Get("owner", null, "label")); } } + + public class TheAddToIssueMethod + { + readonly string[] labels = { "foo", "bar" }; + + [Fact] + public void PostsToCorrectUrl() + { + var connection = Substitute.For(); + var client = new IssuesLabelsClient(connection); + + client.AddToIssue("fake", "repo", 42, labels); + + connection.Received().Post>(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/42/labels"), Arg.Any()); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new IssuesLabelsClient(Substitute.For()); + + await AssertEx.Throws(async () => await client.AddToIssue(null, "name", 42, labels)); + await AssertEx.Throws(async () => await client.AddToIssue("owner", null, 42, labels)); + await AssertEx.Throws(async () => await client.AddToIssue("owner", "name", 42, null)); + } + } + + public class TheRemoveFromIssueMethod + { + [Fact] + public void DeleteCorrectUrl() + { + var connection = Substitute.For(); + var client = new IssuesLabelsClient(connection); + + client.RemoveFromIssue("fake", "repo", 42, "label"); + + connection.Received().Delete(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/42/labels/label")); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new IssuesLabelsClient(Substitute.For()); + + await AssertEx.Throws(async () => await client.RemoveFromIssue(null, "name", 42, "label")); + await AssertEx.Throws(async () => await client.RemoveFromIssue("owner", null, 42, "label")); + await AssertEx.Throws(async () => await client.RemoveFromIssue("owner", "name", 42, null)); + } + } + + public class TheReplaceForIssueMethod + { + readonly string[] labels = { "foo", "bar" }; + + [Fact] + public void PutsToCorrectUrl() + { + var connection = Substitute.For(); + var client = new IssuesLabelsClient(connection); + + client.ReplaceAllForIssue("fake", "repo", 42, labels); + + connection.Received().Put>(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/42/labels"), Arg.Any()); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new IssuesLabelsClient(Substitute.For()); + + await AssertEx.Throws(async () => await client.ReplaceAllForIssue(null, "name", 42, labels)); + await AssertEx.Throws(async () => await client.ReplaceAllForIssue("owner", null, 42, labels)); + await AssertEx.Throws(async () => await client.ReplaceAllForIssue("owner", "name", 42, null)); + } + } + + public class TheRemoveAllFromIssueMethod + { + [Fact] + public void DeletesCorrectUrl() + { + var connection = Substitute.For(); + var client = new IssuesLabelsClient(connection); + + client.RemoveAllFromIssue("fake", "repo", 42); + + connection.Received().Delete(Arg.Is(u => u.ToString() == "repos/fake/repo/issues/42/labels")); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new IssuesLabelsClient(Substitute.For()); + + await AssertEx.Throws(async () => await client.RemoveAllFromIssue(null, "name", 42)); + await AssertEx.Throws(async () => await client.RemoveAllFromIssue("owner", null, 42)); + } + } + + public class TheGetForMilestoneMethod + { + [Fact] + public void GetsCorrectUrl() + { + var connection = Substitute.For(); + var client = new IssuesLabelsClient(connection); + + client.GetForMilestone("fake", "repo", 42); + + connection.Received().GetAll