using NSubstitute; using Octokit.Reactive; using System; using Xunit; namespace Octokit.Tests.Reactive { public class ObservableRepositoryTrafficClientTests { public class TheCtor { [Fact] public void EnsuresNonNullArguments() { Assert.Throws(() => new ObservableRepositoryTrafficClient(null)); } } public class TheGetAllReferrersMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetReferrers("fake", "repo"); gitHubClient.Received().Repository.Traffic.GetReferrers("fake", "repo"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetReferrers(1); gitHubClient.Received().Repository.Traffic.GetReferrers(1); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); Assert.Throws(() => client.GetReferrers(null, "name")); Assert.Throws(() => client.GetReferrers("owner", null)); Assert.Throws(() => client.GetReferrers("", "name")); Assert.Throws(() => client.GetReferrers("owner", "")); } } public class TheGetAllPathsMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetPaths("fake", "repo"); gitHubClient.Received().Repository.Traffic.GetPaths("fake", "repo"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetPaths(1); gitHubClient.Received().Repository.Traffic.GetPaths(1); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); Assert.Throws(() => client.GetPaths(null, "name")); Assert.Throws(() => client.GetPaths("owner", null)); Assert.Throws(() => client.GetPaths("", "name")); Assert.Throws(() => client.GetPaths("owner", "")); } } public class TheGetClonesMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); client.GetClones("fake", "repo", per); gitHubClient.Received().Repository.Traffic.GetClones("fake", "repo", per); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); client.GetClones(1, per); gitHubClient.Received().Repository.Traffic.GetClones(1, per); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); Assert.Throws(() => client.GetClones(null, "name", per)); Assert.Throws(() => client.GetClones("owner", null, per)); Assert.Throws(() => client.GetClones("owner", "name", null)); Assert.Throws(() => client.GetClones("", "name", per)); Assert.Throws(() => client.GetClones("owner", "", per)); Assert.Throws(() => client.GetClones(1, null)); } } public class TheGetViewsMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); client.GetViews("fake", "repo", per); gitHubClient.Received().Repository.Traffic.GetViews("fake", "repo", per); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); client.GetViews(1, per); gitHubClient.Received().Repository.Traffic.GetViews(1, per); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); var per = new RepositoryTrafficRequest(TrafficDayOrWeek.Day); Assert.Throws(() => client.GetViews(null, "name", per)); Assert.Throws(() => client.GetViews("owner", null, per)); Assert.Throws(() => client.GetViews("owner", "name", null)); Assert.Throws(() => client.GetViews("", "name", per)); Assert.Throws(() => client.GetViews("owner", "", per)); Assert.Throws(() => client.GetViews(1, null)); } } } }