using System; using System.Reactive.Threading.Tasks; using System.Threading.Tasks; using NSubstitute; using Octokit.Reactive; using Xunit; namespace Octokit.Tests.Reactive { public class ObservableRepositoryCommitsClientTests { public class TheGetSha1Method { [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryCommitsClient(Substitute.For()); Assert.ThrowsAsync(() => client.GetSha1("", "name", "reference").ToTask()); Assert.ThrowsAsync(() => client.GetSha1("owner", "", "reference").ToTask()); Assert.ThrowsAsync(() => client.GetSha1("owner", "name", "").ToTask()); } [Fact] public async Task EnsuresNonEmptyArguments() { var client = new ObservableRepositoryCommitsClient(Substitute.For()); await Assert.ThrowsAsync(() => client.GetSha1(null, "name", "reference").ToTask()); await Assert.ThrowsAsync(() => client.GetSha1("owner", null, "reference").ToTask()); await Assert.ThrowsAsync(() => client.GetSha1("owner", "name", null).ToTask()); } [Fact] public void GetsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryCommitsClient(gitHubClient); client.GetSha1("owner", "name", "reference"); gitHubClient .Received() .Repository .Commit .GetSha1("owner", "name", "reference"); } } } }