public static ContentIndexPopulator GetContentIndexRebuilder(PropertyEditorCollection propertyEditors, IContentService contentService, ISqlContext sqlContext, bool publishedValuesOnly)
        {
            var contentValueSetBuilder = GetContentValueSetBuilder(propertyEditors, publishedValuesOnly);
            var contentIndexDataSource = new ContentIndexPopulator(true, null, contentService, sqlContext, contentValueSetBuilder);

            return(contentIndexDataSource);
        }
Exemplo n.º 2
0
        public ContentIndexPopulator GetContentIndexRebuilder(IContentService contentService, bool publishedValuesOnly, IUmbracoDatabaseFactory umbracoDatabaseFactory)
        {
            var contentValueSetBuilder = GetContentValueSetBuilder(publishedValuesOnly);
            var contentIndexDataSource = new ContentIndexPopulator(
                _loggerFactory.CreateLogger <ContentIndexPopulator>(),
                publishedValuesOnly,
                null,
                contentService,
                umbracoDatabaseFactory,
                contentValueSetBuilder);

            return(contentIndexDataSource);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Used to create and manage a testable index
        /// </summary>
        /// <param name="publishedValuesOnly"></param>
        /// <param name="index"></param>
        /// <param name="contentRebuilder"></param>
        /// <param name="contentValueSetBuilder"></param>
        /// <param name="parentId"></param>
        /// <returns></returns>
        protected IDisposable GetSynchronousContentIndex(
            bool publishedValuesOnly,
            out UmbracoContentIndex index,
            out ContentIndexPopulator contentRebuilder,
            out ContentValueSetBuilder contentValueSetBuilder,
            int?parentId = null,
            IContentService contentService = null)
        {
            contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(publishedValuesOnly);

            ISqlContext             sqlContext = Mock.Of <ISqlContext>(x => x.Query <IContent>() == Mock.Of <IQuery <IContent> >());
            IUmbracoDatabaseFactory dbFactory  = Mock.Of <IUmbracoDatabaseFactory>(x => x.SqlContext == sqlContext);

            if (contentService == null)
            {
                contentService = IndexInitializer.GetMockContentService();
            }

            contentRebuilder = IndexInitializer.GetContentIndexRebuilder(contentService, publishedValuesOnly, dbFactory);

            var luceneDir = new RandomIdRAMDirectory();

            ContentValueSetValidator validator;

            // if only published values then we'll change the validator for tests to
            // ensure we don't support protected nodes and that we
            // mock the public access service for the special protected node.
            if (publishedValuesOnly)
            {
                var publicAccessServiceMock = new Mock <IPublicAccessService>();
                publicAccessServiceMock.Setup(x => x.IsProtected(It.IsAny <string>()))
                .Returns((string path) =>
                {
                    if (path.EndsWith("," + ExamineDemoDataContentService.ProtectedNode))
                    {
                        return(Attempt <PublicAccessEntry> .Succeed());
                    }
                    return(Attempt <PublicAccessEntry> .Fail());
                });

                var scopeProviderMock = new Mock <IScopeProvider>();
                scopeProviderMock.Setup(x => x.CreateScope(
                                            It.IsAny <IsolationLevel>(),
                                            It.IsAny <RepositoryCacheMode>(),
                                            It.IsAny <IEventDispatcher>(),
                                            It.IsAny <IScopedNotificationPublisher>(),
                                            It.IsAny <bool?>(),
                                            It.IsAny <bool>(),
                                            It.IsAny <bool>()))
                .Returns(Mock.Of <IScope>);

                validator = new ContentValueSetValidator(
                    publishedValuesOnly,
                    false,
                    publicAccessServiceMock.Object,
                    scopeProviderMock.Object,
                    parentId);
            }
            else
            {
                validator = new ContentValueSetValidator(publishedValuesOnly, parentId);
            }

            index = IndexInitializer.GetUmbracoIndexer(
                HostingEnvironment,
                RunningRuntimeState,
                luceneDir,
                validator: validator);

            IDisposable syncMode = index.WithThreadingMode(IndexThreadingMode.Synchronous);

            return(new DisposableWrapper(syncMode, index, luceneDir));
        }