/test/SlowTests/MailingList/DayOfWeekTest.cs

https://github.com/fitzchak/ravendb
C# | 89 lines | 72 code | 12 blank | 5 comment | 8 complexity | 23325c9dd2e7cb1aed3be923aead629f MD5 | raw file
  1. // -----------------------------------------------------------------------
  2. // <copyright file="DayOfWeekTest.cs" company="Hibernating Rhinos LTD">
  3. // Copyright (c) Hibernating Rhinos LTD. All rights reserved.
  4. // </copyright>
  5. // -----------------------------------------------------------------------
  6. using System;
  7. using System.Linq;
  8. using System.Threading.Tasks;
  9. using FastTests;
  10. using Xunit;
  11. namespace SlowTests.MailingList
  12. {
  13. public class DayOfWeekTest : RavenTestBase
  14. {
  15. [Fact]
  16. public void CanQueryDatesByDayOfWeek()
  17. {
  18. using (var store = GetDocumentStore())
  19. {
  20. var knownDay = DateTime.Parse("2014-03-31").Date; // This is a Monday
  21. using (var session = store.OpenSession())
  22. {
  23. var monday = new SampleData { Date = knownDay };
  24. var tuesday = new SampleData { Date = knownDay.AddDays(1) };
  25. var wednesday = new SampleData { Date = knownDay.AddDays(2) };
  26. var thursday = new SampleData { Date = knownDay.AddDays(3) };
  27. var friday = new SampleData { Date = knownDay.AddDays(4) };
  28. var saturday = new SampleData { Date = knownDay.AddDays(5) };
  29. var sunday = new SampleData { Date = knownDay.AddDays(6) };
  30. Assert.Equal(DayOfWeek.Monday, monday.Date.DayOfWeek);
  31. Assert.Equal(DayOfWeek.Tuesday, tuesday.Date.DayOfWeek);
  32. Assert.Equal(DayOfWeek.Wednesday, wednesday.Date.DayOfWeek);
  33. Assert.Equal(DayOfWeek.Thursday, thursday.Date.DayOfWeek);
  34. Assert.Equal(DayOfWeek.Friday, friday.Date.DayOfWeek);
  35. Assert.Equal(DayOfWeek.Saturday, saturday.Date.DayOfWeek);
  36. Assert.Equal(DayOfWeek.Sunday, sunday.Date.DayOfWeek);
  37. session.Store(monday);
  38. session.Store(tuesday);
  39. session.Store(wednesday);
  40. session.Store(thursday);
  41. session.Store(friday);
  42. session.Store(saturday);
  43. session.Store(sunday);
  44. session.SaveChanges();
  45. }
  46. WaitForIndexing(store);
  47. using (var session = store.OpenSession())
  48. {
  49. var onKnownDay = session.Query<SampleData>()
  50. .Customize(x => x.WaitForNonStaleResults())
  51. .Where(x => x.Date == knownDay)
  52. .ToList();
  53. Assert.Equal(1, onKnownDay.Count());
  54. Assert.Equal(DayOfWeek.Monday, onKnownDay.Single().Date.DayOfWeek);
  55. var monday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Monday).ToList();
  56. var tuesday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Tuesday).ToList();
  57. var wednesday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Wednesday).ToList();
  58. var thursday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Thursday).ToList();
  59. var friday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Friday).ToList();
  60. var saturday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Saturday).ToList();
  61. var sunday = session.Query<SampleData>().Where(x => x.Date.DayOfWeek == DayOfWeek.Sunday).ToList();
  62. Assert.Equal(1, monday.Count);
  63. Assert.Equal(1, tuesday.Count);
  64. Assert.Equal(1, wednesday.Count);
  65. Assert.Equal(1, thursday.Count);
  66. Assert.Equal(1, friday.Count);
  67. Assert.Equal(1, saturday.Count);
  68. Assert.Equal(1, sunday.Count);
  69. }
  70. }
  71. }
  72. private class SampleData
  73. {
  74. public DateTime Date { get; set; }
  75. }
  76. }
  77. }