Ejemplo n.º 1
0
        public SearchResultRepository(ISearchQueryElementProvider searchQueryElementProvider,
                                      IIndexNameProvider indexNameProvider,
                                      ISearchQueryPredicateBuilder <T> searchQueryPredicateBuilder)
        {
            Assert.ArgumentNotNull(searchQueryElementProvider, "searchQueryElementProvider");
            Assert.ArgumentNotNull(indexNameProvider, "indexNameProvider");
            Assert.ArgumentNotNull(searchQueryPredicateBuilder, "searchQueryPredicateBuilder");

            SearchQueryElementProvider  = searchQueryElementProvider;
            IndexNameProvider           = indexNameProvider;
            SearchQueryPredicateBuilder = searchQueryPredicateBuilder;
        }
Ejemplo n.º 2
0
        public void Ctor_SearchQueryPredicateBuilderIsNull_ThrowsException(
            ISearchQueryElementProvider elementProvider,
            IIndexNameProvider indexNameProvider)
        {
            // Arrange
            ISearchQueryPredicateBuilder <TestIndexableEntity> predicateBuilder = null;

            // Act
            Action act = () => new SearchResultRepository <TestIndexableEntity>(elementProvider, indexNameProvider, predicateBuilder);

            // Assert
            act.ShouldThrow <ArgumentNullException>();
        }
Ejemplo n.º 3
0
        public void GetSearchResult_ItemsWithDifferentProperties_ReturnItemsFulfillingPredicate(
            ISearchQueryElementProvider elementProvider,
            IIndexNameProvider indexNameProvider,
            ISearchQueryPredicateBuilder <TestIndexableEntity> predicateBuilder,
            ISearchIndex searchIndex,
            [Frozen] SearchProvider provider,
            Switcher <SearchProvider> switcher)
        {
            // Arrange
            elementProvider
            .GetSearchQueryElementRoot <TestIndexableEntity>()
            .Returns(new SearchQueryGrouping <TestIndexableEntity>(LogicalOperator.And));

            indexNameProvider
            .IndexName
            .Returns("predicateTestIndex");

            predicateBuilder
            .GetOutput()
            .Returns(x => x.Name.Contains("F"));

            var queryable = new QueryProviderStub <TestIndexableEntity>(new[]
            {
                CreateTestIndexableEntity("Faucet", paths: new List <ID> {
                    ItemIDs.ContentRoot
                }),
                CreateTestIndexableEntity("Clamp", paths: new List <ID> {
                    ItemIDs.ContentRoot
                })
            }.AsQueryable());

            searchIndex
            .CreateSearchContext()
            .GetQueryable <TestIndexableEntity>()
            .Returns(queryable);

            ContentSearchManager.SearchConfiguration.Indexes[indexNameProvider.IndexName] = searchIndex;

            var sut = new SearchResultRepository <TestIndexableEntity>(elementProvider, indexNameProvider, predicateBuilder);

            // Act
            var actual = sut.GetSearchResult(new SearchCriteria());

            // Assert
            actual.TotalSearchResults.ShouldBeEquivalentTo(1);
            actual.Hits.First().Name.Should().Contain("F");
        }
Ejemplo n.º 4
0
        public void GetSearchResult_ItemsWithDiffentVersions_ReturnItemsWithLatestVersion(
            ISearchQueryElementProvider elementProvider,
            IIndexNameProvider indexNameProvider,
            ISearchQueryPredicateBuilder <TestIndexableEntity> predicateBuilder,
            ISearchIndex searchIndex,
            [Frozen] SearchProvider provider,
            Switcher <SearchProvider> switcher)
        {
            // Arrange
            indexNameProvider
            .IndexName
            .Returns("languageTestIndex");

            predicateBuilder
            .GetOutput()
            .Returns(x => true);

            var queryable = new QueryProviderStub <TestIndexableEntity>(new[]
            {
                CreateTestIndexableEntity("Faucet", paths: new List <ID> {
                    ItemIDs.ContentRoot
                }, latestVersion: true),
                CreateTestIndexableEntity("Fence", paths: new List <ID> {
                    ItemIDs.ContentRoot
                }, latestVersion: false),
            }.AsQueryable());

            searchIndex
            .CreateSearchContext()
            .GetQueryable <TestIndexableEntity>()
            .Returns(queryable);

            ContentSearchManager.SearchConfiguration.Indexes[indexNameProvider.IndexName] = searchIndex;

            var sut = new SearchResultRepository <TestIndexableEntity>(elementProvider, indexNameProvider, predicateBuilder);

            // Act
            var actual = sut.GetSearchResult(new SearchCriteria());

            // Assert
            actual.TotalSearchResults.ShouldBeEquivalentTo(1);
            actual.Hits.First().Fields["_latestversion"].Should().Be("1");
        }
Ejemplo n.º 5
0
        public void GetSearchResult_ItemsBothContentAndNonContent_ReturnContentItems(
            ISearchQueryElementProvider elementProvider,
            IIndexNameProvider indexNameProvider,
            ISearchQueryPredicateBuilder <TestIndexableEntity> predicateBuilder,
            ISearchIndex searchIndex,
            [Frozen] SearchProvider provider,
            Switcher <SearchProvider> switcher)
        {
            // Arrange
            indexNameProvider
            .IndexName
            .Returns("contentItemTestIndex");

            predicateBuilder
            .GetOutput()
            .Returns(x => true);

            var queryable = new QueryProviderStub <TestIndexableEntity>(new[]
            {
                CreateTestIndexableEntity("Faucet", paths: new List <ID> {
                    ItemIDs.ContentRoot
                }),
                CreateTestIndexableEntity("Fence")
            }.AsQueryable());

            searchIndex
            .CreateSearchContext()
            .GetQueryable <TestIndexableEntity>()
            .Returns(queryable);

            ContentSearchManager.SearchConfiguration.Indexes[indexNameProvider.IndexName] = searchIndex;

            var sut = new SearchResultRepository <TestIndexableEntity>(elementProvider, indexNameProvider, predicateBuilder);

            // Act
            var actual = sut.GetSearchResult(new SearchCriteria());

            // Assert
            actual.TotalSearchResults.ShouldBeEquivalentTo(1);
            actual.Hits.First().Paths.Should().Contain(ItemIDs.ContentRoot);
        }