mongoid 7.1.8 → 7.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (437) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -3
  3. data.tar.gz.sig +0 -0
  4. data/README.md +9 -2
  5. data/lib/config/locales/en.yml +37 -1
  6. data/lib/mongoid.rb +23 -0
  7. data/lib/mongoid/association/depending.rb +1 -6
  8. data/lib/mongoid/association/many.rb +3 -3
  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 +36 -1
  12. data/lib/mongoid/association/referenced/has_many/proxy.rb +8 -1
  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/clients/factory.rb +17 -0
  17. data/lib/mongoid/composable.rb +1 -0
  18. data/lib/mongoid/config.rb +3 -0
  19. data/lib/mongoid/contextual/mongo.rb +23 -4
  20. data/lib/mongoid/copyable.rb +7 -3
  21. data/lib/mongoid/criteria.rb +57 -7
  22. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  23. data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
  24. data/lib/mongoid/criteria/queryable/selectable.rb +21 -6
  25. data/lib/mongoid/criteria/queryable/selector.rb +3 -3
  26. data/lib/mongoid/criteria/queryable/storable.rb +3 -3
  27. data/lib/mongoid/document.rb +15 -3
  28. data/lib/mongoid/errors.rb +7 -0
  29. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
  30. data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
  31. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
  32. data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
  33. data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
  34. data/lib/mongoid/errors/invalid_query.rb +41 -0
  35. data/lib/mongoid/extensions.rb +1 -0
  36. data/lib/mongoid/factory.rb +27 -10
  37. data/lib/mongoid/fields.rb +3 -0
  38. data/lib/mongoid/fields/validators/macro.rb +22 -9
  39. data/lib/mongoid/findable.rb +50 -14
  40. data/lib/mongoid/indexable.rb +2 -2
  41. data/lib/mongoid/matchable.rb +1 -149
  42. data/lib/mongoid/matcher.rb +103 -0
  43. data/lib/mongoid/matcher/all.rb +22 -0
  44. data/lib/mongoid/matcher/and.rb +21 -0
  45. data/lib/mongoid/matcher/elem_match.rb +36 -0
  46. data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
  47. data/lib/mongoid/matcher/eq.rb +11 -0
  48. data/lib/mongoid/matcher/eq_impl.rb +32 -0
  49. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
  50. data/lib/mongoid/matcher/exists.rb +15 -0
  51. data/lib/mongoid/matcher/expression.rb +31 -0
  52. data/lib/mongoid/matcher/expression_operator.rb +19 -0
  53. data/lib/mongoid/matcher/field_expression.rb +62 -0
  54. data/lib/mongoid/matcher/field_operator.rb +48 -0
  55. data/lib/mongoid/matcher/gt.rb +17 -0
  56. data/lib/mongoid/matcher/gte.rb +17 -0
  57. data/lib/mongoid/matcher/in.rb +25 -0
  58. data/lib/mongoid/matcher/lt.rb +17 -0
  59. data/lib/mongoid/matcher/lte.rb +17 -0
  60. data/lib/mongoid/matcher/ne.rb +16 -0
  61. data/lib/mongoid/matcher/nin.rb +11 -0
  62. data/lib/mongoid/matcher/nor.rb +25 -0
  63. data/lib/mongoid/matcher/not.rb +29 -0
  64. data/lib/mongoid/matcher/or.rb +21 -0
  65. data/lib/mongoid/matcher/regex.rb +41 -0
  66. data/lib/mongoid/matcher/size.rb +26 -0
  67. data/lib/mongoid/persistable/deletable.rb +1 -1
  68. data/lib/mongoid/query_cache.rb +64 -62
  69. data/lib/mongoid/reloadable.rb +2 -2
  70. data/lib/mongoid/serializable.rb +1 -1
  71. data/lib/mongoid/stringified_symbol.rb +53 -0
  72. data/lib/mongoid/traversable.rb +111 -4
  73. data/lib/mongoid/version.rb +1 -1
  74. data/spec/README.md +19 -4
  75. data/spec/integration/associations/embedded_spec.rb +94 -0
  76. data/spec/integration/associations/has_many_spec.rb +67 -14
  77. data/spec/integration/associations/has_one_spec.rb +67 -14
  78. data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
  79. data/spec/integration/atomic/modifiers_spec.rb +117 -0
  80. data/spec/integration/discriminator_key_spec.rb +354 -0
  81. data/spec/integration/discriminator_value_spec.rb +207 -0
  82. data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
  83. data/spec/integration/matcher_operator_data/all.yml +140 -0
  84. data/spec/integration/matcher_operator_data/and.yml +93 -0
  85. data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
  86. data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
  87. data/spec/integration/matcher_operator_data/eq.yml +191 -0
  88. data/spec/integration/matcher_operator_data/exists.yml +213 -0
  89. data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
  90. data/spec/integration/matcher_operator_data/gt.yml +132 -0
  91. data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
  92. data/spec/integration/matcher_operator_data/gte.yml +132 -0
  93. data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
  94. data/spec/integration/matcher_operator_data/implicit.yml +331 -0
  95. data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
  96. data/spec/integration/matcher_operator_data/in.yml +194 -0
  97. data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
  98. data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
  99. data/spec/integration/matcher_operator_data/lt.yml +132 -0
  100. data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
  101. data/spec/integration/matcher_operator_data/lte.yml +132 -0
  102. data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
  103. data/spec/integration/matcher_operator_data/multiple.yml +29 -0
  104. data/spec/integration/matcher_operator_data/ne.yml +150 -0
  105. data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
  106. data/spec/integration/matcher_operator_data/nin.yml +114 -0
  107. data/spec/integration/matcher_operator_data/nor.yml +126 -0
  108. data/spec/integration/matcher_operator_data/not.yml +196 -0
  109. data/spec/integration/matcher_operator_data/or.yml +137 -0
  110. data/spec/integration/matcher_operator_data/regex.yml +174 -0
  111. data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
  112. data/spec/integration/matcher_operator_data/size.yml +174 -0
  113. data/spec/integration/matcher_operator_spec.rb +100 -0
  114. data/spec/integration/matcher_spec.rb +189 -0
  115. data/spec/integration/server_query_spec.rb +142 -0
  116. data/spec/integration/stringified_symbol_field_spec.rb +190 -0
  117. data/spec/mongoid/association/depending_spec.rb +78 -26
  118. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
  119. data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
  120. data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
  121. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
  122. data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
  123. data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
  124. data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
  125. data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
  126. data/spec/mongoid/atomic_spec.rb +23 -0
  127. data/spec/mongoid/attributes/nested_spec.rb +1 -1
  128. data/spec/mongoid/clients/factory_spec.rb +37 -0
  129. data/spec/mongoid/clients/sessions_spec.rb +1 -6
  130. data/spec/mongoid/config_spec.rb +28 -0
  131. data/spec/mongoid/contextual/mongo_spec.rb +70 -16
  132. data/spec/mongoid/copyable_spec.rb +197 -18
  133. data/spec/mongoid/copyable_spec_models.rb +28 -0
  134. data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
  135. data/spec/mongoid/criteria_spec.rb +204 -39
  136. data/spec/mongoid/document_fields_spec.rb +26 -0
  137. data/spec/mongoid/document_spec.rb +89 -15
  138. data/spec/mongoid/equality_spec.rb +0 -1
  139. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  140. data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
  141. data/spec/mongoid/factory_spec.rb +261 -28
  142. data/spec/mongoid/fields_spec.rb +48 -2
  143. data/spec/mongoid/findable_spec.rb +32 -0
  144. data/spec/mongoid/indexable_spec.rb +28 -2
  145. data/spec/mongoid/inspectable_spec.rb +29 -2
  146. data/spec/mongoid/interceptable_spec.rb +2 -2
  147. data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
  148. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
  149. data/spec/mongoid/matcher/extract_attribute_spec.rb +37 -0
  150. data/spec/mongoid/persistable/creatable_spec.rb +108 -25
  151. data/spec/mongoid/persistable/deletable_spec.rb +86 -0
  152. data/spec/mongoid/persistable/savable_spec.rb +174 -16
  153. data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
  154. data/spec/mongoid/query_cache_spec.rb +442 -41
  155. data/spec/mongoid/reloadable_spec.rb +72 -0
  156. data/spec/mongoid/serializable_spec.rb +21 -3
  157. data/spec/mongoid/traversable_spec.rb +1100 -0
  158. data/spec/spec_helper.rb +2 -2
  159. data/spec/support/constraints.rb +24 -0
  160. data/spec/support/helpers.rb +1 -1
  161. data/spec/{app → support}/models/account.rb +0 -0
  162. data/spec/{app → support}/models/acolyte.rb +0 -0
  163. data/spec/{app → support}/models/actor.rb +1 -1
  164. data/spec/{app → support}/models/actress.rb +0 -0
  165. data/spec/{app → support}/models/address.rb +0 -0
  166. data/spec/{app → support}/models/address_component.rb +0 -0
  167. data/spec/{app → support}/models/address_number.rb +0 -0
  168. data/spec/{app → support}/models/agency.rb +0 -0
  169. data/spec/{app → support}/models/agent.rb +0 -0
  170. data/spec/{app → support}/models/album.rb +0 -0
  171. data/spec/{app → support}/models/alert.rb +0 -0
  172. data/spec/{app → support}/models/animal.rb +0 -0
  173. data/spec/{app → support}/models/answer.rb +0 -0
  174. data/spec/{app → support}/models/appointment.rb +0 -0
  175. data/spec/support/models/armrest.rb +10 -0
  176. data/spec/{app → support}/models/array_field.rb +0 -0
  177. data/spec/{app → support}/models/article.rb +0 -0
  178. data/spec/{app → support}/models/artist.rb +0 -0
  179. data/spec/{app → support}/models/artwork.rb +0 -0
  180. data/spec/{app → support}/models/audio.rb +0 -0
  181. data/spec/{app → support}/models/augmentation.rb +0 -0
  182. data/spec/{app → support}/models/author.rb +0 -0
  183. data/spec/{app → support}/models/baby.rb +0 -0
  184. data/spec/{app → support}/models/band.rb +0 -0
  185. data/spec/{app → support}/models/bar.rb +0 -0
  186. data/spec/{app → support}/models/basic.rb +0 -0
  187. data/spec/{app → support}/models/bed.rb +0 -0
  188. data/spec/{app → support}/models/big_palette.rb +0 -0
  189. data/spec/{app → support}/models/birthday.rb +0 -0
  190. data/spec/{app → support}/models/bomb.rb +0 -0
  191. data/spec/{app → support}/models/book.rb +0 -0
  192. data/spec/{app → support}/models/breed.rb +0 -0
  193. data/spec/{app → support}/models/browser.rb +1 -1
  194. data/spec/{app → support}/models/building.rb +0 -0
  195. data/spec/{app → support}/models/building_address.rb +0 -0
  196. data/spec/{app → support}/models/bus.rb +0 -0
  197. data/spec/{app → support}/models/business.rb +0 -0
  198. data/spec/{app → support}/models/callback_test.rb +0 -0
  199. data/spec/{app → support}/models/canvas.rb +1 -1
  200. data/spec/{app → support}/models/car.rb +0 -0
  201. data/spec/{app → support}/models/cat.rb +0 -0
  202. data/spec/{app → support}/models/category.rb +0 -0
  203. data/spec/{app → support}/models/child.rb +0 -0
  204. data/spec/{app → support}/models/child_doc.rb +0 -0
  205. data/spec/{app → support}/models/church.rb +0 -0
  206. data/spec/{app → support}/models/circle.rb +0 -0
  207. data/spec/{app → support}/models/circuit.rb +0 -0
  208. data/spec/{app → support}/models/circus.rb +0 -0
  209. data/spec/{app → support}/models/code.rb +0 -0
  210. data/spec/{app → support}/models/coding.rb +1 -1
  211. data/spec/{app → support}/models/coding/pull_request.rb +0 -0
  212. data/spec/{app → support}/models/comment.rb +0 -0
  213. data/spec/{app → support}/models/company.rb +0 -0
  214. data/spec/{app → support}/models/consumption_period.rb +0 -0
  215. data/spec/{app → support}/models/contextable_item.rb +0 -0
  216. data/spec/{app → support}/models/contractor.rb +0 -0
  217. data/spec/{app → support}/models/cookie.rb +0 -0
  218. data/spec/{app → support}/models/country_code.rb +0 -0
  219. data/spec/{app → support}/models/courier_job.rb +0 -0
  220. data/spec/support/models/crate.rb +13 -0
  221. data/spec/{app → support}/models/customer.rb +0 -0
  222. data/spec/{app → support}/models/customer_address.rb +0 -0
  223. data/spec/support/models/deed.rb +8 -0
  224. data/spec/{app → support}/models/definition.rb +0 -0
  225. data/spec/{app → support}/models/delegating_patient.rb +0 -0
  226. data/spec/{app → support}/models/description.rb +0 -0
  227. data/spec/{app → support}/models/dictionary.rb +0 -0
  228. data/spec/{app → support}/models/division.rb +0 -0
  229. data/spec/{app → support}/models/doctor.rb +0 -0
  230. data/spec/{app → support}/models/dog.rb +0 -0
  231. data/spec/{app → support}/models/dokument.rb +0 -0
  232. data/spec/{app → support}/models/draft.rb +0 -0
  233. data/spec/{app → support}/models/dragon.rb +0 -0
  234. data/spec/{app → support}/models/driver.rb +1 -1
  235. data/spec/{app → support}/models/drug.rb +0 -0
  236. data/spec/{app → support}/models/dungeon.rb +0 -0
  237. data/spec/{app → support}/models/edit.rb +0 -0
  238. data/spec/{app → support}/models/email.rb +0 -0
  239. data/spec/{app → support}/models/employer.rb +0 -0
  240. data/spec/{app → support}/models/entry.rb +0 -0
  241. data/spec/{app → support}/models/eraser.rb +0 -0
  242. data/spec/{app → support}/models/even.rb +0 -0
  243. data/spec/{app → support}/models/event.rb +0 -0
  244. data/spec/{app → support}/models/exhibition.rb +0 -0
  245. data/spec/{app → support}/models/exhibitor.rb +0 -0
  246. data/spec/{app → support}/models/explosion.rb +0 -0
  247. data/spec/{app → support}/models/eye.rb +0 -0
  248. data/spec/{app → support}/models/eye_bowl.rb +0 -0
  249. data/spec/{app → support}/models/face.rb +0 -0
  250. data/spec/{app → support}/models/favorite.rb +0 -0
  251. data/spec/{app → support}/models/filesystem.rb +0 -0
  252. data/spec/{app → support}/models/fire_hydrant.rb +0 -0
  253. data/spec/{app → support}/models/firefox.rb +0 -0
  254. data/spec/{app → support}/models/fish.rb +0 -0
  255. data/spec/{app → support}/models/folder.rb +0 -0
  256. data/spec/{app → support}/models/folder_item.rb +0 -0
  257. data/spec/{app → support}/models/fruits.rb +0 -0
  258. data/spec/{app → support}/models/game.rb +0 -0
  259. data/spec/{app → support}/models/ghost.rb +0 -0
  260. data/spec/support/models/guitar.rb +5 -0
  261. data/spec/{app → support}/models/home.rb +0 -0
  262. data/spec/{app → support}/models/house.rb +0 -0
  263. data/spec/{app → support}/models/html_writer.rb +0 -0
  264. data/spec/{app → support}/models/id_key.rb +0 -0
  265. data/spec/support/models/idnodef.rb +8 -0
  266. data/spec/{app → support}/models/image.rb +0 -0
  267. data/spec/{app → support}/models/implant.rb +0 -0
  268. data/spec/support/models/instrument.rb +9 -0
  269. data/spec/{app → support}/models/item.rb +1 -1
  270. data/spec/{app → support}/models/jar.rb +0 -0
  271. data/spec/{app → support}/models/kaleidoscope.rb +0 -0
  272. data/spec/{app → support}/models/kangaroo.rb +0 -0
  273. data/spec/{app → support}/models/label.rb +0 -0
  274. data/spec/{app → support}/models/language.rb +0 -0
  275. data/spec/{app → support}/models/lat_lng.rb +0 -0
  276. data/spec/{app → support}/models/league.rb +0 -0
  277. data/spec/{app → support}/models/learner.rb +0 -0
  278. data/spec/{app → support}/models/line_item.rb +0 -0
  279. data/spec/{app → support}/models/location.rb +0 -0
  280. data/spec/{app → support}/models/login.rb +0 -0
  281. data/spec/{app → support}/models/manufacturer.rb +0 -0
  282. data/spec/{app → support}/models/meat.rb +0 -0
  283. data/spec/{app → support}/models/membership.rb +0 -0
  284. data/spec/{app → support}/models/message.rb +0 -0
  285. data/spec/{app → support}/models/minim.rb +0 -0
  286. data/spec/{app → support}/models/mixed_drink.rb +0 -0
  287. data/spec/support/models/mop.rb +26 -0
  288. data/spec/{app → support}/models/movie.rb +0 -0
  289. data/spec/{app → support}/models/my_hash.rb +0 -0
  290. data/spec/{app → support}/models/name.rb +0 -0
  291. data/spec/{app → support}/models/name_only.rb +0 -0
  292. data/spec/{app → support}/models/node.rb +0 -0
  293. data/spec/{app → support}/models/note.rb +0 -0
  294. data/spec/{app → support}/models/odd.rb +0 -0
  295. data/spec/support/models/order.rb +11 -0
  296. data/spec/{app → support}/models/ordered_post.rb +0 -0
  297. data/spec/{app → support}/models/ordered_preference.rb +0 -0
  298. data/spec/{app → support}/models/oscar.rb +0 -0
  299. data/spec/{app → support}/models/other_owner_object.rb +0 -0
  300. data/spec/{app → support}/models/override.rb +0 -0
  301. data/spec/{app → support}/models/ownable.rb +0 -0
  302. data/spec/{app → support}/models/owner.rb +2 -0
  303. data/spec/{app → support}/models/pack.rb +0 -0
  304. data/spec/{app → support}/models/page.rb +0 -0
  305. data/spec/{app → support}/models/page_question.rb +0 -0
  306. data/spec/{app → support}/models/palette.rb +1 -1
  307. data/spec/{app → support}/models/parent.rb +0 -0
  308. data/spec/{app → support}/models/parent_doc.rb +0 -0
  309. data/spec/{app → support}/models/passport.rb +0 -0
  310. data/spec/{app → support}/models/patient.rb +0 -0
  311. data/spec/{app → support}/models/pdf_writer.rb +0 -0
  312. data/spec/{app → support}/models/pencil.rb +0 -0
  313. data/spec/{app → support}/models/person.rb +1 -1
  314. data/spec/{app → support}/models/pet.rb +0 -0
  315. data/spec/{app → support}/models/pet_owner.rb +0 -0
  316. data/spec/{app → support}/models/phone.rb +0 -0
  317. data/spec/support/models/piano.rb +5 -0
  318. data/spec/{app → support}/models/pizza.rb +0 -0
  319. data/spec/{app → support}/models/player.rb +0 -0
  320. data/spec/{app → support}/models/post.rb +0 -0
  321. data/spec/{app → support}/models/post_genre.rb +0 -0
  322. data/spec/{app → support}/models/powerup.rb +0 -0
  323. data/spec/{app → support}/models/preference.rb +0 -0
  324. data/spec/{app → support}/models/princess.rb +0 -0
  325. data/spec/{app → support}/models/product.rb +0 -0
  326. data/spec/support/models/profile.rb +18 -0
  327. data/spec/{app → support}/models/pronunciation.rb +0 -0
  328. data/spec/{app → support}/models/pub.rb +0 -0
  329. data/spec/support/models/publication.rb +5 -0
  330. data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
  331. data/spec/{app → support}/models/publication/review.rb +0 -0
  332. data/spec/{app → support}/models/purchase.rb +0 -0
  333. data/spec/{app → support}/models/question.rb +0 -0
  334. data/spec/{app → support}/models/quiz.rb +0 -0
  335. data/spec/{app → support}/models/rating.rb +0 -0
  336. data/spec/{app → support}/models/record.rb +0 -0
  337. data/spec/{app → support}/models/registry.rb +0 -0
  338. data/spec/{app → support}/models/role.rb +0 -0
  339. data/spec/{app → support}/models/root_category.rb +0 -0
  340. data/spec/{app → support}/models/sandwich.rb +0 -0
  341. data/spec/{app → support}/models/scheduler.rb +0 -0
  342. data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
  343. data/spec/support/models/seat.rb +25 -0
  344. data/spec/{app → support}/models/seo.rb +0 -0
  345. data/spec/{app → support}/models/series.rb +0 -0
  346. data/spec/{app → support}/models/server.rb +0 -0
  347. data/spec/{app → support}/models/service.rb +0 -0
  348. data/spec/{app → support}/models/shape.rb +2 -2
  349. data/spec/{app → support}/models/shelf.rb +0 -0
  350. data/spec/{app → support}/models/shipment_address.rb +0 -0
  351. data/spec/{app → support}/models/shipping_container.rb +0 -0
  352. data/spec/{app → support}/models/shipping_pack.rb +0 -0
  353. data/spec/{app → support}/models/shop.rb +0 -0
  354. data/spec/{app → support}/models/short_agent.rb +0 -0
  355. data/spec/{app → support}/models/short_quiz.rb +0 -0
  356. data/spec/{app → support}/models/simple.rb +0 -0
  357. data/spec/{app → support}/models/slave.rb +0 -0
  358. data/spec/{app → support}/models/song.rb +0 -0
  359. data/spec/{app → support}/models/sound.rb +0 -0
  360. data/spec/{app → support}/models/square.rb +0 -0
  361. data/spec/{app → support}/models/staff.rb +0 -0
  362. data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
  363. data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
  364. data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
  365. data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
  366. data/spec/{app → support}/models/strategy.rb +0 -0
  367. data/spec/{app → support}/models/sub_item.rb +0 -0
  368. data/spec/{app → support}/models/subscription.rb +0 -0
  369. data/spec/{app → support}/models/survey.rb +0 -0
  370. data/spec/{app → support}/models/symptom.rb +0 -0
  371. data/spec/support/models/system_role.rb +7 -0
  372. data/spec/{app → support}/models/tag.rb +0 -0
  373. data/spec/{app → support}/models/target.rb +0 -0
  374. data/spec/{app → support}/models/template.rb +0 -0
  375. data/spec/{app → support}/models/thing.rb +0 -0
  376. data/spec/{app → support}/models/title.rb +0 -0
  377. data/spec/{app → support}/models/tool.rb +2 -2
  378. data/spec/{app → support}/models/topping.rb +0 -0
  379. data/spec/support/models/toy.rb +10 -0
  380. data/spec/{app → support}/models/track.rb +0 -0
  381. data/spec/{app → support}/models/translation.rb +0 -0
  382. data/spec/{app → support}/models/tree.rb +0 -0
  383. data/spec/{app → support}/models/truck.rb +2 -0
  384. data/spec/{app → support}/models/updatable.rb +0 -0
  385. data/spec/{app → support}/models/user.rb +0 -0
  386. data/spec/{app → support}/models/user_account.rb +0 -0
  387. data/spec/{app → support}/models/validation_callback.rb +0 -0
  388. data/spec/{app → support}/models/vehicle.rb +7 -2
  389. data/spec/{app → support}/models/version.rb +0 -0
  390. data/spec/{app → support}/models/vertex.rb +0 -0
  391. data/spec/{app → support}/models/vet_visit.rb +0 -0
  392. data/spec/{app → support}/models/video.rb +0 -0
  393. data/spec/{app → support}/models/video_game.rb +0 -0
  394. data/spec/{app → support}/models/weapon.rb +0 -0
  395. data/spec/{app → support}/models/wiki_page.rb +0 -0
  396. data/spec/{app → support}/models/word.rb +0 -0
  397. data/spec/{app → support}/models/word_origin.rb +0 -0
  398. data/spec/{app → support}/models/writer.rb +2 -2
  399. data/spec/support/spec_config.rb +1 -1
  400. metadata +617 -508
  401. metadata.gz.sig +3 -4
  402. data/lib/mongoid/matchable/all.rb +0 -30
  403. data/lib/mongoid/matchable/and.rb +0 -32
  404. data/lib/mongoid/matchable/default.rb +0 -121
  405. data/lib/mongoid/matchable/elem_match.rb +0 -36
  406. data/lib/mongoid/matchable/eq.rb +0 -23
  407. data/lib/mongoid/matchable/exists.rb +0 -25
  408. data/lib/mongoid/matchable/gt.rb +0 -25
  409. data/lib/mongoid/matchable/gte.rb +0 -25
  410. data/lib/mongoid/matchable/in.rb +0 -26
  411. data/lib/mongoid/matchable/lt.rb +0 -25
  412. data/lib/mongoid/matchable/lte.rb +0 -25
  413. data/lib/mongoid/matchable/ne.rb +0 -23
  414. data/lib/mongoid/matchable/nin.rb +0 -24
  415. data/lib/mongoid/matchable/nor.rb +0 -38
  416. data/lib/mongoid/matchable/or.rb +0 -35
  417. data/lib/mongoid/matchable/regexp.rb +0 -30
  418. data/lib/mongoid/matchable/size.rb +0 -23
  419. data/spec/app/models/publication.rb +0 -5
  420. data/spec/mongoid/matchable/all_spec.rb +0 -34
  421. data/spec/mongoid/matchable/and_spec.rb +0 -190
  422. data/spec/mongoid/matchable/default_spec.rb +0 -140
  423. data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
  424. data/spec/mongoid/matchable/eq_spec.rb +0 -49
  425. data/spec/mongoid/matchable/exists_spec.rb +0 -60
  426. data/spec/mongoid/matchable/gt_spec.rb +0 -89
  427. data/spec/mongoid/matchable/gte_spec.rb +0 -87
  428. data/spec/mongoid/matchable/in_spec.rb +0 -52
  429. data/spec/mongoid/matchable/lt_spec.rb +0 -88
  430. data/spec/mongoid/matchable/lte_spec.rb +0 -88
  431. data/spec/mongoid/matchable/ne_spec.rb +0 -49
  432. data/spec/mongoid/matchable/nin_spec.rb +0 -51
  433. data/spec/mongoid/matchable/nor_spec.rb +0 -210
  434. data/spec/mongoid/matchable/or_spec.rb +0 -134
  435. data/spec/mongoid/matchable/regexp_spec.rb +0 -62
  436. data/spec/mongoid/matchable/size_spec.rb +0 -28
  437. data/spec/mongoid/matchable_spec.rb +0 -856
