mongoid 7.1.4 → 7.2.0.rc1

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