public async Task UpdatingDocumentShouldUpdateReducedIndex()
{
_store.RegisterIndexes<ArticleIndexProvider>();
using (var session = _store.CreateSession())
{
var dates = new[]
{
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 1),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 2),
new DateTime(2011, 11, 3),
new DateTime(2011, 11, 3),
new DateTime(2011, 11, 4)
};
foreach (var date in dates)
{
session.Save(new Article { PublishedUtc = date });
}
}
using (var session = _store.CreateSession())
{
// 10 articles
Assert.Equal(10, await session.QueryAsync().For<Article>().Count());
// 4 indexes as there are 4 different dates
Assert.Equal(4, await session.QueryIndexAsync<ArticlesByDay>().Count());
}
// change the published date of an article
using (var session = _store.CreateSession())
{
var article = await session
.QueryAsync<Article, ArticlesByDay>()
.Where(b => b.DayOfYear == new DateTime(2011, 11, 2).DayOfYear)
.FirstOrDefault();
Assert.NotNull(article);
article.PublishedUtc = new DateTime(2011, 11, 3);
session.Save(article);
}
// there should be the same number of indexes
using (var session = _store.CreateSession())
{
Assert.Equal(10, await session.QueryAsync().For<Article>().Count());
Assert.Equal(4, await session.QueryIndexAsync<ArticlesByDay>().Count());
Assert.Equal(4, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 1).DayOfYear).Count());
Assert.Equal(2, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 2).DayOfYear).Count());
Assert.Equal(3, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 3).DayOfYear).Count());
Assert.Equal(1, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 4).DayOfYear).Count());
}
}