using System; using NSubstitute; using Octokit.Reactive; using Xunit; namespace Octokit.Tests.Reactive { public class ObservableOrganizationsClientTests { public class TheCtor { [Fact] public void EnsuresNonNullArguments() { Assert.Throws(() => new ObservableOrganizationsClient(null)); } } public class TheGetMethod { [Fact] public void RequestsCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); client.Get("orgName"); gitHubClient.Received().Organization.Get("orgName"); } [Fact] public void EnsuresNonNullArguments() { var client = new ObservableOrganizationsClient(Substitute.For()); Assert.Throws(() => client.Get(null)); Assert.Throws(() => client.Get("")); } } public class TheGetAllForUserMethod { [Fact] public void RequestsTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); client.GetAllForUser("username"); gitHubClient.Received().Organization.GetAllForUser("username"); } [Fact] public void RequestsTheCorrectUrlWithApiOptions() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); var options = new ApiOptions { StartPage = 1, PageCount = 1, PageSize = 1 }; client.GetAllForUser("username", options); gitHubClient.Received().Organization.GetAllForUser("username", options); } [Fact] public void EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); Assert.Throws(() => client.GetAllForUser((string)null)); Assert.Throws(() => client.GetAllForUser(null, ApiOptions.None)); Assert.Throws(() => client.GetAllForUser("username", null)); Assert.Throws(() => client.GetAllForUser("")); Assert.Throws(() => client.GetAllForUser("", ApiOptions.None)); } } public class TheGetAllForCurrentMethod { [Fact] public void RequestsTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); client.GetAllForCurrent(); gitHubClient.Received().Organization.GetAllForCurrent(); } [Fact] public void RequestsTheCorrectUrlWithApiOptions() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); var options = new ApiOptions { StartPage = 1, PageCount = 1, PageSize = 1 }; client.GetAllForCurrent(options); gitHubClient.Received().Organization.GetAllForCurrent(options); } [Fact] public void EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); Assert.Throws(() => client.GetAllForCurrent(null)); } } public class TheUpdateMethod { [Fact] public void RequestsTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); var organizationUpdate = new OrganizationUpdate(); client.Update("initrode", organizationUpdate); gitHubClient.Received().Organization.Update("initrode", organizationUpdate); } [Fact] public void EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); Assert.Throws(() => client.Update(null, new OrganizationUpdate())); Assert.Throws(() => client.Update("org", null)); Assert.Throws(() => client.Update("", new OrganizationUpdate())); } } public class TheGetAllAuthorizationsMethod { [Fact] public void RequestsTheCorrectUrl() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); client.GetAllAuthorizations("org"); gitHubClient.Received().Organization.GetAllAuthorizations("org"); } [Fact] public void RequestsTheCorrectUrlWithApiOptions() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); var options = new ApiOptions { StartPage = 1, PageCount = 1, PageSize = 1 }; client.GetAllAuthorizations("org", options); gitHubClient.Received().Organization.GetAllAuthorizations("org", options); } [Fact] public void RequestsTheCorrectUrlWithLogin() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); client.GetAllAuthorizations("org", "login"); gitHubClient.Received().Organization.GetAllAuthorizations("org", "login"); } [Fact] public void RequestsTheCorrectUrlWithApiOptionsWithLogin() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); var options = new ApiOptions { StartPage = 1, PageCount = 1, PageSize = 1 }; client.GetAllAuthorizations("org", "login", options); gitHubClient.Received().Organization.GetAllAuthorizations("org", "login", options); } [Fact] public void EnsuresNonNullArguments() { var gitHubClient = Substitute.For(); var client = new ObservableOrganizationsClient(gitHubClient); Assert.Throws(() => client.GetAllAuthorizations(null)); Assert.Throws(() => client.GetAllAuthorizations(null, ApiOptions.None)); Assert.Throws(() => client.GetAllAuthorizations("username", (string)null)); Assert.Throws(() => client.GetAllAuthorizations("username", null, ApiOptions.None)); Assert.Throws(() => client.GetAllAuthorizations("asd", (ApiOptions)null)); Assert.Throws(() => client.GetAllAuthorizations("asd", "asd", null)); } } } }