private void TestQuery( Func <IQueryable <SearchResultItem>, IList <SearchResultItem> > actFunction, Action <Query> assert) { using (var db = new Db { new ItemBuilder().WithDisplayName("test").Build() }) { var repository = new Mock <IAlgoliaRepository>(); Query query = null; repository.Setup(t => t.SearchAsync(It.IsAny <Query>())) .ReturnsAsync(new JObject()) .Callback((Query q) => query = q); var index = new AlgoliaBaseIndex("algolia_master_index", repository.Object); using (var context = index.CreateSearchContext()) { var queryable = context.GetQueryable <SearchResultItem>(); //Act var actual = actFunction(queryable); //Assert Assert.IsNotNull(actual); repository.Verify(t => t.SearchAsync(It.IsAny <Query>()), Times.Once); assert(query); } } }
public void CrawlerShouldIncludeTemplates() { // arrange using (var db = new Db { _source }) { var item = db.GetItem("/sitecore/content/source"); item.Should().NotBeNull(); var repository = new Mock <IAlgoliaRepository>(); repository.Setup(t => t.ClearIndexAsync()).ReturnsAsync(JObject.Parse(@"{""taskID"": 722}")); var sut = new AlgoliaBaseIndex("test", repository.Object); sut.PropertyStore = new NullPropertyStore(); var configuration = new AlgoliaIndexConfiguration(); configuration.DocumentOptions = new DocumentBuilderOptions(); configuration.IncludeTemplate(TestData.TestTemplateId.ToString()); sut.Configuration = configuration; var crawler = new SitecoreItemCrawler(); crawler.Database = "master"; crawler.Root = "/sitecore/content"; sut.Crawlers.Add(crawler); crawler.Initialize(sut); sut.Initialize(); //Act sut.Rebuild(); //Assert repository.Verify(t => t.SaveObjectsAsync(It.Is <IEnumerable <JObject> >(o => o.Any())), Times.Once); } }
public void CrawlerExludeNotShowInSearchResultsDocuments(string showInSearchResultsFieldName, bool shouldBeCrawled) { // arrange var source = new DbItem("source", TestData.TestItemId, TestData.TestTemplateId) { { "Show In Search Results", "" } }; using (var db = new Db { source }) { var item = db.GetItem("/sitecore/content/source"); item.Should().NotBeNull(); var repository = new Mock <IAlgoliaRepository>(); repository.Setup(t => t.ClearIndexAsync()).ReturnsAsync(JObject.Parse(@"{""taskID"": 722}")); var sut = new AlgoliaBaseIndex("test", repository.Object); sut.PropertyStore = new NullPropertyStore(); var configuration = new AlgoliaIndexConfiguration { DocumentOptions = new DocumentBuilderOptions() }; sut.Configuration = configuration; var crawler = new AlgoliaCrawler { Database = "master", Root = "/sitecore/content", ShowInSearchResultsFieldName = showInSearchResultsFieldName, }; sut.Crawlers.Add(crawler); crawler.Initialize(sut); sut.Initialize(); //Act sut.Rebuild(); //Assert var actual = shouldBeCrawled ? Times.Once() : Times.Never(); repository.Verify(t => t.SaveObjectsAsync(It.Is <IEnumerable <JObject> >(o => o.Any())), actual); } }
public void DeleteTest() { // arrange using (var db = new Db { _source }) { var item = db.GetItem("/sitecore/content/source"); item.Should().NotBeNull(); string id = string.Empty; var repository = new Mock <IAlgoliaRepository>(); repository.Setup(t => t.DeleteAllObjByTag(It.IsAny <string>())) .ReturnsAsync(1) .Callback <string>(s => id = s); var sut = new AlgoliaBaseIndex("test", repository.Object); sut.PropertyStore = new NullPropertyStore(); var configuration = new AlgoliaIndexConfiguration(); configuration.DocumentOptions = new DocumentBuilderOptions(); sut.Configuration = configuration; var crawler = new SitecoreItemCrawler(); crawler.Database = "master"; crawler.Root = "/sitecore/content"; sut.Crawlers.Add(crawler); crawler.Initialize(sut); sut.Initialize(); //Act sut.Delete(new IndexableId <ID>(item.ID)); //Assert repository.Verify(t => t.DeleteAllObjByTag(It.IsAny <string>()), Times.Once); id.Should().Be("id_" + item.ID); repository.Verify(t => t.DeleteAllObjByTag("id_" + item.ID.ToString()), Times.Once); } }