From 620daa7ea2ea29019c50e38606e4ddd88790d44f Mon Sep 17 00:00:00 2001 From: Brendan Forster Date: Tue, 24 Feb 2015 09:13:22 +0930 Subject: [PATCH] introduce Account.Type property to represent whether account is user or organization - This also changes SearchUsersRequest to use AccountSearchType as this is a slightly different representation of the user/org role. - Added some tests to check existing API usage. --- .../Clients/RepositoriesClientTests.cs | 14 ++++++++++++++ .../Clients/UsersClientTests.cs | 13 +++++++++++++ Octokit.Tests/Clients/SearchClientTests.cs | 4 ++-- Octokit/Models/Request/SearchUsersRequest.cs | 4 ++-- Octokit/Models/Response/Account.cs | 7 +++++++ Octokit/Models/Response/AccountType.cs | 15 +++++++++++++++ Octokit/Octokit-Mono.csproj | 1 + Octokit/Octokit-MonoAndroid.csproj | 1 + Octokit/Octokit-Monotouch.csproj | 1 + Octokit/Octokit-Portable.csproj | 1 + Octokit/Octokit-netcore45.csproj | 1 + Octokit/Octokit.csproj | 1 + 12 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 Octokit/Models/Response/AccountType.cs diff --git a/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs b/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs index deb3a225..716eec75 100644 --- a/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs +++ b/Octokit.Tests.Integration/Clients/RepositoriesClientTests.cs @@ -520,6 +520,20 @@ public class RepositoriesClientTests Assert.Equal("https://github.com/Haacked/SeeGit.git", repository.CloneUrl); Assert.False(repository.Private); Assert.False(repository.Fork); + Assert.Equal(AccountType.User, repository.Owner.Type); + } + + [IntegrationTest] + public async Task ReturnsOrganizationRepository() + { + var github = Helper.GetAuthenticatedClient(); + + var repository = await github.Repository.Get("octokit", "octokit.net"); + + Assert.Equal("https://github.com/octokit/octokit.net.git", repository.CloneUrl); + Assert.False(repository.Private); + Assert.False(repository.Fork); + Assert.Equal(AccountType.Organization, repository.Owner.Type); } [IntegrationTest] diff --git a/Octokit.Tests.Integration/Clients/UsersClientTests.cs b/Octokit.Tests.Integration/Clients/UsersClientTests.cs index f8bc9a0f..e7af0706 100644 --- a/Octokit.Tests.Integration/Clients/UsersClientTests.cs +++ b/Octokit.Tests.Integration/Clients/UsersClientTests.cs @@ -18,6 +18,18 @@ public class UsersClientTests var user = await github.User.Get("tclem"); Assert.Equal("GitHub", user.Company); + Assert.Equal(AccountType.User, user.Type); + } + + [IntegrationTest] + public async Task ReturnsSpecifiedOrganization() + { + var github = Helper.GetAuthenticatedClient(); + + var user = await github.User.Get("octokit"); + + Assert.Null(user.Company); + Assert.Equal(AccountType.Organization, user.Type); } [IntegrationTest] @@ -50,6 +62,7 @@ public class UsersClientTests var user = await github.User.Current(); Assert.Equal(Helper.UserName, user.Login); + Assert.Equal(AccountType.User, user.Type); } } diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index e85cbe6e..49ed2491 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -57,7 +57,7 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); var request = new SearchUsersRequest("github"); - request.AccountType = AccountType.User; + request.AccountType = AccountSearchType.User; client.SearchUsers(request); connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), @@ -70,7 +70,7 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); var request = new SearchUsersRequest("github"); - request.AccountType = AccountType.Org; + request.AccountType = AccountSearchType.Org; client.SearchUsers(request); connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), diff --git a/Octokit/Models/Request/SearchUsersRequest.cs b/Octokit/Models/Request/SearchUsersRequest.cs index 66645f52..5244043b 100644 --- a/Octokit/Models/Request/SearchUsersRequest.cs +++ b/Octokit/Models/Request/SearchUsersRequest.cs @@ -63,7 +63,7 @@ namespace Octokit /// With this qualifier you can restrict the search to just personal accounts or just organization accounts. /// https://help.github.com/articles/searching-users#type /// - public AccountType? AccountType { get; set; } + public AccountSearchType? AccountType { get; set; } private IEnumerable _inQualifier; @@ -138,7 +138,7 @@ namespace Octokit /// /// Account Type used to filter search result /// - public enum AccountType + public enum AccountSearchType { /// /// User account diff --git a/Octokit/Models/Response/Account.cs b/Octokit/Models/Response/Account.cs index 3f2ef063..863c7b77 100644 --- a/Octokit/Models/Response/Account.cs +++ b/Octokit/Models/Response/Account.cs @@ -117,6 +117,13 @@ namespace Octokit /// public string Name { get; protected set; } + /// + /// The type of account associated with this entity + /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1721:PropertyNamesShouldNotMatchGetMethods")] + public AccountType Type { get; protected set; } + + /// /// Number of private repos owned by the account. /// diff --git a/Octokit/Models/Response/AccountType.cs b/Octokit/Models/Response/AccountType.cs new file mode 100644 index 00000000..b4797ba9 --- /dev/null +++ b/Octokit/Models/Response/AccountType.cs @@ -0,0 +1,15 @@ +namespace Octokit +{ + public enum AccountType + { + /// + /// User account + /// + User, + + /// + /// Organization account + /// + Organization + } +} diff --git a/Octokit/Octokit-Mono.csproj b/Octokit/Octokit-Mono.csproj index 2880a446..d63cade1 100644 --- a/Octokit/Octokit-Mono.csproj +++ b/Octokit/Octokit-Mono.csproj @@ -119,6 +119,7 @@ + diff --git a/Octokit/Octokit-MonoAndroid.csproj b/Octokit/Octokit-MonoAndroid.csproj index 57c5bf12..231d3e1c 100644 --- a/Octokit/Octokit-MonoAndroid.csproj +++ b/Octokit/Octokit-MonoAndroid.csproj @@ -379,6 +379,7 @@ + \ No newline at end of file diff --git a/Octokit/Octokit-Monotouch.csproj b/Octokit/Octokit-Monotouch.csproj index aaa4ad6c..de287f3c 100644 --- a/Octokit/Octokit-Monotouch.csproj +++ b/Octokit/Octokit-Monotouch.csproj @@ -374,6 +374,7 @@ + diff --git a/Octokit/Octokit-Portable.csproj b/Octokit/Octokit-Portable.csproj index 4384a169..7f6ab64d 100644 --- a/Octokit/Octokit-Portable.csproj +++ b/Octokit/Octokit-Portable.csproj @@ -208,6 +208,7 @@ + diff --git a/Octokit/Octokit-netcore45.csproj b/Octokit/Octokit-netcore45.csproj index 85f1481f..ba939dbd 100644 --- a/Octokit/Octokit-netcore45.csproj +++ b/Octokit/Octokit-netcore45.csproj @@ -213,6 +213,7 @@ + diff --git a/Octokit/Octokit.csproj b/Octokit/Octokit.csproj index eb45e71c..5810dc52 100644 --- a/Octokit/Octokit.csproj +++ b/Octokit/Octokit.csproj @@ -278,6 +278,7 @@ +