public async Task ShouldReduce()
{
_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(4, await session.QueryIndexAsync<ArticlesByDay>().Count());
Assert.Equal(1, await session.QueryIndexAsync<ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 1).DayOfYear).Count());
Assert.Equal(1, await session.QueryIndexAsync<ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 2).DayOfYear).Count());
Assert.Equal(1, await session.QueryIndexAsync<ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 3).DayOfYear).Count());
Assert.Equal(1, await session.QueryIndexAsync<ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 4).DayOfYear).Count());
Assert.Equal(4, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 1).DayOfYear).Count());
Assert.Equal(3, await session.QueryAsync<Article, ArticlesByDay>(x => x.DayOfYear == new DateTime(2011, 11, 2).DayOfYear).Count());
Assert.Equal(2, 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());
}
}