mongoid 7.1.7 → 7.2.0.rc1

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