public void ShouldGetFreeProducts(
      SearchRepository sut,
      ISearchIndex searchIndex,
      IIndexable indexable,
      [Frozen]SearchProvider provider,
      Switcher<SearchProvider> switcher)
    {
      // arrange
      searchIndex
        .CreateSearchContext()
        .GetQueryable<ProductSearchResultItem>()
        .Returns(new[]
          {
            new ProductSearchResultItem { Free = true },
            new ProductSearchResultItem { Free = false },
            new ProductSearchResultItem { Free = true }
          }.AsQueryable());

      ContentSearchManager.SearchConfiguration.Indexes["indexName"] = searchIndex;
      provider.GetContextIndexName(indexable, Arg.Any<ICorePipeline>()).Returns("indexName");

      // act
      var products = sut.GetProducts(indexable);

      // assert
      Assert.Equal(2, products.Count());
    }
   public AzureUpdateContext(ISearchIndex index, ICommitPolicyExecutor commitPolicyExecutor)
 : this(index)
   {
       if (commitPolicyExecutor == null)
           throw new ArgumentNullException("commitPolicyExecutor");
       this.CommitPolicyExecutor = commitPolicyExecutor;
   }
 public override void Initialize(ISearchIndex searchIndex)
 {
     SearchIndexInitializableUtility.Initialize(searchIndex, new object[1]
     {
         this.IndexDocumentPropertyMapper
     });
     base.Initialize(searchIndex);
 }
 public IndexData(ISearchIndex index, IIndexable indexable, Document document, ConcurrentQueue<AzureField> fields)
 {
     this.Document = document;
     this.Fields = fields;
     this.AzureIndex = (IAzureProviderIndex)index;
     
     this.UpdateTerm = new AzureField("s_key", index.Configuration.IndexFieldStorageValueFormatter.FormatValueForIndexStorage(indexable.UniqueId.Value, "s_key"), BuildKeyField("s_key"));
     this.FullUpdateTerm = new AzureField("s_uniqueid", index.Configuration.IndexFieldStorageValueFormatter.FormatValueForIndexStorage(indexable.UniqueId.Value, "s_uniqueid"), AzureFieldBuilder.BuildField("s_uniqueid", index.Configuration.IndexFieldStorageValueFormatter.FormatValueForIndexStorage(indexable.UniqueId.Value, "s_uniqueid"), this.AzureIndex));
     this.Culture = indexable.Culture;
 }
Exemplo n.º 5
0
        private void DeleteItem(ISearchIndex index, IIndexableId indexableId, string itemPath)
        {
            WriteVerbose($"Removing item {itemPath} from index {index.Name}.");
            var job = IndexCustodian.DeleteItem(index, indexableId);

            if (job != null && AsJob)
            {
                WriteVerbose($"Background job created: {job.Name}");
                WriteObject(job);
            }
        }
