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);
                }
            }
Ejemplo n.º 2
0
            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());
            }
Ejemplo n.º 4
0
        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);
        }