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.GetAllReferrers("fake", "repo"); gitHubClient.Received().Repository.Traffic.GetAllReferrers("fake", "repo"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetAllReferrers(1); gitHubClient.Received().Repository.Traffic.GetAllReferrers(1); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); Assert.Throws(() => client.GetAllReferrers(null, "name")); Assert.Throws(() => client.GetAllReferrers("owner", null)); Assert.Throws(() => client.GetAllReferrers("", "name")); Assert.Throws(() => client.GetAllReferrers("owner", "")); } } public class TheGetAllPathsMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetAllPaths("fake", "repo"); gitHubClient.Received().Repository.Traffic.GetAllPaths("fake", "repo"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var client = new ObservableRepositoryTrafficClient(gitHubClient); client.GetAllPaths(1); gitHubClient.Received().Repository.Traffic.GetAllPaths(1); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableRepositoryTrafficClient(Substitute.For()); Assert.Throws(() => client.GetAllPaths(null, "name")); Assert.Throws(() => client.GetAllPaths("owner", null)); Assert.Throws(() => client.GetAllPaths("", "name")); Assert.Throws(() => client.GetAllPaths("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)); } } } }