public async Task RemovingDocumentShouldDeleteReducedIndex()
{
_store.RegisterIndexes<ArticleIndexProvider>();
using (var session = _store.CreateSession())
{
var dates = new[]
{
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 3),
new DateTime(2011, 11, 4),
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 3),
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 1)
};
var articles = dates.Select(x => new Article
{
PublishedUtc = x
});
foreach (var article in articles)
{
session.Save(article);
}
}
using (var session = _store.CreateSession())
{
Assert.Equal(10, await session.QueryAsync().For<Article>().Count());
Assert.Equal(4, await session.QueryIndexAsync<ArticlesByDay>().Count());
}
// delete a document
using (var session = _store.CreateSession())
{
var article = await session.QueryAsync<Article, ArticlesByDay>().Where(b => b.DayOfYear == new DateTime(2011, 11, 4).DayOfYear).FirstOrDefault();
Assert.NotNull(article);
session.Delete(article);
}
// there should be only 3 indexes left
using (var session = _store.CreateSession())
{
// document was deleted
Assert.Equal(9, await session.QueryAsync().For<Article>().Count());
// index was deleted
Assert.Equal(3, await session.QueryIndexAsync<ArticlesByDay>().Count());
}
}