using System; using NSubstitute; using Octokit.Reactive; using Xunit; namespace Octokit.Tests.Reactive { public class ObservableStatisticsClientTests { public class TheCtor { [Fact] public void EnsuresNonNullArguments() { Assert.Throws(() => new ObservableStatisticsClient(null)); } } public class TheGetContributorsMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetContributors("owner", "name"); gitHubClient.Repository.Statistics.Received().GetContributors("owner", "name"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetContributors(1); gitHubClient.Repository.Statistics.Received().GetContributors(1); } [Fact] public void EnsureNonNullArguments() { var client = new ObservableStatisticsClient(Substitute.For()); Assert.Throws(() => client.GetContributors("owner", null)); Assert.Throws(() => client.GetContributors(null, "name")); Assert.Throws(() => client.GetContributors("", "name")); Assert.Throws(() => client.GetContributors("owner", "")); } } public class TheGetCommitActivityMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetCommitActivity("owner", "name"); gitHubClient.Repository.Statistics.Received().GetCommitActivity("owner", "name"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetCommitActivity(1); gitHubClient.Repository.Statistics.Received().GetCommitActivity(1); } [Fact] public void EnsureNonNullArguments() { var client = new ObservableStatisticsClient(Substitute.For()); Assert.Throws(() => client.GetCommitActivity("owner", null)); Assert.Throws(() => client.GetCommitActivity(null, "name")); Assert.Throws(() => client.GetCommitActivity("", "name")); Assert.Throws(() => client.GetCommitActivity("owner", "")); } } public class TheGetCodeFrequencyMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetCodeFrequency("owner", "name"); gitHubClient.Repository.Statistics.Received().GetCodeFrequency("owner", "name"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetCodeFrequency(1); gitHubClient.Repository.Statistics.Received().GetCodeFrequency(1); } [Fact] public void EnsureNonNullArguments() { var client = new ObservableStatisticsClient(Substitute.For()); Assert.Throws(() => client.GetCodeFrequency("owner", null)); Assert.Throws(() => client.GetCodeFrequency(null, "name")); Assert.Throws(() => client.GetCodeFrequency("", "name")); Assert.Throws(() => client.GetCodeFrequency("owner", "")); } } public class TheGetParticipationMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetParticipation("owner", "name"); gitHubClient.Repository.Statistics.Received().GetParticipation("owner", "name"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetParticipation(1); gitHubClient.Repository.Statistics.Received().GetParticipation(1); } [Fact] public void EnsureNonNullArguments() { var client = new ObservableStatisticsClient(Substitute.For()); Assert.Throws(() => client.GetParticipation("owner", null)); Assert.Throws(() => client.GetParticipation(null, "name")); Assert.Throws(() => client.GetParticipation("", "name")); Assert.Throws(() => client.GetParticipation("owner", "")); } } public class TheGetPunchCardMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetPunchCard("owner", "name"); gitHubClient.Repository.Statistics.Received().GetPunchCard("owner", "name"); } [Fact] public void RequestsCorrectUrlWithRepositoryId() { var gitHubClient = Substitute.For(); var statisticsClient = new ObservableStatisticsClient(gitHubClient); statisticsClient.GetPunchCard(1); gitHubClient.Repository.Statistics.Received().GetPunchCard(1); } [Fact] public void EnsureNonNullArguments() { var client = new ObservableStatisticsClient(Substitute.For()); Assert.Throws(() => client.GetPunchCard("owner", null)); Assert.Throws(() => client.GetPunchCard(null, "name")); Assert.Throws(() => client.GetPunchCard("", "name")); Assert.Throws(() => client.GetPunchCard("owner", "")); } } } }