using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using NSubstitute; using NSubstitute.Core; using Octokit.Reactive; using Xunit; namespace Octokit.Tests.Reactive { public class ObservableRepositoryDeployKeysClientTests { public class TheConstructor { [Fact] public void ThrowsForBadArgs() { Assert.Throws(() => new ObservableRepositoryDeployKeysClient(null)); } } public class TheGetMethod { [Fact] public void CallsIntoClient() { var githubClient = Substitute.For(); var deployKeysClient = new ObservableRepositoryDeployKeysClient(githubClient); deployKeysClient.Get("user", "repo", 42); githubClient.Repository.DeployKeys.Received(1).Get("user", "repo", 42); } [Fact] public void EnsuresNonNullArguments() { var deployKeysClient = new ObservableRepositoryDeployKeysClient(Substitute.For()); Assert.Throws(() => deployKeysClient.Get(null, "repo", 42)); Assert.Throws(() => deployKeysClient.Get("", "repo", 42)); Assert.Throws(() => deployKeysClient.Get("user", null, 42)); Assert.Throws(() => deployKeysClient.Get("user", "", 42)); } } public class TheGetAllMethod { [Fact] public void CallsIntoClient() { var githubClient = Substitute.For(); var deployKeysClient = new ObservableRepositoryDeployKeysClient(githubClient); deployKeysClient.GetAll("user", "repo"); githubClient.Connection.Received(1).Get>( new Uri("repos/user/repo/keys", UriKind.Relative), null, null); } [Fact] public void EnsuresNonNullArguments() { var deployKeysClient = new ObservableRepositoryDeployKeysClient(Substitute.For()); Assert.Throws(() => deployKeysClient.GetAll(null, "repo")); Assert.Throws(() => deployKeysClient.GetAll("", "repo")); Assert.Throws(() => deployKeysClient.GetAll("user", null)); Assert.Throws(() => deployKeysClient.GetAll("user", "")); } } public class TheCreateMethod { [Fact] public void CallsIntoClient() { var githubClient = Substitute.For(); var deployKeysClient = new ObservableRepositoryDeployKeysClient(githubClient); var data = new NewDeployKey { Key = "ABC123", Title = "user@repo" }; deployKeysClient.Create("user", "repo", data); githubClient.Repository.DeployKeys.Received(1).Create("user", "repo", data); } [Fact] public void EnsuresNonNullArguments() { var deployKeysClient = new ObservableRepositoryDeployKeysClient(Substitute.For()); Assert.Throws(() => deployKeysClient.Create(null, "repo", new NewDeployKey())); Assert.Throws(() => deployKeysClient.Create("", "repo", new NewDeployKey())); Assert.Throws(() => deployKeysClient.Create("user", null, new NewDeployKey())); Assert.Throws(() => deployKeysClient.Create("user", "", new NewDeployKey())); Assert.Throws(() => deployKeysClient.Create("user", "repo", null)); Assert.Throws(() => deployKeysClient.Create("user", "repo", new NewDeployKey { Title = "user@repo" })); Assert.Throws(() => deployKeysClient.Create("user", "repo", new NewDeployKey { Key = "ABC123" })); } } } }