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 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);
            }
        }