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,140 @@
1
+ - name: attribute includes all condition values
2
+ document:
3
+ products: [1, 2, 3]
4
+ query:
5
+ products:
6
+ $all: [1, 2]
7
+ matches: true
8
+
9
+ - name: attribute does not include all condition values
10
+ document:
11
+ products: [1, 2, 3]
12
+ query:
13
+ products:
14
+ $all: [1, 4]
15
+ matches: false
16
+
17
+ - name: attribute value is empty
18
+ document:
19
+ products: []
20
+ query:
21
+ products:
22
+ $all: [1, 4]
23
+ matches: false
24
+
25
+ - name: condition value is empty
26
+ document:
27
+ products: [1, 2, 3]
28
+ query:
29
+ products:
30
+ $all: []
31
+ matches: false
32
+
33
+ - name: condition value is a matching native regexp
34
+ document:
35
+ positions: [ceo, cto]
36
+ query:
37
+ positions:
38
+ $all:
39
+ - !ruby/regexp /c.o/
40
+ matches: true
41
+
42
+ - name: condition value is a not matching native regexp
43
+ document:
44
+ positions: [ceo, cto]
45
+ query:
46
+ positions:
47
+ $all:
48
+ - !ruby/regexp /a.o/
49
+ matches: false
50
+
51
+ - name: condition value is a matching bson regexp
52
+ document:
53
+ positions: [ceo, cto]
54
+ query:
55
+ positions:
56
+ $all:
57
+ - !ruby/object:BSON::Regexp::Raw
58
+ pattern: c.o
59
+ options: ''
60
+ matches: true
61
+
62
+ - name: condition value is a not matching bson regexp
63
+ document:
64
+ positions: [ceo, cto]
65
+ query:
66
+ positions:
67
+ $all:
68
+ - !ruby/object:BSON::Regexp::Raw
69
+ pattern: a.o
70
+ options: ''
71
+ matches: false
72
+
73
+ - name: nil argument
74
+ document:
75
+ positions: [ceo, cto]
76
+ query:
77
+ positions:
78
+ $all: ~
79
+ error: true
80
+
81
+ - name: numeric argument
82
+ document:
83
+ positions: [ceo, cto]
84
+ query:
85
+ positions:
86
+ $all: 42
87
+ error: true
88
+
89
+ - name: hash argument
90
+ document:
91
+ positions: [ceo, cto]
92
+ query:
93
+ positions:
94
+ $all:
95
+ foo: bar
96
+ error: true
97
+
98
+ - name: scalar argument that exists in target array
99
+ document:
100
+ positions: [ceo, cto]
101
+ query:
102
+ positions:
103
+ $all:
104
+ ceo
105
+ error: true
106
+
107
+ - name: field value is null
108
+ document:
109
+ products: ~
110
+ query:
111
+ products:
112
+ $all: [1, 2]
113
+ matches: false
114
+
115
+ - name: field value is numeric
116
+ document:
117
+ products: 42
118
+ query:
119
+ products:
120
+ $all: [42]
121
+ matches: true
122
+
123
+ - name: field value is null and query is for null value
124
+ document:
125
+ products: ~
126
+ query:
127
+ products:
128
+ $all: [~]
129
+ matches: true
130
+
131
+ - name: range - match
132
+ document:
133
+ products: [1, 2, 3]
134
+ query:
135
+ products:
136
+ $all: !ruby/range
137
+ begin: 1
138
+ end: 20
139
+ excl: false
140
+ error: true
@@ -0,0 +1,93 @@
1
+ - name: simple expression - matching
2
+ document:
3
+ name: foo
4
+ query:
5
+ $and:
6
+ - name: foo
7
+ matches: true
8
+
9
+ - name: simple expression - not matching
10
+ document:
11
+ name: foo
12
+ query:
13
+ $and:
14
+ - name: bar
15
+ matches: false
16
+
17
+ - name: multiple expressions - matching
18
+ document:
19
+ name: foo
20
+ order: 1
21
+ query:
22
+ $and:
23
+ - name: foo
24
+ - order: 1
25
+ matches: true
26
+
27
+ - name: multiple expressions - not matching
28
+ document:
29
+ name: foo
30
+ order: 1
31
+ query:
32
+ $and:
33
+ - name: bar
34
+ - order: 2
35
+ matches: false
36
+
37
+ - name: no expressions (empty array)
38
+ document:
39
+ name: foo
40
+ order: 1
41
+ query:
42
+ $and: []
43
+ error: true
44
+
45
+ - name: complex expression - matching
46
+ document:
47
+ name: foo
48
+ query:
49
+ $and:
50
+ - name:
51
+ $in: [foo]
52
+ matches: true
53
+
54
+ - name: complex expression - not matching
55
+ document:
56
+ name: foo
57
+ query:
58
+ $and:
59
+ - name:
60
+ $gt: 1
61
+ matches: false
62
+
63
+ - name: nil argument
64
+ document:
65
+ positions: [ceo, cto]
66
+ query:
67
+ $and: ~
68
+ error: true
69
+
70
+ - name: numeric argument
71
+ document:
72
+ positions: [ceo, cto]
73
+ query:
74
+ $and: 42
75
+ error: true
76
+
77
+ - name: hash argument
78
+ document:
79
+ positions: [ceo, cto]
80
+ query:
81
+ $and:
82
+ foo: bar
83
+ error: true
84
+
85
+ - name: field value is null
86
+ document:
87
+ products: ~
88
+ query:
89
+ $and:
90
+ -
91
+ products:
92
+ $ne: a
93
+ matches: true
@@ -0,0 +1,363 @@
1
+ - name: string attribute value matched with operator
2
+ document:
3
+ tags: Angel Share
4
+ query:
5
+ tags:
6
+ $elemMatch:
7
+ $eq: Angel Share
8
+ matches: false
9
+
10
+ - name: integer attribute value matched with operator
11
+ document:
12
+ tags: 42
13
+ query:
14
+ tags:
15
+ $elemMatch:
16
+ $eq: 42
17
+ matches: false
18
+
19
+ - name: string attribute value matched against hash
20
+ document:
21
+ tags: Angel Share
22
+ query:
23
+ tags:
24
+ $elemMatch:
25
+ foo: Angel Share
26
+ matches: false
27
+
28
+ - name: integer attribute value matched against hash
29
+ document:
30
+ tags: 42
31
+ query:
32
+ tags:
33
+ $elemMatch:
34
+ foo: 42
35
+ matches: false
36
+
37
+ - name: array attribute string value matched with operator - matches
38
+ document:
39
+ tags:
40
+ - intelligent
41
+ query:
42
+ tags:
43
+ $elemMatch:
44
+ $eq: intelligent
45
+ matches: true
46
+
47
+ - name: array attribute string value matched with operator - does not match
48
+ document:
49
+ tags:
50
+ - intelligent
51
+ query:
52
+ tags:
53
+ $elemMatch:
54
+ $ne: intelligent
55
+ matches: false
56
+
57
+ - name: array attribute integer value matched with operator - matches
58
+ document:
59
+ tags:
60
+ - 42
61
+ query:
62
+ tags:
63
+ $elemMatch:
64
+ $eq: 42
65
+ matches: true
66
+
67
+ - name: array attribute integer value matched with operator - does not match
68
+ document:
69
+ tags:
70
+ - 42
71
+ query:
72
+ tags:
73
+ $elemMatch:
74
+ $ne: 42
75
+ matches: false
76
+
77
+ - name: array attribute value with scalar string value matched with hash
78
+ document:
79
+ tags:
80
+ - intelligent
81
+ query:
82
+ tags:
83
+ $elemMatch:
84
+ foo: intelligent
85
+ matches: false
86
+
87
+ - name: array attribute value with scalar integer value matched with hash
88
+ document:
89
+ tags:
90
+ - 42
91
+ query:
92
+ tags:
93
+ $elemMatch:
94
+ foo: 42
95
+ matches: false
96
+
97
+ - name: hash attribute value
98
+ document:
99
+ tags:
100
+ a: Angel Share
101
+ query:
102
+ tags:
103
+ $elemMatch:
104
+ a: Angel Share
105
+ matches: false
106
+
107
+ - name: array of hashes attribute value - matches
108
+ document:
109
+ tags:
110
+ - a: Angel Share
111
+ query:
112
+ tags:
113
+ $elemMatch:
114
+ a: Angel Share
115
+ matches: true
116
+
117
+ - name: array of hashes attribute value - some of array elements match
118
+ document:
119
+ tags:
120
+ - a: Angel Share
121
+ - a: Hello
122
+ query:
123
+ tags:
124
+ $elemMatch:
125
+ a: Angel Share
126
+ matches: true
127
+
128
+ - name: array of hashes attribute value - does not match
129
+ document:
130
+ tags:
131
+ - a: Angel Share
132
+ query:
133
+ tags:
134
+ $elemMatch:
135
+ a: Angel
136
+ matches: false
137
+
138
+ - name: array of hashes attribute value - with operator - matches
139
+ document:
140
+ tags:
141
+ - a: Angel Share
142
+ query:
143
+ tags:
144
+ $elemMatch:
145
+ a:
146
+ $eq: Angel Share
147
+ matches: true
148
+
149
+ - name: array of hashes attribute value - with operator - does not match
150
+ document:
151
+ tags:
152
+ - a: Angel Share
153
+ query:
154
+ tags:
155
+ $elemMatch:
156
+ a:
157
+ $ne: Angel Share
158
+ matches: false
159
+
160
+ - name: array of scalars attribute value matching against scalar
161
+ document:
162
+ tags:
163
+ - mongodb
164
+ query:
165
+ tags:
166
+ $elemMatch:
167
+ mongodb
168
+ error: true
169
+
170
+ - name: array of scalars attribute value matching against array
171
+ document:
172
+ tags:
173
+ - mongodb
174
+ query:
175
+ tags:
176
+ $elemMatch: []
177
+ error: true
178
+
179
+ - name: multiple conditions per array element
180
+ document:
181
+ tags:
182
+ - a: 1
183
+ b: 2
184
+ - a: 3
185
+ b: 2
186
+ query:
187
+ tags:
188
+ $elemMatch:
189
+ a: 1
190
+ b: 2
191
+ matches: true
192
+
193
+ - name: multiple conditions per array element - partial match
194
+ document:
195
+ tags:
196
+ - a: 1
197
+ b: 1
198
+ - a: 3
199
+ b: 3
200
+ query:
201
+ tags:
202
+ $elemMatch:
203
+ a: 1
204
+ b: 3
205
+ matches: false
206
+
207
+ - name: nested operator - matches
208
+ document:
209
+ tags:
210
+ - a: 1
211
+ query:
212
+ tags:
213
+ $elemMatch:
214
+ a:
215
+ $in: [1]
216
+ matches: true
217
+
218
+ - name: nested operator - does not match
219
+ document:
220
+ tags:
221
+ - a: 1
222
+ query:
223
+ tags:
224
+ $elemMatch:
225
+ a:
226
+ $in: [2]
227
+ matches: false
228
+
229
+ - name: multiple nested operators
230
+ document:
231
+ tags:
232
+ - a: 1
233
+ - a: 2
234
+ b: 3
235
+ query:
236
+ tags:
237
+ $elemMatch:
238
+ a:
239
+ $in: [2]
240
+ b:
241
+ $gt: 1
242
+ matches: true
243
+
244
+ - name: nested operators with $not - matches
245
+ document:
246
+ tags:
247
+ - a: 1
248
+ - a: 2
249
+ b: 3
250
+ query:
251
+ tags:
252
+ $elemMatch:
253
+ a:
254
+ $not:
255
+ $in: [1]
256
+ b:
257
+ $gt: 1
258
+ matches: true
259
+
260
+ - name: nested operators with $not - does not match
261
+ document:
262
+ tags:
263
+ - a: 1
264
+ - a: 2
265
+ b: 3
266
+ query:
267
+ tags:
268
+ $elemMatch:
269
+ a:
270
+ $not:
271
+ $in: [2]
272
+ b:
273
+ $gt: 1
274
+ matches: false
275
+
276
+ - name: nil argument
277
+ document:
278
+ positions: [ceo, cto]
279
+ query:
280
+ positions:
281
+ $elemMatch: ~
282
+ error: true
283
+
284
+ - name: numeric argument
285
+ document:
286
+ positions: [ceo, cto]
287
+ query:
288
+ positions:
289
+ $elemMatch: 42
290
+ error: true
291
+
292
+ - name: empty array argument
293
+ document:
294
+ positions: [ceo, cto]
295
+ query:
296
+ positions:
297
+ $elemMatch: []
298
+ error: true
299
+
300
+ - name: field value is a number
301
+ document:
302
+ tags: 12
303
+ query:
304
+ tags:
305
+ $elemMatch:
306
+ $eq: 12
307
+ matches: false
308
+
309
+ - name: field value is an empty array
310
+ document:
311
+ tags: []
312
+ query:
313
+ tags:
314
+ $elemMatch:
315
+ $not:
316
+ $eq: y
317
+ matches: false
318
+
319
+ - name: field value is an empty hash
320
+ document:
321
+ tags: {}
322
+ query:
323
+ tags:
324
+ $elemMatch:
325
+ $not:
326
+ $eq: y
327
+ matches: false
328
+
329
+ - name: field value is null
330
+ document:
331
+ tags: ~
332
+ query:
333
+ tags:
334
+ $elemMatch:
335
+ $not:
336
+ $eq: y
337
+ matches: false
338
+
339
+ - name: range - match
340
+ document:
341
+ products: [1, 2, 3]
342
+ query:
343
+ products:
344
+ $elemMatch: !ruby/range
345
+ begin: 1
346
+ end: 20
347
+ excl: false
348
+ # https://jira.mongodb.org/browse/MONGOID-4908
349
+ matches: true
350
+ error: [matcher, driver]
351
+
352
+ - name: range - no match
353
+ document:
354
+ products: [1, 2, 3]
355
+ query:
356
+ products:
357
+ $elemMatch: !ruby/range
358
+ begin: 10
359
+ end: 20
360
+ excl: false
361
+ # https://jira.mongodb.org/browse/MONGOID-4908
362
+ matches: false
363
+ error: [matcher, driver]