public void WithSize_WithInvalidSkip_ThrowsException(int?skip)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText");

            Func <AzureSearchQueryBuilder> action = () => builder.WithSkip(skip);

            action.Should().ThrowExactly <ArgumentOutOfRangeException>();
        }
Esempio n. 2
0
        public (string SearchText, SearchOptions Options) GenerateSearchQuery()
        {
            var searchTerms = SearchText.TransformSegments(s => s
                                                           .TransformWhen(s => s.EndsWith("'s"), s => s.Substring(0, s.Length - 2))
                                                           .TransformWhen(s => s.EndsWith("s'"), s => s.Substring(0, s.Length - 2))
                                                           .TransformWhen(s => s.EndsWith("s"), s => s.Substring(0, s.Length - 1))
                                                           .RemoveNonAlphanumericChars()
                                                           .AppendWildcardWhenLastCharIsAlphanumeric());

            var searchText = searchTerms.Any()
                ? $"\"{SearchText.Trim().EscapeSimpleQuerySearchOperators()}\" | ({searchTerms})"
                : !string.IsNullOrWhiteSpace(SearchText)
                    ? $"{SearchText.Trim().EscapeSimpleQuerySearchOperators()}*"
                    : "*";

            var builder = new AzureSearchQueryBuilder(searchText)
                          .WithSearchMode(SearchMode.All)
                          .WithSearchFields(SearchFields?.ToArray())
                          .WithSearchInFilter(nameof(Lars.NotionalNVQLevelv2), NotionalNVQLevelv2Filters)
                          .WithSearchInFilter(nameof(Lars.AwardOrgCode), AwardOrgCodeFilters)
                          .WithSearchInFilter(nameof(Lars.AwardOrgAimRef), AwardOrgAimRefFilters)
                          .WithSearchInFilter(nameof(Lars.SectorSubjectAreaTier1), SectorSubjectAreaTier1Filters)
                          .WithSearchInFilter(nameof(Lars.SectorSubjectAreaTier2), SectorSubjectAreaTier2Filters)
                          .WithFacets(Facets?.ToArray())
                          .WithSize(PageSize)
                          .WithIncludeTotalCount();

            if (CertificationEndDateFilter.HasValue)
            {
                builder.WithFilters($"({nameof(Lars.CertificationEndDate)} ge {CertificationEndDateFilter.Value:O} or {nameof(Lars.CertificationEndDate)} eq null)");
            }

            if (PageNumber.HasValue)
            {
                builder.WithSkip(PageSize * (PageNumber - 1));
            }

            return(builder.Build());
        }