From ce2884998b404b32a44734734ade6b68bb44be2b Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 1 Mar 2014 15:39:52 +0000 Subject: [PATCH 01/12] updated base class --- Octokit.Tests/Clients/SearchClientTests.cs | 2 +- .../Request/SearchRepositoriesRequest.cs | 57 +++---------------- 2 files changed, 10 insertions(+), 49 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index e081161f..15d1d10f 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -478,7 +478,7 @@ namespace Octokit.Tests.Clients var client = new SearchClient(connection); //get repos where the Description contains rails and user/org is 'github' var request = new SearchRepositoriesRequest("rails"); - request.Sort = RepoSearchSort.Forks; + request.SortField = RepoSearchSort.Forks; client.SearchRepo(request); diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index e78644bf..af7a9e05 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -13,43 +13,23 @@ namespace Octokit /// http://developer.github.com/v3/search/#search-repositories /// [DebuggerDisplay("{DebuggerDisplay,nq}")] - public class SearchRepositoriesRequest + public class SearchRepositoriesRequest : BaseSearchRequest { - public SearchRepositoriesRequest(string term) + public SearchRepositoriesRequest(string term) : base(term) { - Term = term; - Page = 1; - PerPage = 100; Fork = ForkQualifier.ExcludeForks; Order = SortDirection.Descending; } - /// - /// The search terms. This can be any combination of the supported repository search parameters: - /// http://developer.github.com/v3/search/#search-repositories - /// - public string Term { get; set; } - /// /// For https://help.github.com/articles/searching-repositories#sorting /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. /// - public RepoSearchSort? Sort { get; set; } - - /// - /// Sort order one of asc or desc - the default is desc. - /// - public SortDirection Order { get; set; } - - /// - /// Page of paginated results - /// - public int Page { get; set; } - - /// - /// Number of items per page - /// - public int PerPage { get; set; } + public RepoSearchSort? SortField { get; set; } + public override string Sort + { + get { return SortField.ToParameter(); } + } private IEnumerable _inQualifier; @@ -120,7 +100,7 @@ namespace Octokit /// public DateRange Updated { get; set; } - public string MergeParameters() + public override IReadOnlyCollection MergedQualifiers() { var parameters = new List(); @@ -165,26 +145,7 @@ namespace Octokit { parameters.Add(String.Format(CultureInfo.InvariantCulture, "pushed:{0}", Updated)); } - - return String.Join("+", parameters); - } - - /// - /// get the params in the correct format... - /// - /// - [SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider", MessageId = "System.Int32.ToString")] - public IDictionary Parameters - { - get - { - var d = new System.Collections.Generic.Dictionary(); - d.Add("page", Page.ToString()); - d.Add("per_page", PerPage.ToString()); - d.Add("sort", Sort.ToString()); - d.Add("q", Term + " " + MergeParameters()); //add qualifiers onto the search term - return d; - } + return parameters; } internal string DebuggerDisplay From e59e7cbb698fb6544e49282e1d126464e30f44fd Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 15 Mar 2014 21:19:29 +0000 Subject: [PATCH 02/12] size and stars test --- Octokit.Tests/Clients/SearchClientTests.cs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 15d1d10f..21faabde 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -351,13 +351,12 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var client = new SearchClient(connection); - //check sizes for repos that are greater than 50 MB var request = new SearchRepositoriesRequest("github"); request.Size = Range.GreaterThan(50); - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+size:>50")); } [Fact] @@ -368,10 +367,10 @@ namespace Octokit.Tests.Clients //get repos whos stargazers are greater than 500 var request = new SearchRepositoriesRequest("github"); request.Stars = Range.GreaterThan(500); - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+stars:>500")); } [Fact] @@ -1312,7 +1311,7 @@ namespace Octokit.Tests.Clients connection.Received().GetAll( Arg.Is(u => u.ToString() == "search/code"), - Arg.Is>(d => + Arg.Is>(d => d["q"] == "something+path:tools/FAKE.core+extension:fs+repo:octokit.net")); } } From e930b9f292b22c4f550bb9c7013b292afbaf0465 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 15 Mar 2014 21:33:33 +0000 Subject: [PATCH 03/12] fixed up all other tests --- Octokit.Tests/Clients/SearchClientTests.cs | 49 ++++++++++------------ 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 21faabde..3bfeb225 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -381,10 +381,9 @@ namespace Octokit.Tests.Clients //get repos which has forks that are greater than 50 var request = new SearchRepositoriesRequest("github"); request.Forks = Range.GreaterThan(50); - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+forks:>500")); } [Fact] @@ -393,12 +392,11 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); //search repos that contains rails and forks are included in the search - var request = new SearchRepositoriesRequest("rails"); + var request = new SearchRepositoriesRequest("github"); request.Fork = ForkQualifier.IncludeForks; - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+fork:IncludeForks")); } [Fact] @@ -412,7 +410,8 @@ namespace Octokit.Tests.Clients client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+language:Ruby")); } [Fact] @@ -424,8 +423,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Description }; client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+language:Ruby")); } [Fact] @@ -436,10 +435,9 @@ namespace Octokit.Tests.Clients //get repos where the search contains 'github' and has been created after year jan 1 2011 var request = new SearchRepositoriesRequest("github"); request.Created = DateRange.GreaterThan(new DateTime(2011, 1, 1)); - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+created>2011-01-01")); } [Fact] @@ -450,10 +448,9 @@ namespace Octokit.Tests.Clients //get repos where the search contains 'github' and has been pushed before year jan 1 2013 var request = new SearchRepositoriesRequest("github"); request.Updated = DateRange.LessThan(new DateTime(2013, 1, 1)); - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+updated>2013-01-01")); } [Fact] @@ -461,13 +458,12 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var client = new SearchClient(connection); - //get repos where the Description contains rails and user/org is 'github' - var request = new SearchRepositoriesRequest("rails"); - request.User = "github"; - + //get repos where search contains 'github' and user/org is 'github' + var request = new SearchRepositoriesRequest("github"); + request.User = "rails"; client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+user:rails")); } [Fact] @@ -475,13 +471,12 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var client = new SearchClient(connection); - //get repos where the Description contains rails and user/org is 'github' - var request = new SearchRepositoriesRequest("rails"); + //get repos where search contains 'github' and sort field is forks + var request = new SearchRepositoriesRequest("github"); request.SortField = RepoSearchSort.Forks; - client.SearchRepo(request); - - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github?sort=Forks")); } } From 5da69648d1e317f3866058764770733ddab5179f Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 15 Mar 2014 21:52:28 +0000 Subject: [PATCH 04/12] fixed merge conflict --- Octokit.Tests/Clients/SearchClientTests.cs | 54 +--------------------- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index efd246db..ea5777cf 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -336,7 +336,8 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); client.SearchRepo(new SearchRepositoriesRequest("something")); - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Any>()); } [Fact] @@ -354,14 +355,9 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Size = Range.GreaterThan(50); client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll( Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+size:>50")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -373,14 +369,9 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Stars = Range.GreaterThan(500); client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll( Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+stars:>500")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -392,13 +383,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Forks = Range.GreaterThan(50); client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+forks:>500")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -410,13 +396,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Fork = ForkQualifier.IncludeForks; client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+fork:IncludeForks")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -427,15 +408,9 @@ namespace Octokit.Tests.Clients //get repos whos language is Ruby var request = new SearchRepositoriesRequest("github"); request.Language = Language.Ruby; - client.SearchRepo(request); - -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+language:Ruby")); -======= - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -447,13 +422,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Description }; client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+language:Ruby")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -465,13 +435,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Created = DateRange.GreaterThan(new DateTime(2011, 1, 1)); client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+created>2011-01-01")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -483,13 +448,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Updated = DateRange.LessThan(new DateTime(2013, 1, 1)); client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+updated>2013-01-01")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -501,13 +461,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.User = "rails"; client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+user:rails")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } [Fact] @@ -519,13 +474,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.SortField = RepoSearchSort.Forks; client.SearchRepo(request); -<<<<<<< HEAD connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github?sort=Forks")); -======= - - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Any>()); ->>>>>>> master } } From 26d51933c431054183333ac426b202f087bdab91 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sat, 15 Mar 2014 22:55:49 +0000 Subject: [PATCH 05/12] test correct return type --- Octokit.Tests/Clients/SearchClientTests.cs | 97 ++++++++++++++++--- .../Request/SearchRepositoriesRequest.cs | 1 + 2 files changed, 83 insertions(+), 15 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index ea5777cf..12135181 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -353,11 +353,11 @@ namespace Octokit.Tests.Clients var connection = Substitute.For(); var client = new SearchClient(connection); var request = new SearchRepositoriesRequest("github"); - request.Size = Range.GreaterThan(50); + request.Size = Range.GreaterThan(1); client.SearchRepo(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+size:>50")); + Arg.Is>(d => d["q"] == "github+size:>1")); } [Fact] @@ -369,11 +369,39 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Stars = Range.GreaterThan(500); client.SearchRepo(request); - connection.Received().GetAll( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+stars:>500")); } + [Fact] + public void TestingTheStarsQualifier_LessThan() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos whos stargazers are less than 500 + var request = new SearchRepositoriesRequest("github"); + request.Stars = Range.LessThan(500); + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+stars:<500")); + } + + [Fact] + public void TestingTheStarsQualifier_LessThanOrEquals() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos whos stargazers are less than 500 or equal to + var request = new SearchRepositoriesRequest("github"); + request.Stars = Range.LessThanOrEquals(500); + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+stars:<=500")); + } + [Fact] public void TestingTheForksQualifier() { @@ -383,8 +411,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Forks = Range.GreaterThan(50); client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+forks:>500")); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+forks:>50")); } [Fact] @@ -396,7 +424,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Fork = ForkQualifier.IncludeForks; client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+fork:IncludeForks")); } @@ -409,7 +437,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Language = Language.Ruby; client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+language:Ruby")); } @@ -422,7 +450,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Description }; client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+language:Ruby")); } @@ -435,12 +463,38 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Created = DateRange.GreaterThan(new DateTime(2011, 1, 1)); client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+created>2011-01-01")); } [Fact] public void TestingTheUpdatedQualifier() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been pushed before year jan 1 2013 + var request = new SearchRepositoriesRequest("github"); + request.Updated = DateRange.GreaterThan(new DateTime(2013, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+pushed>2013-01-01")); + } + + [Fact] + public void TestingTheUpdatedQualifier_GreaterThanOrEquals() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been pushed before year jan 1 2013 + var request = new SearchRepositoriesRequest("github"); + request.Updated = DateRange.GreaterThanOrEquals(new DateTime(2013, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+pushed>=2013-01-01")); + } + + [Fact] + public void TestingTheUpdatedQualifier_LessThan() { var connection = Substitute.For(); var client = new SearchClient(connection); @@ -448,8 +502,21 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.Updated = DateRange.LessThan(new DateTime(2013, 1, 1)); client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+updated>2013-01-01")); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+pushed<2013-01-01")); + } + + [Fact] + public void TestingTheUpdatedQualifier_LessThanOrEquals() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been pushed before year jan 1 2013 + var request = new SearchRepositoriesRequest("github"); + request.Updated = DateRange.LessThanOrEquals(new DateTime(2013, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+pushed<=2013-01-01")); } [Fact] @@ -461,7 +528,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.User = "rails"; client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), Arg.Is>(d => d["q"] == "github+user:rails")); } @@ -474,8 +541,8 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.SortField = RepoSearchSort.Forks; client.SearchRepo(request); - connection.Received().GetAll(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github?sort=Forks")); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github" && d["sort"] == "Forks")); } } diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index af7a9e05..51ecff77 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -26,6 +26,7 @@ namespace Octokit /// Optional Sort field. One of stars, forks, or updated. If not provided, results are sorted by best match. /// public RepoSearchSort? SortField { get; set; } + public override string Sort { get { return SortField.ToParameter(); } From 31345f63d87fa7ed28f22f500c922b84d7f5e14a Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 16 Mar 2014 02:12:58 +0000 Subject: [PATCH 06/12] forkqualifier should be nullable --- .../Models/Request/SearchRepositoriesRequest.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 51ecff77..00f60b67 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -17,7 +17,6 @@ namespace Octokit { public SearchRepositoriesRequest(string term) : base(term) { - Fork = ForkQualifier.ExcludeForks; Order = SortDirection.Descending; } @@ -63,7 +62,7 @@ namespace Octokit /// Defaults to ExcludeForks /// https://help.github.com/articles/searching-repositories#forks /// - public ForkQualifier Fork { get; set; } + public ForkQualifier? Fork { get; set; } /// /// The size qualifier finds repository's that match a certain size (in kilobytes). @@ -120,7 +119,10 @@ namespace Octokit parameters.Add(String.Format(CultureInfo.InvariantCulture, "forks:{0}", Forks)); } - parameters.Add(String.Format(CultureInfo.InvariantCulture, "fork:{0}", Fork)); + if (Fork != null) + { + parameters.Add(String.Format(CultureInfo.InvariantCulture, "fork:{0}", Fork)); + } if (Stars != null) { @@ -736,14 +738,12 @@ namespace Octokit /// /// only search for forked repos /// + [Parameter(Value="Only")] OnlyForks, /// /// include forked repos into the search /// - IncludeForks, - /// - /// forks are not included in the search (default behaviour) - /// - ExcludeForks + [Parameter(Value = "True")] + IncludeForks } } \ No newline at end of file From 5ed8284db16461a7a290f891e1276aff75be0722 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 16 Mar 2014 02:25:55 +0000 Subject: [PATCH 07/12] fixed in qualifiers also added a few more in qualifiers to better test this out --- Octokit.Tests/Clients/SearchClientTests.cs | 41 +++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 12135181..1423ee83 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -451,7 +451,46 @@ namespace Octokit.Tests.Clients request.In = new[] { InQualifier.Description }; client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+language:Ruby")); + Arg.Is>(d => d["q"] == "github+in:Description")); + } + + [Fact] + public void TestingTheInQualifier_Name() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Name }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/users"), + Arg.Is>(d => d["q"] == "github+in:Name")); + } + + [Fact] + public void TestingTheInQualifier_Readme() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Readme }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/users"), + Arg.Is>(d => d["q"] == "github+in:Readme")); + } + + [Fact] + public void TestingTheInQualifier_Multiple() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/users"), + Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); } [Fact] From eb525725137054b234429439aa09565f27eb2a71 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 16 Mar 2014 02:37:20 +0000 Subject: [PATCH 08/12] fixed incorrect return types --- Octokit.Tests/Clients/SearchClientTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 1423ee83..7db8a38d 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -462,7 +462,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Name }; client.SearchRepo(request); - connection.Received().Get( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Name")); } @@ -475,7 +475,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Readme }; client.SearchRepo(request); - connection.Received().Get( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Readme")); } @@ -488,7 +488,7 @@ namespace Octokit.Tests.Clients var request = new SearchRepositoriesRequest("github"); request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; client.SearchRepo(request); - connection.Received().Get( + connection.Received().Get( Arg.Is(u => u.ToString() == "search/users"), Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); } From f6058f1c4e5f2be020a9f3a0211cb0980a6cf118 Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 16 Mar 2014 03:02:11 +0000 Subject: [PATCH 09/12] fixed updated and created tests --- Octokit.Tests/Clients/SearchClientTests.cs | 127 ++++++++++++++------- 1 file changed, 84 insertions(+), 43 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 7db8a38d..effa9d6a 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -454,44 +454,44 @@ namespace Octokit.Tests.Clients Arg.Is>(d => d["q"] == "github+in:Description")); } - [Fact] - public void TestingTheInQualifier_Name() - { - var connection = Substitute.For(); - var client = new SearchClient(connection); - var request = new SearchRepositoriesRequest("github"); - request.In = new[] { InQualifier.Name }; - client.SearchRepo(request); - connection.Received().Get( - Arg.Is(u => u.ToString() == "search/users"), - Arg.Is>(d => d["q"] == "github+in:Name")); - } + //[Fact] + //public void TestingTheInQualifier_Name() + //{ + // var connection = Substitute.For(); + // var client = new SearchClient(connection); + // var request = new SearchRepositoriesRequest("github"); + // request.In = new[] { InQualifier.Name }; + // client.SearchRepo(request); + // connection.Received().Get( + // Arg.Is(u => u.ToString() == "search/users"), + // Arg.Is>(d => d["q"] == "github+in:Name")); + //} - [Fact] - public void TestingTheInQualifier_Readme() - { - var connection = Substitute.For(); - var client = new SearchClient(connection); - var request = new SearchRepositoriesRequest("github"); - request.In = new[] { InQualifier.Readme }; - client.SearchRepo(request); - connection.Received().Get( - Arg.Is(u => u.ToString() == "search/users"), - Arg.Is>(d => d["q"] == "github+in:Readme")); - } + //[Fact] + //public void TestingTheInQualifier_Readme() + //{ + // var connection = Substitute.For(); + // var client = new SearchClient(connection); + // var request = new SearchRepositoriesRequest("github"); + // request.In = new[] { InQualifier.Readme }; + // client.SearchRepo(request); + // connection.Received().Get( + // Arg.Is(u => u.ToString() == "search/users"), + // Arg.Is>(d => d["q"] == "github+in:Readme")); + //} - [Fact] - public void TestingTheInQualifier_Multiple() - { - var connection = Substitute.For(); - var client = new SearchClient(connection); - var request = new SearchRepositoriesRequest("github"); - request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; - client.SearchRepo(request); - connection.Received().Get( - Arg.Is(u => u.ToString() == "search/users"), - Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); - } + //[Fact] + //public void TestingTheInQualifier_Multiple() + //{ + // var connection = Substitute.For(); + // var client = new SearchClient(connection); + // var request = new SearchRepositoriesRequest("github"); + // request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; + // client.SearchRepo(request); + // connection.Received().Get( + // Arg.Is(u => u.ToString() == "search/users"), + // Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); + //} [Fact] public void TestingTheCreatedQualifier() @@ -503,9 +503,50 @@ namespace Octokit.Tests.Clients request.Created = DateRange.GreaterThan(new DateTime(2011, 1, 1)); client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+created>2011-01-01")); + Arg.Is>(d => d["q"] == "github+created:>2011-01-01")); } + [Fact] + public void TestingTheCreatedQualifier_GreaterThanOrEquals() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been created after year jan 1 2011 + var request = new SearchRepositoriesRequest("github"); + request.Created = DateRange.GreaterThanOrEquals(new DateTime(2011, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+created:>=2011-01-01")); + } + + [Fact] + public void TestingTheCreatedQualifier_LessThan() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been created after year jan 1 2011 + var request = new SearchRepositoriesRequest("github"); + request.Created = DateRange.LessThan(new DateTime(2011, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+created:<2011-01-01")); + } + + + [Fact] + public void TestingTheCreatedQualifier_LessThanOrEquals() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + //get repos where the search contains 'github' and has been created after year jan 1 2011 + var request = new SearchRepositoriesRequest("github"); + request.Created = DateRange.LessThanOrEquals(new DateTime(2011, 1, 1)); + client.SearchRepo(request); + connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+created:<=2011-01-01")); + } + + [Fact] public void TestingTheUpdatedQualifier() { @@ -516,7 +557,7 @@ namespace Octokit.Tests.Clients request.Updated = DateRange.GreaterThan(new DateTime(2013, 1, 1)); client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+pushed>2013-01-01")); + Arg.Is>(d => d["q"] == "github+pushed:>2013-01-01")); } [Fact] @@ -529,7 +570,7 @@ namespace Octokit.Tests.Clients request.Updated = DateRange.GreaterThanOrEquals(new DateTime(2013, 1, 1)); client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+pushed>=2013-01-01")); + Arg.Is>(d => d["q"] == "github+pushed:>=2013-01-01")); } [Fact] @@ -542,7 +583,7 @@ namespace Octokit.Tests.Clients request.Updated = DateRange.LessThan(new DateTime(2013, 1, 1)); client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+pushed<2013-01-01")); + Arg.Is>(d => d["q"] == "github+pushed:<2013-01-01")); } [Fact] @@ -555,7 +596,7 @@ namespace Octokit.Tests.Clients request.Updated = DateRange.LessThanOrEquals(new DateTime(2013, 1, 1)); client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github+pushed<=2013-01-01")); + Arg.Is>(d => d["q"] == "github+pushed:<=2013-01-01")); } [Fact] @@ -578,10 +619,10 @@ namespace Octokit.Tests.Clients var client = new SearchClient(connection); //get repos where search contains 'github' and sort field is forks var request = new SearchRepositoriesRequest("github"); - request.SortField = RepoSearchSort.Forks; + request.SortField = RepoSearchSort.Stars; client.SearchRepo(request); connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["q"] == "github" && d["sort"] == "Forks")); + Arg.Is>(d => d["sort"] == "Stars")); } } From 867feb86e139b0af662d8af67ad850e8dbec579c Mon Sep 17 00:00:00 2001 From: Haroon Date: Sun, 16 Mar 2014 03:08:23 +0000 Subject: [PATCH 10/12] fixed in tests --- Octokit.Tests/Clients/SearchClientTests.cs | 72 +++++++++++----------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index effa9d6a..8897a048 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -454,44 +454,44 @@ namespace Octokit.Tests.Clients Arg.Is>(d => d["q"] == "github+in:Description")); } - //[Fact] - //public void TestingTheInQualifier_Name() - //{ - // var connection = Substitute.For(); - // var client = new SearchClient(connection); - // var request = new SearchRepositoriesRequest("github"); - // request.In = new[] { InQualifier.Name }; - // client.SearchRepo(request); - // connection.Received().Get( - // Arg.Is(u => u.ToString() == "search/users"), - // Arg.Is>(d => d["q"] == "github+in:Name")); - //} + [Fact] + public void TestingTheInQualifier_Name() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Name }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+in:Name")); + } - //[Fact] - //public void TestingTheInQualifier_Readme() - //{ - // var connection = Substitute.For(); - // var client = new SearchClient(connection); - // var request = new SearchRepositoriesRequest("github"); - // request.In = new[] { InQualifier.Readme }; - // client.SearchRepo(request); - // connection.Received().Get( - // Arg.Is(u => u.ToString() == "search/users"), - // Arg.Is>(d => d["q"] == "github+in:Readme")); - //} + [Fact] + public void TestingTheInQualifier_Readme() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Readme }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+in:Readme")); + } - //[Fact] - //public void TestingTheInQualifier_Multiple() - //{ - // var connection = Substitute.For(); - // var client = new SearchClient(connection); - // var request = new SearchRepositoriesRequest("github"); - // request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; - // client.SearchRepo(request); - // connection.Received().Get( - // Arg.Is(u => u.ToString() == "search/users"), - // Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); - //} + [Fact] + public void TestingTheInQualifier_Multiple() + { + var connection = Substitute.For(); + var client = new SearchClient(connection); + var request = new SearchRepositoriesRequest("github"); + request.In = new[] { InQualifier.Readme, InQualifier.Description, InQualifier.Name }; + client.SearchRepo(request); + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => d["q"] == "github+in:Readme,Description,Name")); + } [Fact] public void TestingTheCreatedQualifier() From 09ef69c84315b10d250c6b327c6948d855e42112 Mon Sep 17 00:00:00 2001 From: Haroon Date: Wed, 30 Apr 2014 10:29:45 +0100 Subject: [PATCH 11/12] improve test --- Octokit.Tests/Clients/SearchClientTests.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Octokit.Tests/Clients/SearchClientTests.cs b/Octokit.Tests/Clients/SearchClientTests.cs index 8897a048..c06813fa 100644 --- a/Octokit.Tests/Clients/SearchClientTests.cs +++ b/Octokit.Tests/Clients/SearchClientTests.cs @@ -617,12 +617,16 @@ namespace Octokit.Tests.Clients { var connection = Substitute.For(); var client = new SearchClient(connection); - //get repos where search contains 'github' and sort field is forks var request = new SearchRepositoriesRequest("github"); request.SortField = RepoSearchSort.Stars; + client.SearchRepo(request); - connection.Received().Get(Arg.Is(u => u.ToString() == "search/repositories"), - Arg.Is>(d => d["sort"] == "Stars")); + + connection.Received().Get( + Arg.Is(u => u.ToString() == "search/repositories"), + Arg.Is>(d => + d["q"] == "github" && + d["sort"] == "stars")); } } From 11933714a51924c72ff6fc1dcfa6d2692b30b993 Mon Sep 17 00:00:00 2001 From: Haroon Date: Fri, 15 Aug 2014 19:15:29 +0100 Subject: [PATCH 12/12] added params --- Octokit/Models/Request/SearchRepositoriesRequest.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Octokit/Models/Request/SearchRepositoriesRequest.cs b/Octokit/Models/Request/SearchRepositoriesRequest.cs index 00f60b67..dd7537ab 100644 --- a/Octokit/Models/Request/SearchRepositoriesRequest.cs +++ b/Octokit/Models/Request/SearchRepositoriesRequest.cs @@ -15,7 +15,8 @@ namespace Octokit [DebuggerDisplay("{DebuggerDisplay,nq}")] public class SearchRepositoriesRequest : BaseSearchRequest { - public SearchRepositoriesRequest(string term) : base(term) + public SearchRepositoriesRequest(string term) + : base(term) { Order = SortDirection.Descending; } @@ -718,14 +719,17 @@ namespace Octokit /// /// search by number of stars /// + [Parameter(Value = "stars")] Stars, /// /// search by number of forks /// + [Parameter(Value = "forks")] Forks, /// /// search by last updated /// + [Parameter(Value = "updated")] Updated } @@ -738,7 +742,7 @@ namespace Octokit /// /// only search for forked repos /// - [Parameter(Value="Only")] + [Parameter(Value = "Only")] OnlyForks, /// /// include forked repos into the search