public void Build_WithSearchText_ReturnsQueryWithExpectedSearchText(string searchText, string expectedResult)
        {
            var builder = new AzureSearchQueryBuilder(searchText);

            var result = builder.Build();

            result.SearchText.Should().Be(expectedResult);
        }
        public void Build_WithSearchMode_ReturnsQueryWithExpectedSearchMode(SearchMode?searchMode)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSearchMode(searchMode);

            var result = builder.Build();

            result.Options.SearchMode.Should().Be(searchMode);
        }
        public void Build_WithSkip_ReturnsQueryWithExpectedSkip(int?skip)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSkip(skip);

            var result = builder.Build();

            result.Options.Skip.Should().Be(skip);
        }
        public void Build_WithInvludeTotalCount_ReturnsQueryWithExpectedTotalCount(bool?includeTotalCount)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithIncludeTotalCount(includeTotalCount);

            var result = builder.Build();

            result.Options.IncludeTotalCount.Should().Be(includeTotalCount);
        }
        public void Build_WithScoringProfile_ReturnsQueryWithExpectedScoringProfile(string scoringProfile)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithScoringProfile(scoringProfile);

            var result = builder.Build();

            result.Options.ScoringProfile.Should().Be(scoringProfile);
        }
        public void Build_WithSize_ReturnsQueryWithExpectedSize(int?size)
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSize(size);

            var result = builder.Build();

            result.Options.Size.Should().Be(size);
        }
        public void Build_WithDelimiter_ReturnsQueryWithExpectedFilter()
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSearchInFilter("TestVariable1", new[] { "TestValue1", "TestValue2", "TestValue3" }, ',');

            var result = builder.Build();

            result.Options.Filter.Should().Be("search.in(TestVariable1, 'TestValue1,TestValue2,TestValue3', ',')");
        }
        public void Build_WithSingleSearchInFilterAndMultipleValues_ReturnsQueryWithExpectedFilter()
        {
            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSearchInFilter("TestVariable1", new[] { "TestValue1", "TestValue2", "TestValue3" });

            var result = builder.Build();

            result.Options.Filter.Should().Be("search.in(TestVariable1, 'TestValue1|TestValue2|TestValue3', '|')");
        }
        public (string SearchText, SearchOptions Options) GenerateSearchQuery()
        {
            var builder = new AzureSearchQueryBuilder(LearnAimRef)
                          .WithSearchMode(SearchMode.All)
                          .WithSearchFields(nameof(Lars.LearnAimRef))
                          .WithSize(1);

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

            return(builder.Build());
        }
        private static AzureSearchQuery CreateSearchQuery(EPiServer.Shell.Search.Query query, CultureInfo currentCulture)
        {
            var queryBuilder = new AzureSearchQueryBuilder()
                               .Top(query.MaxResults)
                               .SearchTerm(query.SearchQuery);

            if (query.FilterOnCulture)
            {
                queryBuilder.Filter(AzureSearchQueryFilter.Equals(nameof(ContentDocument.ContentLanguage),
                                                                  currentCulture.Name));
            }

            return(queryBuilder.Build());
        }
        public void Build_ReturnsExpectedQuery()
        {
            var searchFields = new[]
            {
                "TestSearchField1",
                "TestSearchField2",
                "TestSearchField3"
            };

            var facets = new[]
            {
                "TestFacet1",
                "TestFacet2",
                "TestFacet3"
            };

            var orderBy = new[]
            {
                "TestOrderBy1",
                "TestOrderBy2",
                "TestOrderBy3"
            };

            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSearchMode(SearchMode.All)
                          .WithSearchFields(searchFields)
                          .WithFacets(facets)
                          .WithSearchInFilter("TestVariable1", new[] { "TestValue1" })
                          .WithSearchInFilter("TestVariable2", new[] { "TestValue2", "TestValue3" })
                          .WithSearchInFilter("TestVariable3", new[] { "TestValue4", "TestValue5", "TestValue6" }, ',')
                          .WithOrderBy(orderBy)
                          .WithScoringProfile("TestScoringProfile")
                          .WithSize(12)
                          .WithSkip(34)
                          .WithIncludeTotalCount();

            var result = builder.Build();

            result.SearchText.Should().Be("TestSearchText");
            result.Options.SearchMode.Should().Be(SearchMode.All);
            result.Options.SearchFields.Should().Equal(searchFields);
            result.Options.Facets.Should().Equal(facets);
            result.Options.Filter.Should().Be("search.in(TestVariable1, 'TestValue1', '|') and search.in(TestVariable2, 'TestValue2|TestValue3', '|') and search.in(TestVariable3, 'TestValue4,TestValue5,TestValue6', ',')");
            result.Options.OrderBy.Should().Equal(orderBy);
            result.Options.ScoringProfile.Should().Be("TestScoringProfile");
            result.Options.Size.Should().Be(12);
            result.Options.Skip.Should().Be(34);
            result.Options.IncludeTotalCount.Should().BeTrue();
        }
        public void Build_WithSearchFields_ReturnsQueryWithExpectedSearchFields()
        {
            var searchFields = new[]
            {
                "TestSearchField1",
                "TestSearchField2",
                "TestSearchField3"
            };

            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithSearchFields(searchFields);

            var result = builder.Build();

            result.Options.SearchFields.Should().Equal(searchFields);
        }
        public void Build_WithOrderBy_ReturnsQueryWithExpectedOrderBy()
        {
            var orderBy = new[]
            {
                "TestOrderBy1",
                "TestOrderBy2",
                "TestOrderBy3"
            };

            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithOrderBy(orderBy);

            var result = builder.Build();

            result.Options.OrderBy.Should().Equal(orderBy);
        }
        public void Build_WithFacets_ReturnsQueryWithExpectedFacets()
        {
            var facets = new[]
            {
                "TestFacet1",
                "TestFacet2",
                "TestFacet3"
            };

            var builder = new AzureSearchQueryBuilder("TestSearchText")
                          .WithFacets(facets);

            var result = builder.Build();

            result.Options.Facets.Should().Equal(facets);
        }
Esempio n. 15
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());
        }
Esempio n. 16
0
        public void GivenQueryBuilder_ThenFilterValueIsProper(AzureSearchQueryBuilder builder, string expectedFilterValue)
        {
            var query = builder.Build();

            Assert.That(query.Filter, Is.EqualTo(expectedFilterValue));
        }