Exemplo n.º 6
0
 protected TraktCommandBase(
     ITraktApiClient traktApiClient,
     ISearchRepository searchRepository,
     ISearchIndex searchIndex,
     ILogger logger)
 {
     _searchRepository = searchRepository;
     _searchIndex      = searchIndex;
     _logger           = logger;
     TraktApiClient    = traktApiClient;
 }
        public bool ShouldUpdateIndex(ISearchIndex searchIndex, ISearchIndexSummary searchIndexSummary)
        {
            // Always update when index has been explicitly set as to update
            if (_indexesToUpdate != null && _indexesToUpdate.Contains(searchIndex))
            {
                return(true);
            }

            // Only update when index is not empty: updating an empty index would trigger a rebuild.
            return(searchIndexSummary.NumberOfDocuments > 0);
        }
        public AzureUpdateContext(ISearchIndex index)
        {
            Assert.ArgumentNotNull(index, "index");

            Index = index;
            this.contentSearchSettings = index.Locator.GetInstance<IContentSearchConfigurationSettings>();
            IsParallel = this.contentSearchSettings.IsParallelIndexingEnabled();
            this.ParallelOptions = new ParallelOptions();
            int num = this.contentSearchSettings.ParallelIndexingMaxThreadLimit();
            if (num > 0)
                this.ParallelOptions.MaxDegreeOfParallelism = num;
            this.CommitPolicyExecutor = new NullCommitPolicyExecutor();
        }
 public AzureUpdateContext(ISearchIndex index)
 {
     Assert.ArgumentNotNull((object)index, "index");
    
     Index = index;
     IsParallel = false;
     
     //this.ParallelOptions = new ParallelOptions();
     //int num = this.contentSearchSettings.ParallelIndexingMaxThreadLimit();
     //if (num > 0)
     //    this.ParallelOptions.MaxDegreeOfParallelism = num;
     this.CommitPolicyExecutor = (ICommitPolicyExecutor)new NullCommitPolicyExecutor();
 }
 public QuerySearchIndexMusicVideosHandler(
     ISearchIndex searchIndex,
     IMusicVideoRepository musicVideoRepository,
     IPlexPathReplacementService plexPathReplacementService,
     IJellyfinPathReplacementService jellyfinPathReplacementService,
     IEmbyPathReplacementService embyPathReplacementService)
 {
     _searchIndex                    = searchIndex;
     _musicVideoRepository           = musicVideoRepository;
     _plexPathReplacementService     = plexPathReplacementService;
     _jellyfinPathReplacementService = jellyfinPathReplacementService;
     _embyPathReplacementService     = embyPathReplacementService;
 }
 public SynchronizePlexLibrariesHandler(
     IMediaSourceRepository mediaSourceRepository,
     IPlexSecretStore plexSecretStore,
     IPlexServerApiClient plexServerApiClient,
     ILogger <SynchronizePlexLibrariesHandler> logger,
     ISearchIndex searchIndex)
 {
     _mediaSourceRepository = mediaSourceRepository;
     _plexSecretStore       = plexSecretStore;
     _plexServerApiClient   = plexServerApiClient;
     _logger      = logger;
     _searchIndex = searchIndex;
 }
    public void Items_IndexMatchDb_ReturnsAllItems([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem)
    {
      //arrange
      var results = GetResults(contentItems);

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(contentItems.Length);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);

    }
Exemplo n.º 13
0
        public void Initialize(ISearchIndex searchIndex)
        {
            // Store index
            m_index = searchIndex;

            // Create Twitter token
            var token = new Token(
                ConfigurationManager.AppSettings["accessToken"],
                ConfigurationManager.AppSettings["accessTokenSecret"],
                ConfigurationManager.AppSettings["consumerKey"],
                ConfigurationManager.AppSettings["consumerSecret"]);

            // Start twitter streaming thread
            var task = new Task(() => StartTwitterStream(token));
            task.Start();
        }
    public void Items_NotLatestItemVersionExists_ReturnsOnlyLatestItems([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem)
    {
      //arrange
      var results = GetResults(contentItems).ToArray();
      results.First().IsLatestVersion = false;

      InitIndexes(index, searchProvider, results.AsQueryable());
      var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(contentItems.Length-1);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);

    }
