/test/SlowTests/MailingList/bhiku.cs

https://github.com/fitzchak/ravendb
C# | 112 lines | 93 code | 14 blank | 5 comment | 3 complexity | 3d90154333ea6299151ae5180bdde66b MD5 | raw file
  1. // -----------------------------------------------------------------------
  2. // <copyright file="bhiku.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 FastTests;
  9. using Raven.Client;
  10. using Raven.Client.Documents;
  11. using Raven.Client.Documents.Indexes;
  12. using Raven.Client.Documents.Linq.Indexing;
  13. using Xunit;
  14. namespace SlowTests.MailingList
  15. {
  16. public class Bhiku : RavenTestBase
  17. {
  18. [Fact]
  19. public void CanUseBoost_StartsWith()
  20. {
  21. using (var store = GetDocumentStore())
  22. {
  23. using (var session = store.OpenSession())
  24. {
  25. session.Store(new Student { FirstName = "David", LastName = "Globe" });
  26. session.Store(new Student { FirstName = "Tyson", LastName = "David" });
  27. session.Store(new Student { FirstName = "David", LastName = "Jason" });
  28. session.SaveChanges();
  29. }
  30. new Student_ByName().Execute(store);
  31. using (var session = store.OpenSession())
  32. {
  33. var students = session.Advanced.DocumentQuery<Student>()
  34. .WaitForNonStaleResults()
  35. .WhereStartsWith("FirstName", "David").Boost(3)
  36. .OrElse()
  37. .WhereStartsWith("LastName", "David")
  38. .OrderByScore()
  39. .OrderBy("LastName")
  40. .ToList();
  41. Assert.Equal(3, students.Count);
  42. Assert.Equal("students/1-A", students[0].Id);
  43. Assert.Equal("students/3-A", students[1].Id);
  44. Assert.Equal("students/2-A", students[2].Id);
  45. }
  46. }
  47. }
  48. [Fact]
  49. public void CanUseBoost_Equal()
  50. {
  51. using (var store = GetDocumentStore())
  52. {
  53. using (var session = store.OpenSession())
  54. {
  55. session.Store(new Student { FirstName = "David", LastName = "Globe" });
  56. session.Store(new Student { FirstName = "Tyson", LastName = "David" });
  57. session.Store(new Student { FirstName = "David", LastName = "Jason" });
  58. session.SaveChanges();
  59. }
  60. new Student_ByName().Execute(store);
  61. using (var session = store.OpenSession())
  62. {
  63. var queryable = session.Query<Student, Student_ByName>()
  64. .Customize(x => x.WaitForNonStaleResults())
  65. .Where(x => x.FirstName == ("David") || x.LastName == ("David"))
  66. .OrderByScore().ThenBy(x => x.LastName)
  67. ;
  68. var students = queryable
  69. .ToList();
  70. Assert.Equal(3, students.Count);
  71. Assert.Equal("students/1-A", students[0].Id);
  72. Assert.Equal("students/3-A", students[1].Id);
  73. Assert.Equal("students/2-A", students[2].Id);
  74. }
  75. }
  76. }
  77. private class Student
  78. {
  79. public string Id { get; set; }
  80. public string FirstName { get; set; }
  81. public string LastName { get; set; }
  82. public DateTime DateOfBirth { get; set; }
  83. }
  84. private class Student_ByName : AbstractIndexCreationTask<Student>
  85. {
  86. public Student_ByName()
  87. {
  88. Map = students => from s in students
  89. select new
  90. {
  91. FirstName = s.FirstName.Boost(6),
  92. s.LastName,
  93. s.DateOfBirth,
  94. };
  95. }
  96. }
  97. }
  98. }