/ToMigrate/Raven.Tests.Issues/RavenDB_1761.cs

https://github.com/fitzchak/ravendb · C# · 181 lines · 150 code · 26 blank · 5 comment · 8 complexity · c1b0a38c73ba987274e341734877b027 MD5 · raw file

  1. // -----------------------------------------------------------------------
  2. // <copyright file="RavenDB_1761.cs" company="Hibernating Rhinos LTD">
  3. // Copyright (c) Hibernating Rhinos LTD. All rights reserved.
  4. // </copyright>
  5. // -----------------------------------------------------------------------
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using Raven.Abstractions.Data;
  10. using Raven.Client;
  11. using Raven.Client.Embedded;
  12. using Raven.Client.Indexes;
  13. using Raven.Tests.Common;
  14. using Raven.Tests.Helpers;
  15. using Xunit;
  16. namespace Raven.Tests.Issues
  17. {
  18. public class RavenDB_1761 : RavenTestBase
  19. {
  20. [Fact]
  21. public void DateFacetTest()
  22. {
  23. using (var store = NewDocumentStore(requestedStorage: "esent"))
  24. {
  25. new SampleData_Index().Execute(store);
  26. CreateSampleData(store);
  27. CreateFacets(store);
  28. WaitForIndexing(store);
  29. using (var session = store.OpenSession())
  30. {
  31. var result = session.Query<SampleData, SampleData_Index>()
  32. .ToFacets("dateFacets");
  33. foreach (KeyValuePair<string, FacetResult> facet in result.Results)
  34. {
  35. if (facet.Key == "CDate")
  36. {
  37. foreach (FacetValue value in facet.Value.Values)
  38. {
  39. Console.WriteLine(value.Range);
  40. string todayRange = "[2014\\-" + DateTime.Now.Date.Month.ToString("D2") + "\\-" + DateTime.Now.Date.Day.ToString("D2") + "T00\\:00\\:00.0000000 TO NULL]";
  41. if (value.Range == todayRange)
  42. {
  43. Assert.Equal(1, value.Hits);
  44. }
  45. }
  46. }
  47. }
  48. }
  49. }
  50. }
  51. public void CreateSampleData(EmbeddableDocumentStore store)
  52. {
  53. using (var session = store.OpenSession())
  54. {
  55. session.Store(new SampleData
  56. {
  57. Id = "data/1",
  58. CDate = DateTime.Now
  59. });
  60. session.Store(new SampleData
  61. {
  62. Id = "data/2",
  63. CDate = DateTime.Now.AddDays(-1)
  64. });
  65. session.Store(new SampleData
  66. {
  67. Id = "data/3",
  68. CDate = DateTime.Now.AddDays(-7)
  69. });
  70. session.Store(new SampleData
  71. {
  72. Id = "data/4",
  73. CDate = DateTime.Now.AddDays(-1)
  74. });
  75. session.Store(new SampleData
  76. {
  77. Id = "data/5",
  78. CDate = DateTime.Now.AddDays(-1)
  79. });
  80. session.Store(new SampleData
  81. {
  82. Id = "data/6",
  83. CDate = DateTime.Now.AddDays(-1)
  84. });
  85. session.Store(new SampleData
  86. {
  87. Id = "data/7",
  88. CDate = DateTime.Now.AddMonths(-1)
  89. });
  90. session.Store(new SampleData
  91. {
  92. Id = "data/8",
  93. CDate = DateTime.Now.AddMonths(-1)
  94. });
  95. session.Store(new SampleData
  96. {
  97. Id = "data/9",
  98. CDate = DateTime.Now.AddYears(-1)
  99. });
  100. session.Store(new SampleData
  101. {
  102. Id = "data/10",
  103. CDate = DateTime.Now.AddYears(-1)
  104. });
  105. session.SaveChanges();
  106. }
  107. }
  108. public void CreateFacets(EmbeddableDocumentStore store)
  109. {
  110. DateTime todayDate = new DateTime(2013,9,3);
  111. var facets = new List<Facet>
  112. {
  113. new Facet<SampleData>
  114. {
  115. Name = x => x.CDate,
  116. Ranges =
  117. {
  118. x => x.CDate > todayDate, // TODAY
  119. x => x.CDate > todayDate.AddDays(-1) && x.CDate < todayDate, // YESTERDAY
  120. x => x.CDate > todayDate.AddDays(-7), // LAST 7 DAYS
  121. x => x.CDate > todayDate.AddDays(DayOfWeek.Sunday - DateTime.Now.DayOfWeek), // THIS WEEK
  122. x => x.CDate > todayDate.AddDays(DayOfWeek.Sunday - DateTime.Now.DayOfWeek - 7) && x.CDate < todayDate.AddDays(DayOfWeek.Sunday - DateTime.Now.DayOfWeek), // LAST WEEK
  123. x => x.CDate > new DateTime(todayDate.Year, todayDate.Month, 1), // THIS MONTH
  124. x => x.CDate > new DateTime(todayDate.Year, todayDate.Month, 1).AddMonths(-1) && x.CDate < new DateTime(todayDate.Year, todayDate.Month, 1), // LAST MONTH
  125. x => x.CDate > new DateTime(todayDate.Year, 1, 1), // THIS YEAR
  126. x => x.CDate > new DateTime(todayDate.Year - 1, 1, 1) && x.CDate < new DateTime(todayDate.Year, 1, 1), // LAST YEAR
  127. x => x.CDate < new DateTime(todayDate.Year - 1, 1, 1), // OLDER
  128. }
  129. }
  130. };
  131. using (var session = store.OpenSession())
  132. {
  133. session.Store(new FacetSetup { Id = "dateFacets", Facets = facets });
  134. session.SaveChanges();
  135. }
  136. }
  137. public class SampleData_Index : AbstractIndexCreationTask<SampleData>
  138. {
  139. public SampleData_Index()
  140. {
  141. Map = docs => from doc in docs
  142. select new
  143. {
  144. doc.Id,
  145. doc.CDate
  146. };
  147. }
  148. }
  149. public class SampleData
  150. {
  151. public string Id { get; set; }
  152. public DateTime CDate { get; set; }
  153. }
  154. }
  155. }