data/spec/spec_helper.rb CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'lite_spec_helper'
5
5
 
6
- MODELS = File.join(File.dirname(__FILE__), "app/models")
6
+ MODELS = File.join(File.dirname(__FILE__), "support/models")
7
7
  $LOAD_PATH.unshift(MODELS)
8
8
 
9
9
  require "action_controller"
@@ -83,7 +83,7 @@ Mongoid.configure do |config|
83
83
  config.load_configuration(CONFIG)
84
84
  end
85
85
 
86
- # Autoload every model for the test suite that sits in spec/app/models.
86
+ # Autoload every model for the test suite that sits in spec/support/models.
87
87
  Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
88
88
  name = File.basename(file, ".rb")
89
89
  autoload name.camelize.to_sym, name
@@ -4,6 +4,30 @@
4
4
  module Constraints
5
5
  RAILS_VERSION = ActiveSupport.version.to_s.split('.')[0..1].join('.').freeze
6
6
 
7
+ def min_driver_version(version)
8
+ required_version = version.split('.').map(&:to_i)
9
+ actual_version = driver_version(required_version.length)
10
+ before(:all) do
11
+ if (actual_version <=> required_version) < 0
12
+ skip "Driver version #{version} or higher is required"
13
+ end
14
+ end
15
+ end
16
+
17
+ def max_driver_version(version)
18
+ required_version = version.split('.').map(&:to_i)
19
+ actual_version = driver_version(required_version.length)
20
+ before(:all) do
21
+ if (actual_version <=> required_version) > 0
22
+ skip "Driver version #{version} or lower is required"
23
+ end
24
+ end
25
+ end
26
+
27
+ def driver_version(precision)
28
+ Mongo::VERSION.split('.')[0...precision].map(&:to_i)
29
+ end
30
+
7
31
  def min_rails_version(version)
