mongoid 7.1.11 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +10 -3
  4. data/lib/config/locales/en.yml +37 -14
  5. data/lib/mongoid/association/depending.rb +1 -6
  6. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
  7. data/lib/mongoid/association/many.rb +3 -3
  8. data/lib/mongoid/association/proxy.rb +1 -1
  9. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  10. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
  11. data/lib/mongoid/association/referenced/has_many/enumerable.rb +37 -2
  12. data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
  13. data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
  14. data/lib/mongoid/atomic/modifiers.rb +1 -1
  15. data/lib/mongoid/attributes/dynamic.rb +1 -1
  16. data/lib/mongoid/attributes.rb +1 -8
  17. data/lib/mongoid/clients/factory.rb +17 -0
  18. data/lib/mongoid/composable.rb +1 -0
  19. data/lib/mongoid/config/environment.rb +1 -9
  20. data/lib/mongoid/config.rb +3 -0
  21. data/lib/mongoid/contextual/atomic.rb +2 -7
  22. data/lib/mongoid/contextual/mongo.rb +23 -4
  23. data/lib/mongoid/contextual/none.rb +0 -3
  24. data/lib/mongoid/copyable.rb +7 -3
  25. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  26. data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
  27. data/lib/mongoid/criteria/queryable/selectable.rb +23 -8
  28. data/lib/mongoid/criteria/queryable/selector.rb +7 -3
  29. data/lib/mongoid/criteria/queryable/storable.rb +7 -7
  30. data/lib/mongoid/criteria.rb +58 -8
  31. data/lib/mongoid/document.rb +19 -9
  32. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
  33. data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
  34. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
  35. data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
  36. data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
  37. data/lib/mongoid/errors/invalid_query.rb +41 -0
  38. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  39. data/lib/mongoid/errors.rb +7 -2
  40. data/lib/mongoid/extensions.rb +1 -0
  41. data/lib/mongoid/factory.rb +27 -10
  42. data/lib/mongoid/fields/validators/macro.rb +22 -9
  43. data/lib/mongoid/fields.rb +3 -0
  44. data/lib/mongoid/findable.rb +50 -14
  45. data/lib/mongoid/indexable.rb +2 -2
  46. data/lib/mongoid/interceptable.rb +2 -4
  47. data/lib/mongoid/matchable.rb +1 -149
  48. data/lib/mongoid/matcher/all.rb +22 -0
  49. data/lib/mongoid/matcher/and.rb +21 -0
  50. data/lib/mongoid/matcher/elem_match.rb +35 -0
  51. data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
  52. data/lib/mongoid/matcher/eq.rb +11 -0
  53. data/lib/mongoid/matcher/eq_impl.rb +32 -0
  54. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
  55. data/lib/mongoid/matcher/exists.rb +15 -0
  56. data/lib/mongoid/matcher/expression.rb +40 -0
  57. data/lib/mongoid/matcher/expression_operator.rb +19 -0
  58. data/lib/mongoid/matcher/field_expression.rb +63 -0
  59. data/lib/mongoid/matcher/field_operator.rb +52 -0
  60. data/lib/mongoid/matcher/gt.rb +17 -0
  61. data/lib/mongoid/matcher/gte.rb +17 -0
  62. data/lib/mongoid/matcher/in.rb +25 -0
  63. data/lib/mongoid/matcher/lt.rb +17 -0
  64. data/lib/mongoid/matcher/lte.rb +17 -0
  65. data/lib/mongoid/matcher/ne.rb +16 -0
  66. data/lib/mongoid/matcher/nin.rb +11 -0
  67. data/lib/mongoid/matcher/nor.rb +25 -0
  68. data/lib/mongoid/matcher/not.rb +29 -0
  69. data/lib/mongoid/matcher/or.rb +21 -0
  70. data/lib/mongoid/matcher/regex.rb +41 -0
  71. data/lib/mongoid/matcher/size.rb +26 -0
  72. data/lib/mongoid/matcher.rb +127 -0
  73. data/lib/mongoid/persistable/deletable.rb +1 -1
  74. data/lib/mongoid/persistence_context.rb +1 -3
  75. data/lib/mongoid/query_cache.rb +64 -62
  76. data/lib/mongoid/reloadable.rb +2 -7
  77. data/lib/mongoid/serializable.rb +1 -1
  78. data/lib/mongoid/stringified_symbol.rb +53 -0
  79. data/lib/mongoid/tasks/database.rb +1 -1
  80. data/lib/mongoid/traversable.rb +111 -4
  81. data/lib/mongoid/validatable/associated.rb +1 -1
  82. data/lib/mongoid/validatable/presence.rb +3 -3
  83. data/lib/mongoid/validatable/uniqueness.rb +1 -1
  84. data/lib/mongoid/version.rb +1 -1
  85. data/lib/mongoid.rb +23 -1
  86. data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
  87. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
  88. data/spec/README.md +19 -4
  89. data/spec/integration/app_spec.rb +84 -174
  90. data/spec/integration/associations/embedded_spec.rb +94 -0
  91. data/spec/integration/associations/has_many_spec.rb +67 -14
  92. data/spec/integration/associations/has_one_spec.rb +67 -14
  93. data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
  94. data/spec/integration/atomic/modifiers_spec.rb +117 -0
  95. data/spec/integration/discriminator_key_spec.rb +354 -0
  96. data/spec/integration/discriminator_value_spec.rb +207 -0
  97. data/spec/integration/document_spec.rb +0 -21
  98. data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
  99. data/spec/integration/matcher_operator_data/all.yml +140 -0
  100. data/spec/integration/matcher_operator_data/and.yml +93 -0
  101. data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
  102. data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
  103. data/spec/integration/matcher_operator_data/eq.yml +191 -0
  104. data/spec/integration/matcher_operator_data/exists.yml +213 -0
  105. data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
  106. data/spec/integration/matcher_operator_data/gt.yml +132 -0
  107. data/spec/integration/matcher_operator_data/gte.yml +132 -0
  108. data/spec/integration/matcher_operator_data/implicit.yml +331 -0
  109. data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
  110. data/spec/integration/matcher_operator_data/in.yml +194 -0
  111. data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
  112. data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
  113. data/spec/integration/matcher_operator_data/lt.yml +132 -0
  114. data/spec/integration/matcher_operator_data/lte.yml +132 -0
  115. data/spec/integration/matcher_operator_data/multiple.yml +29 -0
  116. data/spec/integration/matcher_operator_data/ne.yml +150 -0
  117. data/spec/integration/matcher_operator_data/nin.yml +114 -0
  118. data/spec/integration/matcher_operator_data/nor.yml +126 -0
  119. data/spec/integration/matcher_operator_data/not.yml +196 -0
  120. data/spec/integration/matcher_operator_data/or.yml +137 -0
  121. data/spec/integration/matcher_operator_data/regex.yml +174 -0
  122. data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
  123. data/spec/integration/matcher_operator_data/size.yml +174 -0
  124. data/spec/integration/matcher_operator_spec.rb +100 -0
  125. data/spec/integration/matcher_spec.rb +189 -0
  126. data/spec/integration/server_query_spec.rb +142 -0
  127. data/spec/integration/stringified_symbol_field_spec.rb +190 -0
  128. data/spec/lite_spec_helper.rb +4 -3
  129. data/spec/mongoid/association/depending_spec.rb +78 -26
  130. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +0 -50
  131. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
  132. data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
  133. data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
  134. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +0 -17
  135. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
  136. data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
  137. data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
  138. data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
  139. data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
  140. data/spec/mongoid/atomic/paths_spec.rb +0 -41
  141. data/spec/mongoid/atomic_spec.rb +23 -0
  142. data/spec/mongoid/attributes/nested_spec.rb +1 -1
  143. data/spec/mongoid/attributes_spec.rb +0 -241
  144. data/spec/mongoid/clients/factory_spec.rb +35 -9
  145. data/spec/mongoid/clients/options_spec.rb +3 -11
  146. data/spec/mongoid/clients/sessions_spec.rb +1 -6
  147. data/spec/mongoid/config/environment_spec.rb +8 -86
  148. data/spec/mongoid/config_spec.rb +28 -0
  149. data/spec/mongoid/contextual/atomic_spec.rb +29 -81
  150. data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
  151. data/spec/mongoid/contextual/mongo_spec.rb +70 -16
  152. data/spec/mongoid/copyable_spec.rb +197 -18
  153. data/spec/mongoid/copyable_spec_models.rb +28 -0
  154. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -36
  155. data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
  156. data/spec/mongoid/criteria_spec.rb +204 -43
  157. data/spec/mongoid/document_query_spec.rb +0 -51
  158. data/spec/mongoid/document_spec.rb +90 -36
  159. data/spec/mongoid/equality_spec.rb +0 -1
  160. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  161. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
  162. data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
  163. data/spec/mongoid/factory_spec.rb +261 -28
  164. data/spec/mongoid/fields_spec.rb +48 -2
  165. data/spec/mongoid/findable_spec.rb +32 -0
  166. data/spec/mongoid/indexable_spec.rb +28 -2
  167. data/spec/mongoid/inspectable_spec.rb +29 -2
  168. data/spec/mongoid/interceptable_spec.rb +2 -2
  169. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
  170. data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
  171. data/spec/mongoid/persistable/creatable_spec.rb +108 -25
  172. data/spec/mongoid/persistable/deletable_spec.rb +86 -0
  173. data/spec/mongoid/persistable/savable_spec.rb +174 -16
  174. data/spec/mongoid/persistable/settable_spec.rb +0 -30
  175. data/spec/mongoid/persistable/updatable_spec.rb +0 -2
  176. data/spec/mongoid/persistable_spec.rb +2 -2
  177. data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
  178. data/spec/mongoid/query_cache_spec.rb +442 -41
  179. data/spec/mongoid/reloadable_spec.rb +72 -0
  180. data/spec/mongoid/serializable_spec.rb +21 -3
  181. data/spec/mongoid/traversable_spec.rb +1100 -0
  182. data/spec/shared/lib/mrss/constraints.rb +10 -92
  183. data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
  184. data/spec/shared/lib/mrss/spec_organizer.rb +2 -32
  185. data/spec/spec_helper.rb +3 -3
  186. data/spec/support/constraints.rb +24 -0
  187. data/spec/support/helpers.rb +1 -1
  188. data/spec/{app → support}/models/actor.rb +1 -1
  189. data/spec/{app → support}/models/address.rb +0 -4
  190. data/spec/support/models/armrest.rb +10 -0
  191. data/spec/{app → support}/models/browser.rb +1 -1
  192. data/spec/{app → support}/models/canvas.rb +1 -1
  193. data/spec/{app → support}/models/coding.rb +1 -1
  194. data/spec/support/models/crate.rb +13 -0
  195. data/spec/support/models/deed.rb +8 -0
  196. data/spec/{app → support}/models/dictionary.rb +0 -6
  197. data/spec/{app → support}/models/driver.rb +1 -1
  198. data/spec/support/models/guitar.rb +5 -0
  199. data/spec/support/models/idnodef.rb +8 -0
  200. data/spec/support/models/instrument.rb +9 -0
  201. data/spec/{app → support}/models/item.rb +1 -1
  202. data/spec/{app → support}/models/mop.rb +0 -10
  203. data/spec/support/models/order.rb +11 -0
  204. data/spec/{app → support}/models/owner.rb +2 -0
  205. data/spec/{app → support}/models/palette.rb +1 -1
  206. data/spec/{app → support}/models/person.rb +1 -10
  207. data/spec/support/models/piano.rb +5 -0
  208. data/spec/support/models/profile.rb +18 -0
  209. data/spec/support/models/publication.rb +5 -0
  210. data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
  211. data/spec/support/models/seat.rb +25 -0
  212. data/spec/{app → support}/models/shape.rb +2 -2
  213. data/spec/support/models/system_role.rb +7 -0
  214. data/spec/{app → support}/models/tool.rb +2 -2
  215. data/spec/support/models/toy.rb +10 -0
  216. data/spec/{app → support}/models/truck.rb +2 -0
  217. data/spec/{app → support}/models/vehicle.rb +7 -2
  218. data/spec/{app → support}/models/writer.rb +2 -2
  219. data/spec/support/spec_config.rb +1 -9
  220. data.tar.gz.sig +0 -0
  221. metadata +839 -820
  222. metadata.gz.sig +2 -2
  223. data/lib/mongoid/errors/empty_config_file.rb +0 -26
  224. data/lib/mongoid/errors/invalid_config_file.rb +0 -26
  225. data/lib/mongoid/matchable/all.rb +0 -30
  226. data/lib/mongoid/matchable/and.rb +0 -32
  227. data/lib/mongoid/matchable/default.rb +0 -121
  228. data/lib/mongoid/matchable/elem_match.rb +0 -36
  229. data/lib/mongoid/matchable/eq.rb +0 -23
  230. data/lib/mongoid/matchable/exists.rb +0 -25
  231. data/lib/mongoid/matchable/gt.rb +0 -25
  232. data/lib/mongoid/matchable/gte.rb +0 -25
  233. data/lib/mongoid/matchable/in.rb +0 -26
  234. data/lib/mongoid/matchable/lt.rb +0 -25
  235. data/lib/mongoid/matchable/lte.rb +0 -25
  236. data/lib/mongoid/matchable/ne.rb +0 -23
  237. data/lib/mongoid/matchable/nin.rb +0 -24
  238. data/lib/mongoid/matchable/nor.rb +0 -38
  239. data/lib/mongoid/matchable/or.rb +0 -35
  240. data/lib/mongoid/matchable/regexp.rb +0 -30
  241. data/lib/mongoid/matchable/size.rb +0 -23
  242. data/spec/app/models/customer.rb +0 -11
  243. data/spec/app/models/customer_address.rb +0 -12
  244. data/spec/app/models/publication.rb +0 -5
  245. data/spec/integration/callbacks_models.rb +0 -49
  246. data/spec/integration/callbacks_spec.rb +0 -216
  247. data/spec/integration/contextual/empty_spec.rb +0 -142
  248. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
  249. data/spec/mongoid/matchable/all_spec.rb +0 -34
  250. data/spec/mongoid/matchable/and_spec.rb +0 -190
  251. data/spec/mongoid/matchable/default_spec.rb +0 -140
  252. data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
  253. data/spec/mongoid/matchable/eq_spec.rb +0 -49
  254. data/spec/mongoid/matchable/exists_spec.rb +0 -60
  255. data/spec/mongoid/matchable/gt_spec.rb +0 -89
  256. data/spec/mongoid/matchable/gte_spec.rb +0 -87
  257. data/spec/mongoid/matchable/in_spec.rb +0 -52
  258. data/spec/mongoid/matchable/lt_spec.rb +0 -88
  259. data/spec/mongoid/matchable/lte_spec.rb +0 -88
  260. data/spec/mongoid/matchable/ne_spec.rb +0 -49
  261. data/spec/mongoid/matchable/nin_spec.rb +0 -51
  262. data/spec/mongoid/matchable/nor_spec.rb +0 -210
  263. data/spec/mongoid/matchable/or_spec.rb +0 -134
  264. data/spec/mongoid/matchable/regexp_spec.rb +0 -62
  265. data/spec/mongoid/matchable/size_spec.rb +0 -28
  266. data/spec/mongoid/matchable_spec.rb +0 -856
  267. data/spec/shared/bin/get-mongodb-download-url +0 -17
  268. data/spec/shared/bin/s3-copy +0 -45
  269. data/spec/shared/bin/s3-upload +0 -69
  270. data/spec/shared/lib/mrss/cluster_config.rb +0 -226
  271. data/spec/shared/lib/mrss/docker_runner.rb +0 -271
  272. data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
  273. data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
  274. data/spec/shared/lib/mrss/utils.rb +0 -15
  275. data/spec/shared/share/Dockerfile.erb +0 -323
  276. data/spec/shared/share/haproxy-1.conf +0 -16
  277. data/spec/shared/share/haproxy-2.conf +0 -17
  278. data/spec/shared/shlib/distro.sh +0 -73
  279. data/spec/shared/shlib/server.sh +0 -367
  280. data/spec/shared/shlib/set_env.sh +0 -131
  281. /data/spec/{app → support}/models/account.rb +0 -0
  282. /data/spec/{app → support}/models/acolyte.rb +0 -0
  283. /data/spec/{app → support}/models/actress.rb +0 -0
  284. /data/spec/{app → support}/models/address_component.rb +0 -0
  285. /data/spec/{app → support}/models/address_number.rb +0 -0
  286. /data/spec/{app → support}/models/agency.rb +0 -0
  287. /data/spec/{app → support}/models/agent.rb +0 -0
  288. /data/spec/{app → support}/models/album.rb +0 -0
  289. /data/spec/{app → support}/models/alert.rb +0 -0
  290. /data/spec/{app → support}/models/animal.rb +0 -0
  291. /data/spec/{app → support}/models/answer.rb +0 -0
  292. /data/spec/{app → support}/models/appointment.rb +0 -0
  293. /data/spec/{app → support}/models/array_field.rb +0 -0
  294. /data/spec/{app → support}/models/article.rb +0 -0
  295. /data/spec/{app → support}/models/artist.rb +0 -0
  296. /data/spec/{app → support}/models/artwork.rb +0 -0
  297. /data/spec/{app → support}/models/audio.rb +0 -0
  298. /data/spec/{app → support}/models/augmentation.rb +0 -0
  299. /data/spec/{app → support}/models/author.rb +0 -0
  300. /data/spec/{app → support}/models/baby.rb +0 -0
  301. /data/spec/{app → support}/models/band.rb +0 -0
  302. /data/spec/{app → support}/models/bar.rb +0 -0
  303. /data/spec/{app → support}/models/basic.rb +0 -0
  304. /data/spec/{app → support}/models/bed.rb +0 -0
  305. /data/spec/{app → support}/models/big_palette.rb +0 -0
  306. /data/spec/{app → support}/models/birthday.rb +0 -0
  307. /data/spec/{app → support}/models/bomb.rb +0 -0
  308. /data/spec/{app → support}/models/book.rb +0 -0
  309. /data/spec/{app → support}/models/breed.rb +0 -0
  310. /data/spec/{app → support}/models/building.rb +0 -0
  311. /data/spec/{app → support}/models/building_address.rb +0 -0
  312. /data/spec/{app → support}/models/bus.rb +0 -0
  313. /data/spec/{app → support}/models/business.rb +0 -0
  314. /data/spec/{app → support}/models/callback_test.rb +0 -0
  315. /data/spec/{app → support}/models/car.rb +0 -0
  316. /data/spec/{app → support}/models/cat.rb +0 -0
  317. /data/spec/{app → support}/models/category.rb +0 -0
  318. /data/spec/{app → support}/models/child.rb +0 -0
  319. /data/spec/{app → support}/models/child_doc.rb +0 -0
  320. /data/spec/{app → support}/models/church.rb +0 -0
  321. /data/spec/{app → support}/models/circle.rb +0 -0
  322. /data/spec/{app → support}/models/circuit.rb +0 -0
  323. /data/spec/{app → support}/models/circus.rb +0 -0
  324. /data/spec/{app → support}/models/code.rb +0 -0
  325. /data/spec/{app → support}/models/coding/pull_request.rb +0 -0
  326. /data/spec/{app → support}/models/comment.rb +0 -0
  327. /data/spec/{app → support}/models/company.rb +0 -0
  328. /data/spec/{app → support}/models/consumption_period.rb +0 -0
  329. /data/spec/{app → support}/models/contextable_item.rb +0 -0
  330. /data/spec/{app → support}/models/contractor.rb +0 -0
  331. /data/spec/{app → support}/models/cookie.rb +0 -0
  332. /data/spec/{app → support}/models/country_code.rb +0 -0
  333. /data/spec/{app → support}/models/courier_job.rb +0 -0
  334. /data/spec/{app → support}/models/definition.rb +0 -0
  335. /data/spec/{app → support}/models/delegating_patient.rb +0 -0
  336. /data/spec/{app → support}/models/description.rb +0 -0
  337. /data/spec/{app → support}/models/division.rb +0 -0
  338. /data/spec/{app → support}/models/doctor.rb +0 -0
  339. /data/spec/{app → support}/models/dog.rb +0 -0
  340. /data/spec/{app → support}/models/dokument.rb +0 -0
  341. /data/spec/{app → support}/models/draft.rb +0 -0
  342. /data/spec/{app → support}/models/dragon.rb +0 -0
  343. /data/spec/{app → support}/models/drug.rb +0 -0
  344. /data/spec/{app → support}/models/dungeon.rb +0 -0
  345. /data/spec/{app → support}/models/edit.rb +0 -0
  346. /data/spec/{app → support}/models/email.rb +0 -0
  347. /data/spec/{app → support}/models/employer.rb +0 -0
  348. /data/spec/{app → support}/models/entry.rb +0 -0
  349. /data/spec/{app → support}/models/eraser.rb +0 -0
  350. /data/spec/{app → support}/models/even.rb +0 -0
  351. /data/spec/{app → support}/models/event.rb +0 -0
  352. /data/spec/{app → support}/models/exhibition.rb +0 -0
  353. /data/spec/{app → support}/models/exhibitor.rb +0 -0
  354. /data/spec/{app → support}/models/explosion.rb +0 -0
  355. /data/spec/{app → support}/models/eye.rb +0 -0
  356. /data/spec/{app → support}/models/eye_bowl.rb +0 -0
  357. /data/spec/{app → support}/models/face.rb +0 -0
  358. /data/spec/{app → support}/models/favorite.rb +0 -0
  359. /data/spec/{app → support}/models/filesystem.rb +0 -0
  360. /data/spec/{app → support}/models/fire_hydrant.rb +0 -0
  361. /data/spec/{app → support}/models/firefox.rb +0 -0
  362. /data/spec/{app → support}/models/fish.rb +0 -0
  363. /data/spec/{app → support}/models/folder.rb +0 -0
  364. /data/spec/{app → support}/models/folder_item.rb +0 -0
  365. /data/spec/{app → support}/models/fruits.rb +0 -0
  366. /data/spec/{app → support}/models/game.rb +0 -0
  367. /data/spec/{app → support}/models/ghost.rb +0 -0
  368. /data/spec/{app → support}/models/home.rb +0 -0
  369. /data/spec/{app → support}/models/house.rb +0 -0
  370. /data/spec/{app → support}/models/html_writer.rb +0 -0
  371. /data/spec/{app → support}/models/id_key.rb +0 -0
  372. /data/spec/{app → support}/models/image.rb +0 -0
  373. /data/spec/{app → support}/models/implant.rb +0 -0
  374. /data/spec/{app → support}/models/jar.rb +0 -0
  375. /data/spec/{app → support}/models/kaleidoscope.rb +0 -0
  376. /data/spec/{app → support}/models/kangaroo.rb +0 -0
  377. /data/spec/{app → support}/models/label.rb +0 -0
  378. /data/spec/{app → support}/models/language.rb +0 -0
  379. /data/spec/{app → support}/models/lat_lng.rb +0 -0
  380. /data/spec/{app → support}/models/league.rb +0 -0
  381. /data/spec/{app → support}/models/learner.rb +0 -0
  382. /data/spec/{app → support}/models/line_item.rb +0 -0
  383. /data/spec/{app → support}/models/location.rb +0 -0
  384. /data/spec/{app → support}/models/login.rb +0 -0
  385. /data/spec/{app → support}/models/manufacturer.rb +0 -0
  386. /data/spec/{app → support}/models/meat.rb +0 -0
  387. /data/spec/{app → support}/models/membership.rb +0 -0
  388. /data/spec/{app → support}/models/message.rb +0 -0
  389. /data/spec/{app → support}/models/minim.rb +0 -0
  390. /data/spec/{app → support}/models/mixed_drink.rb +0 -0
  391. /data/spec/{app → support}/models/movie.rb +0 -0
  392. /data/spec/{app → support}/models/my_hash.rb +0 -0
  393. /data/spec/{app → support}/models/name.rb +0 -0
  394. /data/spec/{app → support}/models/name_only.rb +0 -0
  395. /data/spec/{app → support}/models/node.rb +0 -0
  396. /data/spec/{app → support}/models/note.rb +0 -0
  397. /data/spec/{app → support}/models/odd.rb +0 -0
  398. /data/spec/{app → support}/models/ordered_post.rb +0 -0
  399. /data/spec/{app → support}/models/ordered_preference.rb +0 -0
  400. /data/spec/{app → support}/models/oscar.rb +0 -0
  401. /data/spec/{app → support}/models/other_owner_object.rb +0 -0
  402. /data/spec/{app → support}/models/override.rb +0 -0
  403. /data/spec/{app → support}/models/ownable.rb +0 -0
  404. /data/spec/{app → support}/models/pack.rb +0 -0
  405. /data/spec/{app → support}/models/page.rb +0 -0
  406. /data/spec/{app → support}/models/page_question.rb +0 -0
  407. /data/spec/{app → support}/models/parent.rb +0 -0
  408. /data/spec/{app → support}/models/parent_doc.rb +0 -0
  409. /data/spec/{app → support}/models/passport.rb +0 -0
  410. /data/spec/{app → support}/models/patient.rb +0 -0
  411. /data/spec/{app → support}/models/pdf_writer.rb +0 -0
  412. /data/spec/{app → support}/models/pencil.rb +0 -0
  413. /data/spec/{app → support}/models/pet.rb +0 -0
  414. /data/spec/{app → support}/models/pet_owner.rb +0 -0
  415. /data/spec/{app → support}/models/phone.rb +0 -0
  416. /data/spec/{app → support}/models/pizza.rb +0 -0
  417. /data/spec/{app → support}/models/player.rb +0 -0
  418. /data/spec/{app → support}/models/post.rb +0 -0
  419. /data/spec/{app → support}/models/post_genre.rb +0 -0
  420. /data/spec/{app → support}/models/powerup.rb +0 -0
  421. /data/spec/{app → support}/models/preference.rb +0 -0
  422. /data/spec/{app → support}/models/princess.rb +0 -0
  423. /data/spec/{app → support}/models/product.rb +0 -0
  424. /data/spec/{app → support}/models/pronunciation.rb +0 -0
  425. /data/spec/{app → support}/models/pub.rb +0 -0
  426. /data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
  427. /data/spec/{app → support}/models/publication/review.rb +0 -0
  428. /data/spec/{app → support}/models/purchase.rb +0 -0
  429. /data/spec/{app → support}/models/question.rb +0 -0
  430. /data/spec/{app → support}/models/quiz.rb +0 -0
  431. /data/spec/{app → support}/models/rating.rb +0 -0
  432. /data/spec/{app → support}/models/record.rb +0 -0
  433. /data/spec/{app → support}/models/registry.rb +0 -0
  434. /data/spec/{app → support}/models/role.rb +0 -0
  435. /data/spec/{app → support}/models/root_category.rb +0 -0
  436. /data/spec/{app → support}/models/sandwich.rb +0 -0
  437. /data/spec/{app → support}/models/scheduler.rb +0 -0
  438. /data/spec/{app → support}/models/seo.rb +0 -0
  439. /data/spec/{app → support}/models/series.rb +0 -0
  440. /data/spec/{app → support}/models/server.rb +0 -0
  441. /data/spec/{app → support}/models/service.rb +0 -0
  442. /data/spec/{app → support}/models/shelf.rb +0 -0
  443. /data/spec/{app → support}/models/shipment_address.rb +0 -0
  444. /data/spec/{app → support}/models/shipping_container.rb +0 -0
  445. /data/spec/{app → support}/models/shipping_pack.rb +0 -0
  446. /data/spec/{app → support}/models/shop.rb +0 -0
  447. /data/spec/{app → support}/models/short_agent.rb +0 -0
  448. /data/spec/{app → support}/models/short_quiz.rb +0 -0
  449. /data/spec/{app → support}/models/simple.rb +0 -0
  450. /data/spec/{app → support}/models/slave.rb +0 -0
  451. /data/spec/{app → support}/models/song.rb +0 -0
  452. /data/spec/{app → support}/models/sound.rb +0 -0
  453. /data/spec/{app → support}/models/square.rb +0 -0
  454. /data/spec/{app → support}/models/staff.rb +0 -0
  455. /data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
  456. /data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
  457. /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
  458. /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
  459. /data/spec/{app → support}/models/strategy.rb +0 -0
  460. /data/spec/{app → support}/models/sub_item.rb +0 -0
  461. /data/spec/{app → support}/models/subscription.rb +0 -0
  462. /data/spec/{app → support}/models/survey.rb +0 -0
  463. /data/spec/{app → support}/models/symptom.rb +0 -0
  464. /data/spec/{app → support}/models/tag.rb +0 -0
  465. /data/spec/{app → support}/models/target.rb +0 -0
  466. /data/spec/{app → support}/models/template.rb +0 -0
  467. /data/spec/{app → support}/models/thing.rb +0 -0
  468. /data/spec/{app → support}/models/title.rb +0 -0
  469. /data/spec/{app → support}/models/topping.rb +0 -0
  470. /data/spec/{app → support}/models/track.rb +0 -0
  471. /data/spec/{app → support}/models/translation.rb +0 -0
  472. /data/spec/{app → support}/models/tree.rb +0 -0
  473. /data/spec/{app → support}/models/updatable.rb +0 -0
  474. /data/spec/{app → support}/models/user.rb +0 -0
  475. /data/spec/{app → support}/models/user_account.rb +0 -0
  476. /data/spec/{app → support}/models/validation_callback.rb +0 -0
  477. /data/spec/{app → support}/models/version.rb +0 -0
  478. /data/spec/{app → support}/models/vertex.rb +0 -0
  479. /data/spec/{app → support}/models/vet_visit.rb +0 -0
  480. /data/spec/{app → support}/models/video.rb +0 -0
  481. /data/spec/{app → support}/models/video_game.rb +0 -0
  482. /data/spec/{app → support}/models/weapon.rb +0 -0
  483. /data/spec/{app → support}/models/wiki_page.rb +0 -0
  484. /data/spec/{app → support}/models/word.rb +0 -0
  485. /data/spec/{app → support}/models/word_origin.rb +0 -0
