/Octokit.Tests/Clients/SearchClientTests.cs
C# | 1053 lines | 902 code | 129 blank | 22 comment | 144 complexity | 20db5d242c9e3a794560680f4e3e1d90 MD5 | raw file
- using System;
- using System.Collections.Generic;
- using NSubstitute;
- using Xunit;
- using System.Threading.Tasks;
- namespace Octokit.Tests.Clients
- {
- /// <summary>
- /// Client tests mostly just need to make sure they call the IApiConnection with the correct
- /// relative Uri. No need to fake up the response. All *those* tests are in ApiConnectionTests.cs.
- /// </summary>
- public class SearchClientTests
- {
- public class TheCtor
- {
- [Fact]
- public void EnsuresNonNullArguments()
- {
- Assert.Throws<ArgumentNullException>(() => new SearchClient(null));
- }
- }
- public class TheSearchUsersMethod
- {
- [Fact]
- public void RequestsTheCorrectUrl()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- client.SearchUsers(new SearchUsersRequest("something"));
- connection.Received().Get<SearchUsersResult>(Arg.Is<Uri>(u => u.ToString() == "search/users"), Arg.Any<Dictionary<string, string>>());
- }
- [Fact]
- public async Task EnsuresNonNullArguments()
- {
- var client = new SearchClient(Substitute.For<IApiConnection>());
- await Assert.ThrowsAsync<ArgumentNullException>(() => client.SearchUsers(null));
- }
- [Fact]
- public void TestingTheTermParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github"));
- }
- [Fact]
- public void TestingTheAccountTypeQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.AccountType = AccountSearchType.User;
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+type:User"));
- }
- [Fact]
- public void TestingTheAccountTypeQualifier_Org()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.AccountType = AccountSearchType.Org;
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+type:Org"));
- }
- [Fact]
- public void TestingTheInQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get users where the fullname contains 'github'
- var request = new SearchUsersRequest("github");
- request.In = new[] { UserInQualifier.Fullname };
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Fullname"));
- }
- [Fact]
- public void TestingTheInQualifier_Email()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.In = new[] { UserInQualifier.Email };
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Email"));
- }
- [Fact]
- public void TestingTheInQualifier_Username()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.In = new[] { UserInQualifier.Username };
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Username"));
- }
- [Fact]
- public void TestingTheInQualifier_Multiple()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.In = new[] { UserInQualifier.Username, UserInQualifier.Fullname, UserInQualifier.Email };
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Username,Fullname,Email"));
- }
- [Fact]
- public void TestingTheReposQualifier_GreaterThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Repositories = Range.GreaterThan(5);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+repos:>5"));
- }
- [Fact]
- public void TestingTheReposQualifier_GreaterThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Repositories = Range.GreaterThanOrEquals(5);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+repos:>=5"));
- }
- [Fact]
- public void TestingTheReposQualifier_LessThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Repositories = Range.LessThanOrEquals(5);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+repos:<=5"));
- }
- [Fact]
- public void TestingTheReposQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Repositories = Range.LessThan(5);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+repos:<5"));
- }
- [Fact]
- public void TestingTheLocationQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Location = "San Francisco";
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+location:San Francisco"));
- }
- [Fact]
- public void TestingTheLanguageQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get users who have mostly repos where language is Ruby
- var request = new SearchUsersRequest("github");
- request.Language = Language.Ruby;
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+language:Ruby"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_GreaterThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Created = DateRange.GreaterThan(new DateTime(2014, 1, 1));
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:>2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_GreaterThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Created = DateRange.GreaterThanOrEquals(new DateTime(2014, 1, 1));
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:>=2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Created = DateRange.LessThanOrEquals(new DateTime(2014, 1, 1));
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:<=2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Created = DateRange.LessThan(new DateTime(2014, 1, 1));
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:<2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_Between()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Created = DateRange.Between(new DateTime(2014, 1, 1), new DateTime(2014, 2, 1));
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:2014-01-01..2014-02-01"));
- }
- [Fact]
- public void TestingTheFollowersQualifier_GreaterThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Followers = Range.GreaterThan(1);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+followers:>1"));
- }
- [Fact]
- public void TestingTheFollowersQualifier_GreaterThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Followers = Range.GreaterThanOrEquals(1);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+followers:>=1"));
- }
- [Fact]
- public void TestingTheFollowersQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Followers = Range.LessThan(1);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+followers:<1"));
- }
- [Fact]
- public void TestingTheFollowersQualifier_LessThanOrEqualTo()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Followers = Range.LessThanOrEquals(1);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+followers:<=1"));
- }
- [Fact]
- public void TestingTheFollowersQualifier_Range()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchUsersRequest("github");
- request.Followers = new Range(1, 1000);
- client.SearchUsers(request);
- connection.Received().Get<SearchUsersResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/users"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+followers:1..1000"));
- }
- }
- public class TheSearchRepoMethod
- {
- [Fact]
- public void RequestsTheCorrectUrl()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- client.SearchRepo(new SearchRepositoriesRequest("something"));
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Any<Dictionary<string, string>>());
- }
- [Fact]
- public async Task EnsuresNonNullArguments()
- {
- var client = new SearchClient(Substitute.For<IApiConnection>());
- await Assert.ThrowsAsync<ArgumentNullException>(() => client.SearchRepo(null));
- }
- [Fact]
- public void TestingTheSizeQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.Size = Range.GreaterThan(1);
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+size:>1"));
- }
- [Fact]
- public void TestingTheStarsQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos who's stargazers are greater than 500
- var request = new SearchRepositoriesRequest("github");
- request.Stars = Range.GreaterThan(500);
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+stars:>500"));
- }
- [Fact]
- public void TestingTheStarsQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos who's stargazers are less than 500
- var request = new SearchRepositoriesRequest("github");
- request.Stars = Range.LessThan(500);
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+stars:<500"));
- }
- [Fact]
- public void TestingTheStarsQualifier_LessThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos who's stargazers are less than 500 or equal to
- var request = new SearchRepositoriesRequest("github");
- request.Stars = Range.LessThanOrEquals(500);
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+stars:<=500"));
- }
- [Fact]
- public void TestingTheForksQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //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().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+forks:>50"));
- }
- [Fact]
- public void TestingTheForkQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //search repos that contains rails and forks are included in the search
- var request = new SearchRepositoriesRequest("github");
- request.Fork = ForkQualifier.IncludeForks;
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+fork:IncludeForks"));
- }
- [Fact]
- public void TestingTheLangaugeQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos who's language is Ruby
- var request = new SearchRepositoriesRequest("github");
- request.Language = Language.Ruby;
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+language:Ruby"));
- }
- [Fact]
- public void TestingTheInQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos where the Description contains the test 'github'
- var request = new SearchRepositoriesRequest("github");
- request.In = new[] { InQualifier.Description };
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Description"));
- }
- [Fact]
- public void TestingTheInQualifier_Name()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.In = new[] { InQualifier.Name };
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Name"));
- }
- [Fact]
- public void TestingTheInQualifier_Readme()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.In = new[] { InQualifier.Readme };
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Readme"));
- }
- [Fact]
- public void TestingTheInQualifier_Multiple()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+in:Readme,Description,Name"));
- }
- [Fact]
- public void TestingTheCreatedQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- 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.GreaterThan(new DateTime(2011, 1, 1));
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:>2011-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_GreaterThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:>=2011-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:<2011-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:<=2011-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_Between()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.Created = DateRange.Between(new DateTime(2011, 1, 1), new DateTime(2012, 11, 11));
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+created:2011-01-01..2012-11-11"));
- }
- [Fact]
- public void TestingTheUpdatedQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+pushed:>2013-01-01"));
- }
- [Fact]
- public void TestingTheUpdatedQualifier_GreaterThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+pushed:>=2013-01-01"));
- }
- [Fact]
- public void TestingTheUpdatedQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- 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.LessThan(new DateTime(2013, 1, 1));
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+pushed:<2013-01-01"));
- }
- [Fact]
- public void TestingTheUpdatedQualifier_LessThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- 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<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+pushed:<=2013-01-01"));
- }
- [Fact]
- public void TestingTheUpdatedQualifier_Between()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.Updated = DateRange.Between(new DateTime(2012, 4, 30), new DateTime(2012, 7, 4));
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+pushed:2012-04-30..2012-07-04"));
- }
- [Fact]
- public void TestingTheUserQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- //get repos where search contains 'github' and user/org is 'github'
- var request = new SearchRepositoriesRequest("github");
- request.User = "rails";
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "github+user:rails"));
- }
- [Fact]
- public void TestingTheSortParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest("github");
- request.SortField = RepoSearchSort.Stars;
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d =>
- d["q"] == "github" &&
- d["sort"] == "stars"));
- }
- [Fact]
- public void TestingTheSearchParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchRepositoriesRequest();
- client.SearchRepo(request);
- connection.Received().Get<SearchRepositoryResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/repositories"),
- Arg.Is<Dictionary<string, string>>(d =>
- string.IsNullOrEmpty(d["q"])));
- }
- }
- public class TheSearchIssuesMethod
- {
- [Fact]
- public void RequestsTheCorrectUrl()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- client.SearchIssues(new SearchIssuesRequest("something"));
- connection.Received().Get<SearchIssuesResult>(Arg.Is<Uri>(u => u.ToString() == "search/issues"), Arg.Any<Dictionary<string, string>>());
- }
- [Fact]
- public async Task EnsuresNonNullArguments()
- {
- var client = new SearchClient(Substitute.For<IApiConnection>());
- await Assert.ThrowsAsync<ArgumentNullException>(() => client.SearchIssues(null));
- }
- [Fact]
- public void TestingTheTermParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("pub");
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "pub"));
- }
- [Fact]
- public void TestingTheSortParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.SortField = IssueSearchSort.Comments;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d =>
- d["sort"] == "comments"));
- }
- [Fact]
- public void TestingTheOrderParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.SortField = IssueSearchSort.Updated;
- request.Order = SortDirection.Ascending;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d =>
- d["sort"] == "updated" &&
- d["order"] == "asc"));
- }
- [Fact]
- public void TestingTheDefaultOrderParameter()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d =>
- d["order"] == "desc"));
- }
- [Fact]
- public void TestingTheInQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.In = new[] { IssueInQualifier.Comment };
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+in:comment"));
- }
- [Fact]
- public void TestingTheInQualifiers_Multiple()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.In = new[] { IssueInQualifier.Body, IssueInQualifier.Title };
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+in:body,title"));
- }
- [Fact]
- public void TestingTheTypeQualifier_Issue()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Type = IssueTypeQualifier.Issue;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+type:issue"));
- }
- [Fact]
- public void TestingTheTypeQualifier_PullRequest()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Type = IssueTypeQualifier.PullRequest;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+type:pr"));
- }
- [Fact]
- public void TestingTheAuthorQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Author = "alfhenrik";
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+author:alfhenrik"));
- }
- [Fact]
- public void TestingTheAssigneeQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Assignee = "alfhenrik";
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+assignee:alfhenrik"));
- }
- [Fact]
- public void TestingTheMentionsQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Mentions = "alfhenrik";
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+mentions:alfhenrik"));
- }
- [Fact]
- public void TestingTheCommenterQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Commenter = "alfhenrik";
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+commenter:alfhenrik"));
- }
- [Fact]
- public void TestingTheInvolvesQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Involves = "alfhenrik";
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+involves:alfhenrik"));
- }
- [Fact]
- public void TestingTheStateQualifier_Open()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.State = ItemState.Open;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+state:open"));
- }
- [Fact]
- public void TestingTheStateQualifier_Closed()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.State = ItemState.Closed;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+state:closed"));
- }
- [Fact]
- public void TestingTheLabelsQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Labels = new[] { "bug" };
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+label:bug"));
- }
- [Fact]
- public void TestingTheLabelsQualifier_Multiple()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Labels = new[] { "bug", "feature" };
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+label:bug+label:feature"));
- }
- [Fact]
- public void TestingTheLanguageQualifier()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Language = Language.CSharp;
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+language:C#"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_GreaterThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Created = DateRange.GreaterThan(new DateTime(2014, 1, 1));
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+created:>2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_GreaterThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Created = DateRange.GreaterThanOrEquals(new DateTime(2014, 1, 1));
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+created:>=2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Created = DateRange.LessThan(new DateTime(2014, 1, 1));
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+created:<2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_LessThanOrEquals()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Created = DateRange.LessThanOrEquals(new DateTime(2014, 1, 1));
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+created:<=2014-01-01"));
- }
- [Fact]
- public void TestingTheCreatedQualifier_Between()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
- var request = new SearchIssuesRequest("something");
- request.Created = DateRange.Between(new DateTime(2014, 1, 1), new DateTime(2014, 2, 2));
- client.SearchIssues(request);
- connection.Received().Get<SearchIssuesResult>(
- Arg.Is<Uri>(u => u.ToString() == "search/issues"),
- Arg.Is<Dictionary<string, string>>(d => d["q"] == "something+created:2014-01-01..2014-02-02"));
- }
- [Fact]
- public void TestingTheMergedQualifier_GreaterThan()
- {
- var connection = Substitute.For<IApiConnection>();
- var client = new SearchClient(connection);
-