From 23e734de8925b9dd3b623c5e5a65c2080737fc4e Mon Sep 17 00:00:00 2001 From: Alexander Efremov Date: Sun, 12 Jun 2016 14:39:43 +0700 Subject: [PATCH] added new unit tests --- Octokit.Tests/Clients/TreesClientTests.cs | 81 +++++++++++++++--- .../Reactive/ObservableTreesClientTests.cs | 82 +++++++++++++++---- 2 files changed, 135 insertions(+), 28 deletions(-) diff --git a/Octokit.Tests/Clients/TreesClientTests.cs b/Octokit.Tests/Clients/TreesClientTests.cs index 458f9a14..b876eeab 100644 --- a/Octokit.Tests/Clients/TreesClientTests.cs +++ b/Octokit.Tests/Clients/TreesClientTests.cs @@ -13,54 +13,86 @@ namespace Octokit.Tests public class TheGetMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new TreesClient(connection); - client.Get("fake", "repo", "123456ABCD"); + await client.Get("fake", "repo", "123456ABCD"); connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/git/trees/123456ABCD")); } + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new TreesClient(connection); + + await client.Get(1, "123456ABCD"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repositories/1/git/trees/123456ABCD")); + } + [Fact] public async Task EnsuresNonNullArguments() { var client = new TreesClient(Substitute.For()); await Assert.ThrowsAsync(() => client.Get(null, "name", "123456ABCD")); - await Assert.ThrowsAsync(() => client.Get("", "name", "123456ABCD")); await Assert.ThrowsAsync(() => client.Get("owner", null, "123456ABCD")); - await Assert.ThrowsAsync(() => client.Get("owner", "", "123456ABCD")); await Assert.ThrowsAsync(() => client.Get("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.Get(1, null)); + + await Assert.ThrowsAsync(() => client.Get("owner", "", "123456ABCD")); + await Assert.ThrowsAsync(() => client.Get("", "name", "123456ABCD")); await Assert.ThrowsAsync(() => client.Get("owner", "name", "")); + + await Assert.ThrowsAsync(() => client.Get(1, "")); } } public class TheGetRecursiveMethod { [Fact] - public void RequestsCorrectUrl() + public async Task RequestsCorrectUrl() { var connection = Substitute.For(); var client = new TreesClient(connection); - client.GetRecursive("fake", "repo", "123456ABCD"); + await client.GetRecursive("fake", "repo", "123456ABCD"); connection.Received().Get(Arg.Is(u => u.ToString() == "repos/fake/repo/git/trees/123456ABCD?recursive=1")); } + [Fact] + public async Task RequestsCorrectUrlWithRepositoryId() + { + var connection = Substitute.For(); + var client = new TreesClient(connection); + + await client.GetRecursive(1, "123456ABCD"); + + connection.Received().Get(Arg.Is(u => u.ToString() == "repositories/1/git/trees/123456ABCD?recursive=1")); + } + [Fact] public async Task EnsuresNonNullArguments() { var client = new TreesClient(Substitute.For()); await Assert.ThrowsAsync(() => client.GetRecursive(null, "name", "123456ABCD")); - await Assert.ThrowsAsync(() => client.GetRecursive("", "name", "123456ABCD")); await Assert.ThrowsAsync(() => client.GetRecursive("owner", null, "123456ABCD")); - await Assert.ThrowsAsync(() => client.GetRecursive("owner", "", "123456ABCD")); await Assert.ThrowsAsync(() => client.GetRecursive("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.GetRecursive(1, null)); + + await Assert.ThrowsAsync(() => client.GetRecursive("", "name", "123456ABCD")); + await Assert.ThrowsAsync(() => client.GetRecursive("owner", "", "123456ABCD")); await Assert.ThrowsAsync(() => client.GetRecursive("owner", "name", "")); + + await Assert.ThrowsAsync(() => client.GetRecursive(1, "")); } } @@ -79,14 +111,30 @@ namespace Octokit.Tests } [Fact] - public async Task EnsuresArgumentsNotNull() + public void PostsToCorrectUrlWithRepositoryId() + { + var newTree = new NewTree(); + var connection = Substitute.For(); + var client = new TreesClient(connection); + + client.Create(1, newTree); + + connection.Received().Post(Arg.Is(u => u.ToString() == "repositories/1/git/trees"), newTree); + } + + [Fact] + public async Task EnsuresNonNullArguments() { var connection = Substitute.For(); var client = new TreesClient(connection); await Assert.ThrowsAsync(() => client.Create(null, "name", new NewTree())); - await Assert.ThrowsAsync(() => client.Create("", "name", new NewTree())); await Assert.ThrowsAsync(() => client.Create("owner", null, new NewTree())); + await Assert.ThrowsAsync(() => client.Create("owner", "name", null)); + + await Assert.ThrowsAsync(() => client.Create(1, null)); + + await Assert.ThrowsAsync(() => client.Create("", "name", new NewTree())); await Assert.ThrowsAsync(() => client.Create("owner", "", new NewTree())); } @@ -102,6 +150,19 @@ namespace Octokit.Tests await Assert.ThrowsAsync( () => client.Create("fake", "repo", newTree)); } + + [Fact] + public async Task EnsureExceptionIsThrownWhenModeIsNotProvidedWithRepositoryId() + { + var newTree = new NewTree(); + newTree.Tree.Add(new NewTreeItem { Path = "README.md", Type = TreeType.Blob, Sha = "2e1a73d60f004fd842d4bad28aa42392d4f35d28" }); + + var connection = Substitute.For(); + var client = new TreesClient(connection); + + await Assert.ThrowsAsync( + () => client.Create(1, newTree)); + } } public class TheCtor diff --git a/Octokit.Tests/Reactive/ObservableTreesClientTests.cs b/Octokit.Tests/Reactive/ObservableTreesClientTests.cs index d2e0920c..b94e211d 100644 --- a/Octokit.Tests/Reactive/ObservableTreesClientTests.cs +++ b/Octokit.Tests/Reactive/ObservableTreesClientTests.cs @@ -21,7 +21,7 @@ namespace Octokit.Tests public class TheGetMethod { [Fact] - public void GetsFromClientIssueIssue() + public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); @@ -31,24 +31,40 @@ namespace Octokit.Tests gitHubClient.Git.Tree.Received().Get("fake", "repo", "123456ABCD"); } + [Fact] + public void RequestsCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableTreesClient(gitHubClient); + + client.Get(1, "123456ABCD"); + + gitHubClient.Git.Tree.Received().Get(1, "123456ABCD"); + } + [Fact] public async Task EnsuresNonNullArguments() { var client = new ObservableTreesClient(Substitute.For()); - await Assert.ThrowsAsync(() => client.Get(null, "name", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.Get("", "name", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", null, "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "name", null).ToTask()); - await Assert.ThrowsAsync(() => client.Get("owner", "name", "").ToTask()); + Assert.Throws(() => client.Get(null, "name", "123456ABCD")); + Assert.Throws(() => client.Get("owner", null, "123456ABCD")); + Assert.Throws(() => client.Get("owner", "name", null)); + + Assert.Throws(() => client.Get(1, null)); + + Assert.Throws(() => client.Get("", "name", "123456ABCD")); + Assert.Throws(() => client.Get("owner", "", "123456ABCD")); + Assert.Throws(() => client.Get("owner", "name", "")); + + Assert.Throws(() => client.Get(1, "")); } } public class TheGetRecursiveMethod { [Fact] - public void GetsFromClientIssueIssue() + public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); @@ -58,24 +74,40 @@ namespace Octokit.Tests gitHubClient.Git.Tree.Received().GetRecursive("fake", "repo", "123456ABCD"); } + [Fact] + public void RequestsCorrectUrlWithRepositoryId() + { + var gitHubClient = Substitute.For(); + var client = new ObservableTreesClient(gitHubClient); + + client.GetRecursive(1, "123456ABCD"); + + gitHubClient.Git.Tree.Received().GetRecursive(1, "123456ABCD"); + } + [Fact] public async Task EnsuresNonNullArguments() { var client = new ObservableTreesClient(Substitute.For()); - await Assert.ThrowsAsync(() => client.GetRecursive(null, "name", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.GetRecursive("", "name", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.GetRecursive("owner", null, "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.GetRecursive("owner", "", "123456ABCD").ToTask()); - await Assert.ThrowsAsync(() => client.GetRecursive("owner", "name", null).ToTask()); - await Assert.ThrowsAsync(() => client.GetRecursive("owner", "name", "").ToTask()); + Assert.Throws(() => client.GetRecursive(null, "name", "123456ABCD")); + Assert.Throws(() => client.GetRecursive("owner", null, "123456ABCD")); + Assert.Throws(() => client.GetRecursive("owner", "name", null)); + + Assert.Throws(() => client.GetRecursive(1, null)); + + Assert.Throws(() => client.GetRecursive("", "name", "123456ABCD")); + Assert.Throws(() => client.GetRecursive("owner", "", "123456ABCD")); + Assert.Throws(() => client.GetRecursive("owner", "name", "")); + + Assert.Throws(() => client.GetRecursive(1, "")); } } public class TheCreateMethod { [Fact] - public void CreatesFromClientIssueIssue() + public void RequestsCorrectUrl() { var newTree = new NewTree(); var gitHubClient = Substitute.For(); @@ -87,16 +119,30 @@ namespace Octokit.Tests } [Fact] - public async Task EnsuresArgumentsNotNull() + public void RequestsCorrectUrlWithRepositoryId() { + var newTree = new NewTree(); var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); + client.Create(1, newTree); + + gitHubClient.Git.Tree.Received().Create(1, newTree); + } + + [Fact] + public async Task EnsuresNonNullArguments() + { + var client = new ObservableTreesClient(Substitute.For()); + Assert.Throws(() => client.Create(null, "name", new NewTree())); - Assert.Throws(() => client.Create("", "name", new NewTree())); Assert.Throws(() => client.Create("owner", null, new NewTree())); - Assert.Throws(() => client.Create("owner", "", new NewTree())); Assert.Throws(() => client.Create("owner", "name", null)); + + Assert.Throws(() => client.Create(1, null)); + + Assert.Throws(() => client.Create("", "name", new NewTree())); + Assert.Throws(() => client.Create("owner", "", new NewTree())); } } }