8
32
  unless version =~ /\A\d+\.\d+\z/
9
33
  raise ArgumentError, "Version can only be major.minor: #{version}"
@@ -6,6 +6,6 @@ module Helpers
6
6
  Object.class_eval do
7
7
  remove_const(name)
8
8
  end
9
- load "spec/app/models/#{name.to_s.underscore}.rb"
9
+ load "spec/support/models/#{name.to_s.underscore}.rb"
10
10
  end
11
11
  end
File without changes
File without changes
@@ -18,4 +18,4 @@ class Actor
18
18
  end
19
19
  end
20
20
 
21
- require "app/models/actress"
21
+ require "support/models/actress"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Armrest
5
+ include Mongoid::Document
6
+
7
+ embedded_in :seat
8
+
9
+ field :side
10
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,4 +6,4 @@ class Browser < Canvas
6
6
  def render; end
7
7
  end
8
8
 
9
- require "app/models/firefox"
9
+ require "support/models/firefox"
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -25,4 +25,4 @@ class Canvas
25
25
  end
26
26
  end
27
27
 
28
- require "app/models/browser"
28
+ require "support/models/browser"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  # encoding: utf-8
3
3
 
4
- require 'app/models/coding/pull_request'
4
+ require 'support/models/coding/pull_request'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Crate
5
+ include Mongoid::Document
6
+
7
+ embedded_in :vehicle
8
+ embeds_many :toys
9
+
10
+ accepts_nested_attributes_for :toys
11
+
12
+ field :volume
13
+ end
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Deed
5
+ include Mongoid::Document
6
+ field :title, type: String
7
+ embedded_in :owner
8
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -7,4 +7,4 @@ class Driver
7
7
  accepts_nested_attributes_for :vehicle
8
8
  end
9
9
 
10
- require "app/models/learner"
10
+ require "support/models/learner"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Guitar < Instrument
5
+ end
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Idnodef
5
+ include Mongoid::Document
6
+
7
+ field :_id, type: String, overwrite: true
8
+ end
File without changes
File without changes
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ class Instrument
5
+ include Mongoid::Document
6
+ end
7
+
8
+ require "support/models/guitar"
9
+ require "support/models/piano"
@@ -8,4 +8,4 @@ class Item
8
8
  field :user_login, type: String
9
9
  end
10
10
 
11
- require "app/models/sub_item"
11
+ require "support/models/sub_item"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes