/test/SlowTests/Issues/RavenDB_5669.cs

https://github.com/fitzchak/ravendb
C# | 129 lines | 105 code | 24 blank | 0 comment | 0 complexity | f559e4818e2cefb5bb1d847006f66605 MD5 | raw file
  1. using System.Linq;
  2. using FastTests;
  3. using Raven.Client.Documents;
  4. using Raven.Client.Documents.Indexes;
  5. using Xunit;
  6. namespace SlowTests.Issues
  7. {
  8. public class RavenDB_5669 : RavenTestBase
  9. {
  10. [Fact]
  11. public void WorkingTestWithDifferentSearchTermOrder()
  12. {
  13. using (var store = GetDocumentStore())
  14. {
  15. store.ExecuteIndex(new Animal_Index());
  16. StoreAnimals(store);
  17. using (var session = store.OpenSession())
  18. {
  19. var query = session.Advanced.DocumentQuery<Animal, Animal_Index>();
  20. query.OpenSubclause();
  21. query = query.WhereEquals(a => a.Type, "Cat");
  22. query = query.OrElse();
  23. query = query.Search(a => a.Name, "Peter*");
  24. query = query.AndAlso();
  25. query = query.Search(a => a.Name, "Pan*");
  26. query.CloseSubclause();
  27. var results = query.ToList();
  28. Assert.Equal(1, results.Count);
  29. }
  30. }
  31. }
  32. [Fact]
  33. public void WorkingTestWithSubclause()
  34. {
  35. using (var store = GetDocumentStore())
  36. {
  37. store.ExecuteIndex(new Animal_Index());
  38. StoreAnimals(store);
  39. using (var session = store.OpenSession())
  40. {
  41. var query = session.Advanced.DocumentQuery<Animal, Animal_Index>();
  42. query.OpenSubclause();
  43. query = query.WhereEquals(a => a.Type, "Cat");
  44. query = query.OrElse();
  45. query = query.OpenSubclause();
  46. query = query.Search(a => a.Name, "Pan*");
  47. query = query.AndAlso();
  48. query = query.Search(a => a.Name, "Peter*");
  49. query = query.CloseSubclause();
  50. query.CloseSubclause();
  51. var results = query.ToList();
  52. Assert.Equal(1, results.Count);
  53. }
  54. }
  55. }
  56. [Fact]
  57. public void FailingTest()
  58. {
  59. using (var store = GetDocumentStore())
  60. {
  61. store.ExecuteIndex(new Animal_Index());
  62. StoreAnimals(store);
  63. using (var session = store.OpenSession())
  64. {
  65. var query = session.Advanced.DocumentQuery<Animal, Animal_Index>();
  66. query.OpenSubclause();
  67. query = query.WhereEquals(a => a.Type, "Cat");
  68. query = query.OrElse();
  69. query = query.Search(a => a.Name, "Pan*");
  70. query = query.AndAlso();
  71. query = query.Search(a => a.Name, "Peter*");
  72. query.CloseSubclause();
  73. var results = query.ToList();
  74. Assert.Equal(1, results.Count);
  75. }
  76. }
  77. }
  78. private void StoreAnimals(DocumentStore store)
  79. {
  80. using (var session = store.OpenSession())
  81. {
  82. session.Store(new Animal { Name = "Peter Pan", Type = "Dog" });
  83. session.Store(new Animal { Name = "Peter Poo", Type = "Dog" });
  84. session.Store(new Animal { Name = "Peter Foo", Type = "Dog" });
  85. session.SaveChanges();
  86. }
  87. WaitForIndexing(store);
  88. }
  89. private class Animal
  90. {
  91. public string Type { get; set; }
  92. public string Name { get; set; }
  93. }
  94. private class Animal_Index : AbstractIndexCreationTask<Animal>
  95. {
  96. public Animal_Index()
  97. {
  98. Map = animals => from animal in animals
  99. select new { Name = animal.Name, Type = animal.Type };
  100. Analyze(a => a.Name, "StandardAnalyzer");
  101. Index(a => a.Name, FieldIndexing.Search);
  102. }
  103. }
  104. }
  105. }