using System; using System.Threading.Tasks; using NSubstitute; using Octokit.Reactive; using Xunit; namespace Octokit.Tests.Clients { public class ObservableMergingClientTests { public class TheCreateMethod { [Fact] public void RequestsTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableMergingClient(gitHubClient); var newMerge = new NewMerge("baseBranch", "shaToMerge") { CommitMessage = "some mergingMessage" }; client.Create("owner", "repo", newMerge); gitHubClient.Repository.Merging.Received(1).Create("owner", "repo", newMerge); } [Fact] public void RequestsTheCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableMergingClient(gitHubClient); var newMerge = new NewMerge("baseBranch", "shaToMerge") { CommitMessage = "some mergingMessage" }; client.Create(1, newMerge); gitHubClient.Repository.Merging.Received(1).Create(1, newMerge); } [Fact] public async Task EnsuresNonNullArguments() { var client = new ObservableMergingClient(Substitute.For()); var newMerge = new NewMerge("baseBranch", "shaToMerge") { CommitMessage = "some mergingMessage" }; Assert.Throws(() => client.Create(null, "name", newMerge)); Assert.Throws(() => client.Create("owner", null, newMerge)); Assert.Throws(() => client.Create("owner", "name", null)); Assert.Throws(() => client.Create(1, null)); Assert.Throws(() => client.Create("", "name", newMerge)); Assert.Throws(() => client.Create("owner", "", newMerge)); } } public class TheCtor { [Fact] public void EnsuresNonNullArguments() { Assert.Throws(() => new ObservableMergingClient(null)); } } } }