using System; using System.Reactive.Threading.Tasks; using System.Threading.Tasks; using NSubstitute; using Octokit.Reactive; using Xunit; namespace Octokit.Tests { public class ObservableTreesClientTests { public class TheCtor { [Fact] public void EnsuresNonNullArguments() { Assert.Throws(() => new ObservableTreesClient(null)); } } public class TheGetMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); client.Get("fake", "repo", "123456ABCD"); 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()); 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 RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); client.GetRecursive("fake", "repo", "123456ABCD"); 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()); 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 RequestsCorrectUrl() { var newTree = new NewTree(); var gitHubClient = Substitute.For(); var client = new ObservableTreesClient(gitHubClient); client.Create("fake", "repo", newTree); gitHubClient.Git.Tree.Received().Create("fake", "repo", newTree); } [Fact] 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("owner", null, 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())); } } } }