public void GithubQuery_RepositoriesSearch_ReturnsRepositoriesList() { // Arrange const string expectedQuery = "q=tetris in:name+language:assembly&sort=stars&order=asc"; var mockGithub = new Mock <IGithubClient>(); mockGithub.Setup(g => g.SearchRepositories(expectedQuery)).Returns(new List <GithubRepository>() { new GithubRepository() { Name = "Tetris #1", Url = "Tetris #1", Stars = 0, FullName = "Tetris #1", Id = 1, Language = "Assembly" }, new GithubRepository() { Name = "Tetris #2", Url = "Tetris #2", Stars = 1, FullName = "Tetris #2", Id = 2, Language = "Assembly" }, new GithubRepository() { Name = "Tetris #3", Url = "Tetris #3", Stars = 2, FullName = "Tetris #3", Id = 3, Language = "Assembly" } }); var provider = new GithubQueryProvider(mockGithub.Object); var repositories = new GithubQuery <GithubRepository>(provider); // Act var filteredRepositories = repositories.Where(e => e.Name == "tetris" && e.Language == "assembly").OrderBy(e => e.Stars).ToList(); // Assert Assert.IsNotNull(filteredRepositories, "Filtered list should not be null!"); Assert.Greater(filteredRepositories.Count, 0, "Filtered list should not be empty!"); for (var i = 0; i < filteredRepositories.Count - 1; i++) { Assert.GreaterOrEqual(filteredRepositories[i + 1].Stars, filteredRepositories[i].Stars, "Items should be ordered by stars!"); } }
private static readonly PullRequestRecordRepository repository = new PullRequestRecordRepository(null, null); //[TODO] разобраться с репозиторием public async Task <List <PullRequestRecordData> > HandleAsync(GithubQuery query) { if (query.queryData != null) { if (query.queryData.Id.HasValue) { if (await repository.ExistsAsync(e => e.Id == query.queryData.Id)) { return(new List <PullRequestRecordData>() { await repository.GetAsync(query.queryData.Id.Value) }); } return(null); } Func <PullRequestRecordData, bool> t = e => { if (query.queryData.DelayHistory?.SequenceEqual(e.DelayHistory) ?? false) { return(false); } if (query.queryData.GapHistory?.SequenceEqual(e.GapHistory) ?? false) { return(false); } if (query.queryData.StateHistory?.SequenceEqual(e.StateHistory) ?? false) { return(false); } if (query.queryData.LastCommitDate != e.LastCommitDate) { return(false); } return(query.queryData.LastReviewCommentDate == e.LastReviewCommentDate); }; if (query.elementsPerPageNumber.HasValue) { query.pageNumber ??= 50; return(((List <PullRequestRecordData>) await repository.FindAsync(e => t(e))).GetRange( (query.pageNumber.Value - 1) * query.elementsPerPageNumber.Value, query.elementsPerPageNumber.Value)); } return((List <PullRequestRecordData>) await repository.FindAsync(e => t(e))); } return(null); }