@@ -0,0 +1,331 @@
1
+ - name: matching string
2
+ document:
3
+ name: Angel Share
4
+ query:
5
+ name: Angel Share
6
+ matches: true
7
+
8
+ - name: not matching string
9
+ document:
10
+ name: Angel Share
11
+ query:
12
+ name: Angel
13
+ matches: false
14
+
15
+ - name: matching native regexp
16
+ document:
17
+ name: Angel Share
18
+ query:
19
+ name:
20
+ !ruby/regexp /l.S/
21
+ matches: true
22
+
23
+ - name: not matching native regexp
24
+ document:
25
+ name: Angel Share
26
+ query:
27
+ name:
28
+ !ruby/regexp /l.pirate/
29
+ matches: false
30
+
31
+ - name: matching bson regexp
32
+ document:
33
+ name: Angel Share
34
+ query:
35
+ name: !ruby/object:BSON::Regexp::Raw
36
+ pattern: l.S
37
+ options: ''
38
+ matches: true
39
+
40
+ - name: not matching bson regexp
41
+ document:
42
+ name: Angel Share
43
+ query:
44
+ name: !ruby/object:BSON::Regexp::Raw
45
+ pattern: l.pirate
46
+ options: ''
47
+ matches: false
48
+
49
+ - name: matching ObjectId
50
+ document:
51
+ id: !ruby/object:BSON::ObjectId
52
+ raw_data: !binary |-
53
+ Xt0Zj+G4MlyV5hyJ
54
+ query:
55
+ _id: !ruby/object:BSON::ObjectId
56
+ raw_data: !binary |-
57
+ Xt0Zj+G4MlyV5hyJ
58
+ matches: true
59
+
60
+ - name: not matching ObjectId
61
+ document:
62
+ id: !ruby/object:BSON::ObjectId
63
+ raw_data: !binary |-
64
+ Xt0Zj+G4MlyV5hyJ
65
+ query:
66
+ _id: !ruby/object:BSON::ObjectId
67
+ raw_data: !binary |-
68
+ Xt0Y3+G4MlyV5hyH
69
+ matches: false
70
+
71
+ - name: matching string in array
72
+ document:
73
+ airports: [EWR, SFO]
74
+ query:
75
+ airports: EWR
76
+ matches: true
77
+
78
+ - name: not matching string in array
79
+ document:
80
+ airports: [EWR, SFO]
81
+ query:
82
+ airports: HELLO
83
+ matches: false
84
+
85
+ - name: matching regexp in array
86
+ document:
87
+ airports: [EWR, SFO]
88
+ query:
89
+ airports: !ruby/regexp /E.R/
90
+ matches: true
91
+
92
+ - name: not matching regexp in array
93
+ document:
94
+ airports: [EWR, SFO]
95
+ query:
96
+ airports: !ruby/regexp /..../
97
+ matches: false
98
+
99
+ - name: matching ObjectId in array
100
+ document:
101
+ refs:
102
+ - !ruby/object:BSON::ObjectId
103
+ raw_data: !binary |-
104
+ Xt0Zj+G4MlyV5hyJ
105
+ query:
106
+ refs: !ruby/object:BSON::ObjectId
107
+ raw_data: !binary |-
108
+ Xt0Zj+G4MlyV5hyJ
109
+ matches: true
110
+
111
+ - name: not matching ObjectId in array
112
+ document:
113
+ refs:
114
+ - !ruby/object:BSON::ObjectId
115
+ raw_data: !binary |-
116
+ Xt0Zj+G4MlyV5hyJ
117
+ query:
118
+ refs: !ruby/object:BSON::ObjectId
119
+ raw_data: !binary |-
120
+ Xt0Y3+G4MlyV5hyH
121
+ matches: false
122
+
123
+ - name: exact array match
124
+ document:
125
+ airports: [EWR, SFO]
126
+ query:
127
+ airports: [EWR, SFO]
128
+ matches: true
129
+
130
+ - name: array query with elements in different order
131
+ document:
132
+ airports: [EWR, SFO]
133
+ query:
134
+ airports: [SFO, EWR]
135
+ matches: false
136
+
137
+ - name: array query with subset of elements
138
+ document:
139
+ airports: [EWR, SFO]
140
+ query:
141
+ airports: [EWR]
142
+ matches: false
143
+
144
+ - name: exact array match with empty array
145
+ document:
146
+ airports: []
147
+ query:
148
+ airports: []
149
+ matches: true
150
+
151
+ - name: array element match with empty array
152
+ document:
153
+ airports: [[]]
154
+ query:
155
+ airports: []
156
+ matches: true
157
+
158
+ - name: hash path in query - match
159
+ document:
160
+ house:
161
+ price: 100
162
+ query:
163
+ house.price: 100
164
+ matches: true
165
+
166
+ - name: hash path in query - no path
167
+ document:
168
+ house:
169
+ price: 100
170
+ query:
171
+ xhouse.price: 100
172
+ matches: false
173
+
174
+ - name: hash path in query - wrong value
175
+ document:
176
+ house:
177
+ price: 100
178
+ query:
179
+ house.price: 101
180
+ matches: false
181
+
182
+ - name: hash path in query - traversing an array
183
+ document:
184
+ house:
185
+ - 100
186
+ query:
187
+ house.price: 100
188
+ matches: false
189
+
190
+ - name: array path in query - match
191
+ document:
192
+ house:
193
+ - price: 100
194
+ query:
195
+ house.0.price: 100
196
+ matches: true
197
+
198
+ - name: array path in query - no path
199
+ document:
200
+ house:
201
+ - price: 100
202
+ query:
203
+ house.1.price: 100
204
+ matches: false
205
+
206
+ - name: array path in query - wrong value
207
+ document:
208
+ house:
209
+ price: 100
210
+ query:
211
+ house.0.price: 101
212
+ matches: false
213
+
214
+ - name: array path in query - correct array element
215
+ document:
216
+ titles:
217
+ - King
218
+ - Queen
219
+ query:
220
+ titles.1: Queen
221
+ matches: true
222
+
223
+ - name: array path in query - wrong array element
224
+ document:
225
+ titles:
226
+ - King
227
+ - Queen
228
+ query:
229
+ titles.1: King
230
+ matches: false
231
+
232
+ - name: array path in query - traversing a hash
233
+ document:
234
+ title:
235
+ name: King
236
+ query:
237
+ title.1: King
238
+ matches: false
239
+
240
+ - name: implicit array path in query - match
241
+ document:
242
+ house:
243
+ - price: 100
244
+ query:
245
+ house.price: 100
246
+ matches: true
247
+
248
+ - name: implicit array path in query - wrong value
249
+ document:
250
+ house:
251
+ - price: 100
252
+ query:
253
+ house.price: 101
254
+ matches: false
255
+
256
+ - name: implicit array path in query - nested array as field value
257
+ document:
258
+ house:
259
+ -
260
+ - price: 100
261
+ query:
262
+ house.price: 100
263
+ matches: false
264
+
265
+ - name: matching hash - string key
266
+ document:
267
+ branch:
268
+ tree: forest
269
+ query:
270
+ branch:
271
+ tree: forest
272
+ matches: true
273
+
274
+ - name: not matching hash - string key
275
+ document:
276
+ branch:
277
+ tree: forest
278
+ query:
279
+ branch:
280
+ seed: forest
281
+ matches: false
282
+
283
+ - name: matching hash - symbol key
284
+ document:
285
+ branch:
286
+ tree: forest
287
+ query:
288
+ :branch:
289
+ :tree: forest
290
+ matches: true
291
+
292
+ - name: not matching hash - symbol key
293
+ document:
294
+ branch:
295
+ tree: forest
296
+ query:
297
+ :branch:
298
+ :seed: forest
299
+ matches: false
300
+
301
+ - name: matching range
302
+ document:
303
+ age: 10
304
+ query:
305
+ age: !ruby/range
306
+ begin: 1
307
+ end: 20
308
+ excl: false
309
+ error: [matcher, driver]
310
+ # DSL expands Range to $gte/$lte pair
311
+ matches: true
312
+
313
+ - name: not matching range
314
+ document:
315
+ age: 10
316
+ query:
317
+ age: !ruby/range
318
+ begin: 11
319
+ end: 20
320
+ excl: false
321
+ error: [matcher, driver]
322
+ # DSL expands Range to $gte/$lte pair
323
+ matches: false
324
+
325
+ - name: nil input
326
+ document:
327
+ name: Angel Share
328
+ query: ~
329
+ # Driver sends the query without any conditions, which then succeeds
330
+ matches: true
331
+ error: [matcher, dsl]
@@ -0,0 +1,16 @@
1
+ - name: mix of arrays and hashes in an array - value found in nested array
2
+ document: &array-hash-mix
3
+ foo:
4
+ -
5
+ -
6
+ bar: 1
7
+ - bar: 2
8
+ query:
9
+ foo.bar: 1
10
+ matches: false
11
+
12
+ - name: mix of arrays and hashes in an array - value found in non-nested array
13
+ document: *array-hash-mix
14
+ query:
15
+ foo.bar: 2
16
+ matches: true
@@ -0,0 +1,194 @@
1
+ - name: scalar field - matches exact value
2
+ document:
3
+ count: 10
4
+ query:
5
+ count:
6
+ $in: [10, 11]
7
+ matches: true
8
+
9
+ - name: scalar field - does not match exact value
10
+ document:
11
+ count: 8
12
+ query:
13
+ count:
14
+ $in: [10, 11]
15
+ matches: false
16
+
17
+ - name: scalar field - matches native regexp
18
+ document:
19
+ name: Boris
20
+ query:
21
+ name:
22
+ $in:
23
+ - !ruby/regexp /..ris/
24
+ matches: true
25
+
26
+ - name: scalar field - does not match native regexp
27
+ document:
28
+ name: Boris
29
+ query:
30
+ name:
31
+ $in:
32
+ - !ruby/regexp /ri$/
33
+ matches: false
34
+
35
+ - name: scalar field - matches bson regexp
36
+ document:
37
+ name: Boris
38
+ query:
39
+ name:
40
+ $in:
41
+ - !ruby/object:BSON::Regexp::Raw
42
+ pattern: ..ris
43
+ options: ''
44
+ matches: true
45
+
46
+ - name: scalar field - does not match bson regexp
47
+ document:
48
+ name: Boris
49
+ query:
50
+ name:
51
+ $in:
52
+ - !ruby/object:BSON::Regexp::Raw
53
+ pattern: ..ri$
54
+ options: ''
55
+ matches: false
56
+
57
+ - name: field value missing
58
+ document:
59
+ xcount: 10
60
+ query:
61
+ count:
62
+ $in: [10, 11]
63
+ matches: false
64
+
65
+ - name: field value is null
66
+ document:
67
+ count: ~
68
+ query:
69
+ count:
70
+ $in: [10, 11]
71
+ matches: false
72
+
73
+ - name: condition is a scalar
74
+ document:
75
+ count: 10
76
+ query:
77
+ count:
78
+ $in: 10
79
+ error: true
80
+
81
+ - name: array field - matches exact value
82
+ document:
83
+ count: [10]
84
+ query:
85
+ count:
86
+ $in: [[10], [11]]
87
+ matches: true
88
+
89
+ - name: array field - does not match exact value
90
+ document:
91
+ count: 8
92
+ query:
93
+ count:
94
+ $in: [[10], [11]]
95
+ matches: false
96
+
97
+ - name: array field - matches element value
98
+ document:
99
+ count: [10]
100
+ query:
101
+ count:
102
+ $in: [10, 11]
103
+ matches: true
104
+
105
+ - name: array field - does not match element value
106
+ document:
107
+ count: 8
108
+ query:
109
+ count:
110
+ $in: [10, 11]
111
+ matches: false
112
+
113
+ - name: array field - matches native regexp as element value
114
+ document:
115
+ name: [Boris]
116
+ query:
117
+ count:
118
+ $in:
119
+ - !ruby/regexp /..ris/
120
+ matches: false
121
+
122
+ - name: array field - does not match native regexp as element value
123
+ document:
124
+ name: [Boris]
125
+ query:
126
+ count:
127
+ $in:
128
+ - !ruby/regexp /ri$/
129
+ matches: false
130
+
131
+ - name: array field - matches bson regexp as element value
132
+ document:
133
+ name: [Boris]
134
+ query:
135
+ count:
136
+ $in:
137
+ - !ruby/object:BSON::Regexp::Raw
138
+ pattern: ..ris
139
+ options: ''
140
+ matches: false
141
+
142
+ - name: array field - does not match bson regexp as element value
143
+ document:
144
+ name: [Boris]
145
+ query:
146
+ count:
147
+ $in:
148
+ - !ruby/object:BSON::Regexp::Raw
149
+ pattern: ..ri$
150
+ options: ''
151
+ matches: false
152
+
153
+ - name: nil argument
154
+ document:
155
+ position: ceo
156
+ query:
157
+ position:
158
+ $in: ~
159
+ error: true
160
+
161
+ - name: empty array argument
162
+ document:
163
+ position: ceo
164
+ query:
165
+ position:
166
+ $in: []
167
+ matches: false
168
+
169
+ - name: empty hash argument
170
+ document:
171
+ position: ceo
172
+ query:
173
+ position:
174
+ $in: {}
175
+ error: true
176
+
177
+ - name: numeric argument
178
+ document:
179
+ position: ceo
180
+ query:
181
+ position:
182
+ $in: 42
183
+ error: true
184
+
185
+ - name: matching range
186
+ document:
187
+ age: 10
188
+ query:
189
+ age:
190
+ $in: !ruby/range
191
+ begin: 1
192
+ end: 20
193
+ excl: false
194
+ error: true
@@ -0,0 +1,59 @@
1
+ - name: invalid expression-level operator
2
+ document:
3
+ products: [1, 2, 3]
4
+ query:
5
+ $bogus: [1, 2]
6
+ error: true
7
+
8
+ - name: invalid field-level operator
9
+ document:
10
+ products: [1, 2, 3]
11
+ query:
12
+ products:
13
+ $bogus: [1, 2]
14
+ error: true
15
+
16
+ - name: expression-level operator on field level
17
+ document:
18
+ products: [1, 2, 3]
19
+ query:
20
+ products:
21
+ $and:
22
+ foo: 1
23
+ error: true
24
+
25
+ - name: field-level operator on top level
26
+ document:
27
+ products: [1, 2, 3]
28
+ query:
29
+ $in: [1, 2]
30
+ error: true
31
+
32
+ - name: bogus operator in $not
33
+ document:
34
+ products: [1, 2, 3]
35
+ query:
36
+ products:
37
+ $not:
38
+ $bogus: [1, 2]
39
+ error: true
40
+
41
+ - name: expression-level operator in $not
42
+ document:
43
+ products: [1, 2, 3]
44
+ query:
45
+ products:
46
+ $not:
47
+ $and:
48
+ - foo: 1
49
+ error: true
50
+
51
+ # This is not an error.
52
+ - name: field-level operator in $not
53
+ document:
54
+ products: [1, 2, 3]
55
+ query:
56
+ products:
57
+ $not:
58
+ $in: [4]
59
+ matches: true
@@ -0,0 +1,39 @@
1
+ - name: array query
2
+ document:
3
+ products: [1, 2, 3]
4
+ query:
5
+ []
6
+ error: true
7
+
8
+ - name: null query
9
+ document:
10
+ products: [1, 2, 3]
11
+ query: ~
12
+ error: [matcher, dsl]
13
+ # Driver appears to accept the null query.
14
+ matches: true
15
+
16
+ - name: numeric query
17
+ document:
18
+ products: [1, 2, 3]
19
+ query: 42
20
+ error: true
21
+
22
+ - name: string query
23
+ document:
24
+ products: [1, 2, 3]
25
+ query: test
26
+ error: true
27
+
28
+ - name: string query with punctuation
29
+ document:
30
+ products: [1, 2, 3]
31
+ query: "!>"
32
+ error: true
33
+
34
+ # This one is actually valid.
35
+ - name: query is an empty hash
36
+ document:
37
+ products: [1, 2, 3]
38
+ query: {}
39
+ matches: true