Exemplo n.º 15
0
        private void RebuildIndex(ISearchIndex index, bool isRemoteIndex = false)
        {
            if (IndexCustodian.IsRebuilding(index))
            {
                WriteVerbose(String.Format("Skipping full index rebuild for {0} because it's already running.", index.Name));
                return;
            }

            const string message = "Starting full index rebuild for {0}.";
            WriteVerbose(String.Format(message, index.Name));
            var job = (isRemoteIndex) ? IndexCustodian.FullRebuildRemote(index) : IndexCustodian.FullRebuild(index);
            if (job == null) return;

            WriteVerbose(String.Format("Background job created: {0}", job.Name));

            if (AsJob)
            {
                WriteObject(job);
            }
        }
    public void Items_DifferentItemLanguageExists_ReturnsOnlyContextLanguage([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var results = GetResults(contentItems).ToArray();
      results.First().Language = "noncontext";
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      InitIndexes(index, searchProvider, results.AsQueryable());
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(contentItems.Length - 1);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
    public void Items_NotLatestItemVersionExists_ReturnsOnlyLatestItems([Content] DbItem[] contentItems, ISearchIndex index, [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher, [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var results = GetResults(contentItems).ToArray();
      results.First().IsLatestVersion = false;
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      InitIndexes(index, searchProvider, results.AsQueryable());
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(contentItems.Length - 1);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
 public static void Initialize(ISearchIndex index, params object[] instances)
 {
     TypeActionHelper.Call<ISearchIndexInitializable>(i => i.Initialize(index), instances);
 }
   public AzureUpdateContext(ISearchIndex index, ICommitPolicy commitPolicy, ICommitPolicyExecutor commitPolicyExecutor)
 : this(index, commitPolicyExecutor)
   {
   }
    public void Items_IndexMatchDb_ReturnsAllItems([Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var results = GetResults(contentItems);
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(contentItems.Length);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
    public void Items_StandardValuesExistsInContentTree_IgnoresStandartValueByName(Db db, ISearchIndex index, [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var id = ID.NewID;
      var dbItem = new DbItem(Sitecore.Constants.StandardValuesItemName, id);
      db.Add(dbItem);

      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>().Returns(new QueryableDatasourceRenderingSettings
      {
        SearchResultsLimit = 10
      });

      var results = GetResults(new List<DbItem>
      {
        dbItem
      });

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items.ToArray();


      //assert
      items.Count().Should().Be(0);
    }
    private static void InitIndexes(ISearchIndex index, SearchProvider searchProvider,  IQueryable<SearchResultItem> results)
    {
      ContentSearchManager.SearchConfiguration.Indexes.Clear();
      searchProvider?.GetContextIndexName(Arg.Any<IIndexable>(), Arg.Any<ICorePipeline>()).Returns("CustomIndexName");

      var providerSearchContext = Substitute.For<IProviderSearchContext>();
      index.ReturnsForAll(providerSearchContext);
      providerSearchContext.GetQueryable<SearchResultItem>(Arg.Any<IExecutionContext[]>()).Returns(results);
      ContentSearchManager.SearchConfiguration.Indexes.Add("CustomIndexName", index);
    }
    public void Items_IndexHaveNonexistentItems_ReturnsExistentItems([Content] DbItem[] contentItems, DbItem brokenItem, List<DbItem> indexedItems, ISearchIndex index, string indexName, [ReplaceSearchProvider] SearchProvider searchProvider, [Content] Item renderingItem)
    {
      //arrange
      indexedItems.AddRange(contentItems);
      indexedItems.Add(brokenItem);

      var results = GetResults(indexedItems);

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering() { DataSource = "notEmpty" } };

      //act
      var items = renderingModel.Items.ToArray();


      //assert
      items.Count().Should().Be(contentItems.Length);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
Exemplo n.º 24
0
 public StartsWith(ISearchIndex searchIndex, string val)
 {
     SearchIndex = searchIndex;
     Val = val;
 }
    public void Items_IndexEmpty_ReturnsEmptyCollection(List<DbItem> indexedItems, ISearchIndex index, string indexName, [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher, [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      InitIndexes(index, searchProvider, new List<SearchResultItem>().AsQueryable());
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(0);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
    public void Items_StandardValuesExists_IgnoresItemsUnderTemplates(Db db, ISearchIndex index,
      [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher,
      [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var templateID = ID.NewID;
      db.Add(new DbTemplate("Sample", templateID));
      var stdValues = db.GetItem("/sitecore/templates/Sample").Add(Sitecore.Constants.StandardValuesItemName, new TemplateID(templateID));

      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      var results = GetResults(new List<DbItem>
      {
        new DbItem(Sitecore.Constants.StandardValuesItemName, stdValues.ID)
      });

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items.ToArray();


      //assert
      items.Count().Should().Be(0);
    }
        public void AddIndex(ISearchIndex index)
        {
            Assert.ArgumentNotNull(index, "index");
            Assert.IsFalse((this.Indexes.ContainsKey(index.Name) ? 1 : 0) != 0, "An index with the name \"{0}\" have already been added.", index.Name);
            this.Indexes[index.Name] = index;
            if (index.Configuration == null)
            {
                XmlNode configNode = this.factory.GetConfigNode(this.DefaultIndexConfigurationPath);
                if (configNode == null)
                    throw new ConfigurationException("Index must have a ProviderIndexConfiguration associated with it. Please check your config.");
                var config = this.factory.CreateObject<ProviderIndexConfiguration>(configNode);
                if (config == null)
                    throw new ConfigurationException("Unable to create configuration object from path specified in setting 'ContentSearch.AzureDefaultIndexConfigurationPath'. Please check your config.");

                index.Configuration = config;
            }
            if (!index.Configuration.InitializeOnAdd)
                return;

            index.Initialize();
        }
    public void Items_ItemTemplateSet_FiltersByTemplateId(Db db, [Content] DbTemplate templateItem, [Content] DbItem[] contentItems, ISearchIndex index, [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher, string indexName, [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      var dbItem = new DbItem("templated", ID.NewID, templateItem.ID);
      db.Add(dbItem);
      var dbItems = contentItems.ToList();
      dbItems.Add(dbItem);
      var results = GetResults(dbItems);
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      InitIndexes(index, searchProvider, results);


      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        Rendering = new Rendering(),
        DatasourceString = "notEmpty",
        DatasourceTemplate = db.GetItem(templateItem.ID)
      };

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(1);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
Exemplo n.º 29
0
 public ContentSearchIndex(ISearchIndex index)
 {
     Assert.ArgumentNotNull(index, "index");
     _searchIndex = index;
 }
    public void Items_ItemTemplateSet_FiltersByTemplateId(Db db, [Content] DbTemplate templateItem,  [Content] DbItem[] contentItems, ISearchIndex index, [ReplaceSearchProvider] SearchProvider searchProvider, string indexName, [Content] Item renderingItem)
    {
      //arrange
      var dbItem = new DbItem("templated", ID.NewID, templateItem.ID);
      db.Add(dbItem);
      var dbItems = contentItems.ToList();
      dbItems.Add(dbItem);
      var results = GetResults(dbItems);

      InitIndexes(index, searchProvider,  results);

      
      var renderingModel = new QueryableDatasourceRenderingModel() {Rendering = new Rendering() {DataSource = "notEmpty"} };
      renderingModel.DatasourceTemplate = db.GetItem(templateItem.ID);

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(1);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
Exemplo n.º 31
0
 public SearchManager(ISearchIndex masterIndex, ISearchIndex coreIndex, ISearchIndex webIndex)
 {
     _masterIndex = masterIndex;
     _coreIndex = coreIndex;
     _webIndex = webIndex;
 }
    public void Items_EmptyDatasource_ReturnsEmptyCollection([ResolvePipeline("getRenderingDatasource")] EmptyPipeline processor, List<DbItem> indexedItems,SearchProvider searchProvider, ISearchIndex index, string indexName, [Content] Item renderingItem)
    {
      //arrange

      InitIndexes(index, searchProvider, new List<SearchResultItem>().AsQueryable());
      var renderingModel = new QueryableDatasourceRenderingModel() { Rendering = new Rendering()};

      //act
      var items = renderingModel.Items;

      //assert
      items.Count().Should().Be(0);
      index.CreateSearchContext().DidNotReceiveWithAnyArgs();
 
    }
Exemplo n.º 33
0
 public IProviderSearchContext CreateContext(ISearchIndex index)
 {
     return ContentSearchManager.GetIndex(index.Name).CreateSearchContext();
 }
    public void Items_IndexHaveNonexistentItems_ReturnsExistentItems([Content] DbItem[] contentItems, DbItem brokenItem,
      List<DbItem> indexedItems, ISearchIndex index, string indexName,
      [Frozen] SearchProvider searchProvider, Switcher<SearchProvider> searchProviderSwitcher,
      [Content] Item renderingItem, IRenderingPropertiesRepository renderingPropertiesRepository)
    {
      //arrange
      indexedItems.AddRange(contentItems);
      indexedItems.Add(brokenItem);
      renderingPropertiesRepository.Get<QueryableDatasourceRenderingSettings>()
        .Returns(new QueryableDatasourceRenderingSettings
        {
          SearchResultsLimit = 10
        });

      var results = GetResults(indexedItems);

      InitIndexes(index, searchProvider, results);
      var renderingModel = new QueryableDatasourceRenderingModel(renderingPropertiesRepository)
      {
        DatasourceString = "notEmpty"
      };

      //act
      var items = renderingModel.Items.ToArray();


      //assert
      items.Count().Should().Be(contentItems.Length);
      index.CreateSearchContext().ReceivedWithAnyArgs(1);
    }
 public override void Initialize(ISearchIndex index)
 {
     base.Initialize(index);
     var msg = string.Format("[Index={0}] Initializing XmlDatabaseCrawler. DB:{1} / Root:{2}", index.Name, base.Database, base.Root);
     CrawlingLog.Log.Info(msg, null);
 }