public void AllSortByFieldsAreSortable(V2SortBy v2SortBy) { var metadataProperties = typeof(BaseMetadataDocument) .GetProperties() .ToDictionary(x => x.Name, x => x, StringComparer.OrdinalIgnoreCase); var expectedOrderBy = V2SortByToOrderBy[v2SortBy]; foreach (var clause in expectedOrderBy) { var pieces = clause.Split(new[] { ' ' }, 2); Assert.Equal(2, pieces.Length); Assert.Contains(pieces[1], new[] { "asc", "desc" }); // This is a magic property name that refers to the document's score, not a particular property. if (pieces[0] == "search.score()") { continue; } Assert.Contains(pieces[0], metadataProperties.Keys); var property = metadataProperties[pieces[0]]; var customAttributeTypes = property .CustomAttributes .Select(x => x.AttributeType) .ToArray(); Assert.Contains(typeof(IsSortableAttribute), customAttributeTypes); } }
public async Task ParsesSortBy(string sortBy, V2SortBy expected) { await _target.V2SearchAsync(sortBy : sortBy); _searchService.Verify( x => x.V2SearchAsync(It.Is <V2SearchRequest>(r => r.SortBy == expected)), Times.Once); }
public void SortBy(V2SortBy v2SortBy) { var request = new V2SearchRequest { SortBy = v2SortBy, }; var expectedOrderBy = V2SortByToOrderBy[v2SortBy]; var output = _target.V2Search(request, It.IsAny <bool>()); Assert.NotNull(output.OrderBy); Assert.Equal(expectedOrderBy, output.OrderBy.ToArray()); }
private static IList <string> GetOrderBy(V2SortBy sortBy) { IList <string> orderBy; switch (sortBy) { case V2SortBy.Popularity: orderBy = ScoreDesc; break; case V2SortBy.LastEditedDesc: orderBy = LastEditedDesc; break; case V2SortBy.PublishedDesc: orderBy = PublishedDesc; break; case V2SortBy.SortableTitleAsc: orderBy = SortableTitleAsc; break; case V2SortBy.SortableTitleDesc: orderBy = SortableTitleDesc; break; case V2SortBy.CreatedAsc: orderBy = CreatedAsc; break; case V2SortBy.CreatedDesc: orderBy = CreatedDesc; break; case V2SortBy.TotalDownloadsAsc: orderBy = TotalDownloadsAsc; break; case V2SortBy.TotalDownloadsDesc: orderBy = TotalDownloadsDesc; break; default: throw new ArgumentException($"The provided {nameof(V2SortBy)} is not supported.", nameof(sortBy)); } return(orderBy); }