mongoid 7.1.5 → 7.2.1

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