mongoid 7.1.11 → 7.2.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +10 -3
  4. data/Rakefile +11 -30
  5. data/lib/config/locales/en.yml +37 -14
  6. data/lib/mongoid/association/depending.rb +1 -6
  7. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
  8. data/lib/mongoid/association/many.rb +3 -3
  9. data/lib/mongoid/association/proxy.rb +1 -1
  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 +37 -2
  13. data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
  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/attributes.rb +1 -8
  19. data/lib/mongoid/clients/factory.rb +17 -0
  20. data/lib/mongoid/composable.rb +1 -0
  21. data/lib/mongoid/config/environment.rb +1 -9
  22. data/lib/mongoid/config.rb +3 -0
  23. data/lib/mongoid/contextual/atomic.rb +2 -7
  24. data/lib/mongoid/contextual/mongo.rb +23 -4
  25. data/lib/mongoid/contextual/none.rb +0 -3
  26. data/lib/mongoid/copyable.rb +2 -2
  27. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  28. data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
  29. data/lib/mongoid/criteria/queryable/selectable.rb +23 -8
  30. data/lib/mongoid/criteria/queryable/selector.rb +7 -3
  31. data/lib/mongoid/criteria/queryable/storable.rb +7 -7
  32. data/lib/mongoid/criteria.rb +58 -8
  33. data/lib/mongoid/document.rb +19 -9
  34. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
  35. data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
  36. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
  37. data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
  38. data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
  39. data/lib/mongoid/errors/invalid_query.rb +41 -0
  40. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  41. data/lib/mongoid/errors.rb +7 -2
  42. data/lib/mongoid/factory.rb +27 -10
  43. data/lib/mongoid/fields/validators/macro.rb +22 -9
  44. data/lib/mongoid/findable.rb +50 -14
  45. data/lib/mongoid/indexable.rb +2 -2
  46. data/lib/mongoid/interceptable.rb +2 -4
  47. data/lib/mongoid/matchable.rb +1 -149
  48. data/lib/mongoid/matcher/all.rb +22 -0
  49. data/lib/mongoid/matcher/and.rb +21 -0
  50. data/lib/mongoid/matcher/elem_match.rb +35 -0
  51. data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
  52. data/lib/mongoid/matcher/eq.rb +11 -0
  53. data/lib/mongoid/matcher/eq_impl.rb +32 -0
  54. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
  55. data/lib/mongoid/matcher/exists.rb +15 -0
  56. data/lib/mongoid/matcher/expression.rb +40 -0
  57. data/lib/mongoid/matcher/expression_operator.rb +19 -0
  58. data/lib/mongoid/matcher/field_expression.rb +63 -0
  59. data/lib/mongoid/matcher/field_operator.rb +52 -0
  60. data/lib/mongoid/matcher/gt.rb +17 -0
  61. data/lib/mongoid/matcher/gte.rb +17 -0
  62. data/lib/mongoid/matcher/in.rb +25 -0
  63. data/lib/mongoid/matcher/lt.rb +17 -0
  64. data/lib/mongoid/matcher/lte.rb +17 -0
  65. data/lib/mongoid/matcher/ne.rb +16 -0
  66. data/lib/mongoid/matcher/nin.rb +11 -0
  67. data/lib/mongoid/matcher/nor.rb +25 -0
  68. data/lib/mongoid/matcher/not.rb +29 -0
  69. data/lib/mongoid/matcher/or.rb +21 -0
  70. data/lib/mongoid/matcher/regex.rb +41 -0
  71. data/lib/mongoid/matcher/size.rb +26 -0
  72. data/lib/mongoid/matcher.rb +127 -0
  73. data/lib/mongoid/persistable/deletable.rb +1 -1
  74. data/lib/mongoid/persistence_context.rb +1 -3
  75. data/lib/mongoid/query_cache.rb +64 -62
  76. data/lib/mongoid/reloadable.rb +2 -7
  77. data/lib/mongoid/serializable.rb +1 -1
  78. data/lib/mongoid/tasks/database.rb +1 -1
  79. data/lib/mongoid/traversable.rb +111 -4
  80. data/lib/mongoid/validatable/associated.rb +1 -1
  81. data/lib/mongoid/validatable/presence.rb +3 -3
  82. data/lib/mongoid/validatable/uniqueness.rb +1 -1
  83. data/lib/mongoid/version.rb +1 -1
  84. data/lib/mongoid.rb +23 -1
  85. data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
  86. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
  87. data/spec/integration/app_spec.rb +88 -178
  88. data/spec/integration/associations/embedded_spec.rb +94 -0
  89. data/spec/integration/associations/has_many_spec.rb +39 -46
  90. data/spec/integration/associations/has_one_spec.rb +39 -46
  91. data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
  92. data/spec/integration/atomic/modifiers_spec.rb +117 -0
  93. data/spec/integration/discriminator_key_spec.rb +354 -0
  94. data/spec/integration/discriminator_value_spec.rb +207 -0
  95. data/spec/integration/document_spec.rb +0 -21
  96. data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
  97. data/spec/integration/matcher_operator_data/all.yml +140 -0
  98. data/spec/integration/matcher_operator_data/and.yml +93 -0
  99. data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
  100. data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
  101. data/spec/integration/matcher_operator_data/eq.yml +191 -0
  102. data/spec/integration/matcher_operator_data/exists.yml +213 -0
  103. data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
  104. data/spec/integration/matcher_operator_data/gt.yml +132 -0
  105. data/spec/integration/matcher_operator_data/gte.yml +132 -0
  106. data/spec/integration/matcher_operator_data/implicit.yml +331 -0
  107. data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
  108. data/spec/integration/matcher_operator_data/in.yml +194 -0
  109. data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
  110. data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
  111. data/spec/integration/matcher_operator_data/lt.yml +132 -0
  112. data/spec/integration/matcher_operator_data/lte.yml +132 -0
  113. data/spec/integration/matcher_operator_data/multiple.yml +29 -0
  114. data/spec/integration/matcher_operator_data/ne.yml +150 -0
  115. data/spec/integration/matcher_operator_data/nin.yml +114 -0
  116. data/spec/integration/matcher_operator_data/nor.yml +126 -0
  117. data/spec/integration/matcher_operator_data/not.yml +196 -0
  118. data/spec/integration/matcher_operator_data/or.yml +137 -0
  119. data/spec/integration/matcher_operator_data/regex.yml +174 -0
  120. data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
  121. data/spec/integration/matcher_operator_data/size.yml +174 -0
  122. data/spec/integration/matcher_operator_spec.rb +100 -0
  123. data/spec/integration/matcher_spec.rb +189 -0
  124. data/spec/integration/server_query_spec.rb +142 -0
  125. data/spec/lite_spec_helper.rb +7 -7
  126. data/spec/mongoid/association/depending_spec.rb +78 -26
  127. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +0 -50
  128. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
  129. data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
  130. data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
  131. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +0 -17
  132. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
  133. data/spec/mongoid/association/referenced/has_many_models.rb +9 -0
  134. data/spec/mongoid/association/referenced/has_one_models.rb +9 -0
  135. data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
  136. data/spec/mongoid/atomic/paths_spec.rb +0 -41
  137. data/spec/mongoid/atomic_spec.rb +23 -0
  138. data/spec/mongoid/attributes/nested_spec.rb +1 -1
  139. data/spec/mongoid/attributes_spec.rb +0 -241
  140. data/spec/mongoid/clients/factory_spec.rb +35 -9
  141. data/spec/mongoid/clients/options_spec.rb +3 -11
  142. data/spec/mongoid/clients/sessions_spec.rb +1 -6
  143. data/spec/mongoid/config/environment_spec.rb +8 -86
  144. data/spec/mongoid/config_spec.rb +28 -0
  145. data/spec/mongoid/contextual/atomic_spec.rb +29 -81
  146. data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
  147. data/spec/mongoid/contextual/mongo_spec.rb +70 -16
  148. data/spec/mongoid/copyable_spec.rb +153 -1
  149. data/spec/mongoid/copyable_spec_models.rb +14 -0
  150. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -36
  151. data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
  152. data/spec/mongoid/criteria_spec.rb +204 -43
  153. data/spec/mongoid/document_query_spec.rb +0 -51
  154. data/spec/mongoid/document_spec.rb +90 -36
  155. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  156. data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
  157. data/spec/mongoid/factory_spec.rb +261 -28
  158. data/spec/mongoid/fields_spec.rb +48 -2
  159. data/spec/mongoid/findable_spec.rb +32 -0
  160. data/spec/mongoid/indexable_spec.rb +28 -2
  161. data/spec/mongoid/inspectable_spec.rb +29 -2
  162. data/spec/mongoid/interceptable_spec.rb +2 -2
  163. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
  164. data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
  165. data/spec/mongoid/persistable/creatable_spec.rb +108 -25
  166. data/spec/mongoid/persistable/deletable_spec.rb +86 -0
  167. data/spec/mongoid/persistable/savable_spec.rb +174 -16
  168. data/spec/mongoid/persistable/settable_spec.rb +0 -30
  169. data/spec/mongoid/persistable/updatable_spec.rb +0 -2
  170. data/spec/mongoid/persistable_spec.rb +2 -2
  171. data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
  172. data/spec/mongoid/query_cache_spec.rb +442 -41
  173. data/spec/mongoid/reloadable_spec.rb +72 -0
  174. data/spec/mongoid/serializable_spec.rb +21 -3
  175. data/spec/mongoid/traversable_spec.rb +1100 -0
  176. data/spec/spec_helper.rb +3 -5
  177. data/spec/support/child_process_helper.rb +79 -0
  178. data/spec/support/constraints.rb +250 -0
  179. data/spec/support/helpers.rb +1 -1
  180. data/spec/support/lite_constraints.rb +22 -0
  181. data/spec/{app → support}/models/account.rb +0 -0
  182. data/spec/{app → support}/models/acolyte.rb +0 -0
  183. data/spec/{app → support}/models/actor.rb +1 -1
  184. data/spec/{app → support}/models/actress.rb +0 -0
  185. data/spec/{app → support}/models/address.rb +0 -4
  186. data/spec/{app → support}/models/address_component.rb +0 -0
  187. data/spec/{app → support}/models/address_number.rb +0 -0
  188. data/spec/{app → support}/models/agency.rb +0 -0
  189. data/spec/{app → support}/models/agent.rb +0 -0
  190. data/spec/{app → support}/models/album.rb +0 -0
  191. data/spec/{app → support}/models/alert.rb +0 -0
  192. data/spec/{app → support}/models/animal.rb +0 -0
  193. data/spec/{app → support}/models/answer.rb +0 -0
  194. data/spec/{app → support}/models/appointment.rb +0 -0
  195. data/spec/support/models/armrest.rb +10 -0
  196. data/spec/{app → support}/models/array_field.rb +0 -0
  197. data/spec/{app → support}/models/article.rb +0 -0
  198. data/spec/{app → support}/models/artist.rb +0 -0
  199. data/spec/{app → support}/models/artwork.rb +0 -0
  200. data/spec/{app → support}/models/audio.rb +0 -0
  201. data/spec/{app → support}/models/augmentation.rb +0 -0
  202. data/spec/{app → support}/models/author.rb +0 -0
  203. data/spec/{app → support}/models/baby.rb +0 -0
  204. data/spec/{app → support}/models/band.rb +0 -0
  205. data/spec/{app → support}/models/bar.rb +0 -0
  206. data/spec/{app → support}/models/basic.rb +0 -0
  207. data/spec/{app → support}/models/bed.rb +0 -0
  208. data/spec/{app → support}/models/big_palette.rb +0 -0
  209. data/spec/{app → support}/models/birthday.rb +0 -0
  210. data/spec/{app → support}/models/bomb.rb +0 -0
  211. data/spec/{app → support}/models/book.rb +0 -0
  212. data/spec/{app → support}/models/breed.rb +0 -0
  213. data/spec/{app → support}/models/browser.rb +1 -1
  214. data/spec/{app → support}/models/building.rb +0 -0
  215. data/spec/{app → support}/models/building_address.rb +0 -0
  216. data/spec/{app → support}/models/bus.rb +0 -0
  217. data/spec/{app → support}/models/business.rb +0 -0
  218. data/spec/{app → support}/models/callback_test.rb +0 -0
  219. data/spec/{app → support}/models/canvas.rb +1 -1
  220. data/spec/{app → support}/models/car.rb +0 -0
  221. data/spec/{app → support}/models/cat.rb +0 -0
  222. data/spec/{app → support}/models/category.rb +0 -0
  223. data/spec/{app → support}/models/child.rb +0 -0
  224. data/spec/{app → support}/models/child_doc.rb +0 -0
  225. data/spec/{app → support}/models/church.rb +0 -0
  226. data/spec/{app → support}/models/circle.rb +0 -0
  227. data/spec/{app → support}/models/circuit.rb +0 -0
  228. data/spec/{app → support}/models/circus.rb +0 -0
  229. data/spec/{app → support}/models/code.rb +0 -0
  230. data/spec/{app → support}/models/coding/pull_request.rb +0 -0
  231. data/spec/{app → support}/models/coding.rb +1 -1
  232. data/spec/{app → support}/models/comment.rb +0 -0
  233. data/spec/{app → support}/models/company.rb +0 -0
  234. data/spec/{app → support}/models/consumption_period.rb +0 -0
  235. data/spec/{app → support}/models/contextable_item.rb +0 -0
  236. data/spec/{app → support}/models/contractor.rb +0 -0
  237. data/spec/{app → support}/models/cookie.rb +0 -0
  238. data/spec/{app → support}/models/country_code.rb +0 -0
  239. data/spec/{app → support}/models/courier_job.rb +0 -0
  240. data/spec/support/models/crate.rb +13 -0
  241. data/spec/support/models/deed.rb +8 -0
  242. data/spec/{app → support}/models/definition.rb +0 -0
  243. data/spec/{app → support}/models/delegating_patient.rb +0 -0
  244. data/spec/{app → support}/models/description.rb +0 -0
  245. data/spec/{app → support}/models/dictionary.rb +0 -6
  246. data/spec/{app → support}/models/division.rb +0 -0
  247. data/spec/{app → support}/models/doctor.rb +0 -0
  248. data/spec/{app → support}/models/dog.rb +0 -0
  249. data/spec/{app → support}/models/dokument.rb +0 -0
  250. data/spec/{app → support}/models/draft.rb +0 -0
  251. data/spec/{app → support}/models/dragon.rb +0 -0
  252. data/spec/{app → support}/models/driver.rb +1 -1
  253. data/spec/{app → support}/models/drug.rb +0 -0
  254. data/spec/{app → support}/models/dungeon.rb +0 -0
  255. data/spec/{app → support}/models/edit.rb +0 -0
  256. data/spec/{app → support}/models/email.rb +0 -0
  257. data/spec/{app → support}/models/employer.rb +0 -0
  258. data/spec/{app → support}/models/entry.rb +0 -0
  259. data/spec/{app → support}/models/eraser.rb +0 -0
  260. data/spec/{app → support}/models/even.rb +0 -0
  261. data/spec/{app → support}/models/event.rb +0 -0
  262. data/spec/{app → support}/models/exhibition.rb +0 -0
  263. data/spec/{app → support}/models/exhibitor.rb +0 -0
  264. data/spec/{app → support}/models/explosion.rb +0 -0
  265. data/spec/{app → support}/models/eye.rb +0 -0
  266. data/spec/{app → support}/models/eye_bowl.rb +0 -0
  267. data/spec/{app → support}/models/face.rb +0 -0
  268. data/spec/{app → support}/models/favorite.rb +0 -0
  269. data/spec/{app → support}/models/filesystem.rb +0 -0
  270. data/spec/{app → support}/models/fire_hydrant.rb +0 -0
  271. data/spec/{app → support}/models/firefox.rb +0 -0
  272. data/spec/{app → support}/models/fish.rb +0 -0
  273. data/spec/{app → support}/models/folder.rb +0 -0
  274. data/spec/{app → support}/models/folder_item.rb +0 -0
  275. data/spec/{app → support}/models/fruits.rb +0 -0
  276. data/spec/{app → support}/models/game.rb +0 -0
  277. data/spec/{app → support}/models/ghost.rb +0 -0
  278. data/spec/support/models/guitar.rb +5 -0
  279. data/spec/{app → support}/models/home.rb +0 -0
  280. data/spec/{app → support}/models/house.rb +0 -0
  281. data/spec/{app → support}/models/html_writer.rb +0 -0
  282. data/spec/{app → support}/models/id_key.rb +0 -0
  283. data/spec/support/models/idnodef.rb +8 -0
  284. data/spec/{app → support}/models/image.rb +0 -0
  285. data/spec/{app → support}/models/implant.rb +0 -0
  286. data/spec/support/models/instrument.rb +9 -0
  287. data/spec/{app → support}/models/item.rb +1 -1
  288. data/spec/{app → support}/models/jar.rb +0 -0
  289. data/spec/{app → support}/models/kaleidoscope.rb +0 -0
  290. data/spec/{app → support}/models/kangaroo.rb +0 -0
  291. data/spec/{app → support}/models/label.rb +0 -0
  292. data/spec/{app → support}/models/language.rb +0 -0
  293. data/spec/{app → support}/models/lat_lng.rb +0 -0
  294. data/spec/{app → support}/models/league.rb +0 -0
  295. data/spec/{app → support}/models/learner.rb +0 -0
  296. data/spec/{app → support}/models/line_item.rb +0 -0
  297. data/spec/{app → support}/models/location.rb +0 -0
  298. data/spec/{app → support}/models/login.rb +0 -0
  299. data/spec/{app → support}/models/manufacturer.rb +0 -0
  300. data/spec/{app → support}/models/meat.rb +0 -0
  301. data/spec/{app → support}/models/membership.rb +0 -0
  302. data/spec/{app → support}/models/message.rb +0 -0
  303. data/spec/{app → support}/models/minim.rb +0 -0
  304. data/spec/{app → support}/models/mixed_drink.rb +0 -0
  305. data/spec/{app → support}/models/mop.rb +0 -10
  306. data/spec/{app → support}/models/movie.rb +0 -0
  307. data/spec/{app → support}/models/my_hash.rb +0 -0
  308. data/spec/{app → support}/models/name.rb +0 -0
  309. data/spec/{app → support}/models/name_only.rb +0 -0
  310. data/spec/{app → support}/models/node.rb +0 -0
  311. data/spec/{app → support}/models/note.rb +0 -0
  312. data/spec/{app → support}/models/odd.rb +0 -0
  313. data/spec/{app → support}/models/ordered_post.rb +0 -0
  314. data/spec/{app → support}/models/ordered_preference.rb +0 -0
  315. data/spec/{app → support}/models/oscar.rb +0 -0
  316. data/spec/{app → support}/models/other_owner_object.rb +0 -0
  317. data/spec/{app → support}/models/override.rb +0 -0
  318. data/spec/{app → support}/models/ownable.rb +0 -0
  319. data/spec/{app → support}/models/owner.rb +2 -0
  320. data/spec/{app → support}/models/pack.rb +0 -0
  321. data/spec/{app → support}/models/page.rb +0 -0
  322. data/spec/{app → support}/models/page_question.rb +0 -0
  323. data/spec/{app → support}/models/palette.rb +1 -1
  324. data/spec/{app → support}/models/parent.rb +0 -0
  325. data/spec/{app → support}/models/parent_doc.rb +0 -0
  326. data/spec/{app → support}/models/passport.rb +0 -0
  327. data/spec/{app → support}/models/patient.rb +0 -0
  328. data/spec/{app → support}/models/pdf_writer.rb +0 -0
  329. data/spec/{app → support}/models/pencil.rb +0 -0
  330. data/spec/{app → support}/models/person.rb +1 -12
  331. data/spec/{app → support}/models/pet.rb +0 -0
  332. data/spec/{app → support}/models/pet_owner.rb +0 -0
  333. data/spec/{app → support}/models/phone.rb +0 -0
  334. data/spec/support/models/piano.rb +5 -0
  335. data/spec/{app → support}/models/pizza.rb +0 -0
  336. data/spec/{app → support}/models/player.rb +0 -0
  337. data/spec/{app → support}/models/post.rb +0 -0
  338. data/spec/{app → support}/models/post_genre.rb +0 -0
  339. data/spec/{app → support}/models/powerup.rb +0 -0
  340. data/spec/{app → support}/models/preference.rb +0 -0
  341. data/spec/{app → support}/models/princess.rb +0 -0
  342. data/spec/{app → support}/models/product.rb +0 -0
  343. data/spec/support/models/profile.rb +18 -0
  344. data/spec/{app → support}/models/pronunciation.rb +0 -0
  345. data/spec/{app → support}/models/pub.rb +0 -0
  346. data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
  347. data/spec/{app → support}/models/publication/review.rb +0 -0
  348. data/spec/support/models/publication.rb +5 -0
  349. data/spec/{app → support}/models/purchase.rb +0 -0
  350. data/spec/{app → support}/models/question.rb +0 -0
  351. data/spec/{app → support}/models/quiz.rb +0 -0
  352. data/spec/{app → support}/models/rating.rb +0 -0
  353. data/spec/{app → support}/models/record.rb +0 -0
  354. data/spec/{app → support}/models/registry.rb +0 -0
  355. data/spec/{app → support}/models/role.rb +0 -0
  356. data/spec/{app → support}/models/root_category.rb +0 -0
  357. data/spec/{app → support}/models/sandwich.rb +0 -0
  358. data/spec/{app → support}/models/scheduler.rb +0 -0
  359. data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
  360. data/spec/support/models/seat.rb +25 -0
  361. data/spec/{app → support}/models/seo.rb +0 -0
  362. data/spec/{app → support}/models/series.rb +0 -1
  363. data/spec/{app → support}/models/server.rb +0 -0
  364. data/spec/{app → support}/models/service.rb +0 -0
  365. data/spec/{app → support}/models/shape.rb +2 -2
  366. data/spec/{app → support}/models/shelf.rb +0 -0
  367. data/spec/{app → support}/models/shipment_address.rb +0 -0
  368. data/spec/{app → support}/models/shipping_container.rb +0 -0
  369. data/spec/{app → support}/models/shipping_pack.rb +0 -0
  370. data/spec/{app → support}/models/shop.rb +0 -0
  371. data/spec/{app → support}/models/short_agent.rb +0 -0
  372. data/spec/{app → support}/models/short_quiz.rb +0 -0
  373. data/spec/{app → support}/models/simple.rb +0 -0
  374. data/spec/{app → support}/models/slave.rb +0 -0
  375. data/spec/{app → support}/models/song.rb +0 -0
  376. data/spec/{app → support}/models/sound.rb +0 -0
  377. data/spec/{app → support}/models/square.rb +0 -0
  378. data/spec/{app → support}/models/staff.rb +0 -0
  379. data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
  380. data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
  381. data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
  382. data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
  383. data/spec/{app → support}/models/strategy.rb +0 -0
  384. data/spec/{app → support}/models/sub_item.rb +0 -0
  385. data/spec/{app → support}/models/subscription.rb +0 -0
  386. data/spec/{app → support}/models/survey.rb +0 -0
  387. data/spec/{app → support}/models/symptom.rb +0 -0
  388. data/spec/support/models/system_role.rb +7 -0
  389. data/spec/{app → support}/models/tag.rb +0 -0
  390. data/spec/{app → support}/models/target.rb +0 -0
  391. data/spec/{app → support}/models/template.rb +0 -0
  392. data/spec/{app → support}/models/thing.rb +0 -0
  393. data/spec/{app → support}/models/title.rb +0 -0
  394. data/spec/{app → support}/models/tool.rb +2 -2
  395. data/spec/{app → support}/models/topping.rb +0 -0
  396. data/spec/support/models/toy.rb +10 -0
  397. data/spec/{app → support}/models/track.rb +0 -0
  398. data/spec/{app → support}/models/translation.rb +0 -0
  399. data/spec/{app → support}/models/tree.rb +0 -0
  400. data/spec/{app → support}/models/truck.rb +2 -0
  401. data/spec/{app → support}/models/updatable.rb +0 -0
  402. data/spec/{app → support}/models/user.rb +0 -0
  403. data/spec/{app → support}/models/user_account.rb +0 -0
  404. data/spec/{app → support}/models/validation_callback.rb +0 -0
  405. data/spec/{app → support}/models/vehicle.rb +7 -2
  406. data/spec/{app → support}/models/version.rb +0 -0
  407. data/spec/{app → support}/models/vertex.rb +0 -0
  408. data/spec/{app → support}/models/vet_visit.rb +0 -0
  409. data/spec/{app → support}/models/video.rb +0 -0
  410. data/spec/{app → support}/models/video_game.rb +0 -0
  411. data/spec/{app → support}/models/weapon.rb +0 -0
  412. data/spec/{app → support}/models/wiki_page.rb +0 -1
  413. data/spec/{app → support}/models/word.rb +0 -0
  414. data/spec/{app → support}/models/word_origin.rb +0 -0
  415. data/spec/{app → support}/models/writer.rb +2 -2
  416. data/spec/support/spec_config.rb +1 -9
  417. data/spec/support/spec_organizer.rb +130 -0
  418. data.tar.gz.sig +0 -0
  419. metadata +847 -844
  420. metadata.gz.sig +0 -0
  421. data/lib/mongoid/errors/empty_config_file.rb +0 -26
  422. data/lib/mongoid/errors/invalid_config_file.rb +0 -26
  423. data/lib/mongoid/matchable/all.rb +0 -30
  424. data/lib/mongoid/matchable/and.rb +0 -32
  425. data/lib/mongoid/matchable/default.rb +0 -121
  426. data/lib/mongoid/matchable/elem_match.rb +0 -36
  427. data/lib/mongoid/matchable/eq.rb +0 -23
  428. data/lib/mongoid/matchable/exists.rb +0 -25
  429. data/lib/mongoid/matchable/gt.rb +0 -25
  430. data/lib/mongoid/matchable/gte.rb +0 -25
  431. data/lib/mongoid/matchable/in.rb +0 -26
  432. data/lib/mongoid/matchable/lt.rb +0 -25
  433. data/lib/mongoid/matchable/lte.rb +0 -25
  434. data/lib/mongoid/matchable/ne.rb +0 -23
  435. data/lib/mongoid/matchable/nin.rb +0 -24
  436. data/lib/mongoid/matchable/nor.rb +0 -38
  437. data/lib/mongoid/matchable/or.rb +0 -35
  438. data/lib/mongoid/matchable/regexp.rb +0 -30
  439. data/lib/mongoid/matchable/size.rb +0 -23
  440. data/spec/app/models/customer.rb +0 -11
  441. data/spec/app/models/customer_address.rb +0 -12
  442. data/spec/app/models/publication.rb +0 -5
  443. data/spec/integration/associations/embeds_many_spec.rb +0 -24
  444. data/spec/integration/associations/embeds_one_spec.rb +0 -24
  445. data/spec/integration/callbacks_models.rb +0 -49
  446. data/spec/integration/callbacks_spec.rb +0 -216
  447. data/spec/integration/contextual/empty_spec.rb +0 -142
  448. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
  449. data/spec/mongoid/matchable/all_spec.rb +0 -34
  450. data/spec/mongoid/matchable/and_spec.rb +0 -190
  451. data/spec/mongoid/matchable/default_spec.rb +0 -140
  452. data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
  453. data/spec/mongoid/matchable/eq_spec.rb +0 -49
  454. data/spec/mongoid/matchable/exists_spec.rb +0 -60
  455. data/spec/mongoid/matchable/gt_spec.rb +0 -89
  456. data/spec/mongoid/matchable/gte_spec.rb +0 -87
  457. data/spec/mongoid/matchable/in_spec.rb +0 -52
  458. data/spec/mongoid/matchable/lt_spec.rb +0 -88
  459. data/spec/mongoid/matchable/lte_spec.rb +0 -88
  460. data/spec/mongoid/matchable/ne_spec.rb +0 -49
  461. data/spec/mongoid/matchable/nin_spec.rb +0 -51
  462. data/spec/mongoid/matchable/nor_spec.rb +0 -210
  463. data/spec/mongoid/matchable/or_spec.rb +0 -134
  464. data/spec/mongoid/matchable/regexp_spec.rb +0 -62
  465. data/spec/mongoid/matchable/size_spec.rb +0 -28
  466. data/spec/mongoid/matchable_spec.rb +0 -856
  467. data/spec/shared/LICENSE +0 -20
  468. data/spec/shared/bin/get-mongodb-download-url +0 -17
  469. data/spec/shared/bin/s3-copy +0 -45
  470. data/spec/shared/bin/s3-upload +0 -69
  471. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  472. data/spec/shared/lib/mrss/cluster_config.rb +0 -226
  473. data/spec/shared/lib/mrss/constraints.rb +0 -385
  474. data/spec/shared/lib/mrss/docker_runner.rb +0 -271
  475. data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
  476. data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
  477. data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
  478. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  479. data/spec/shared/lib/mrss/utils.rb +0 -15
  480. data/spec/shared/share/Dockerfile.erb +0 -323
  481. data/spec/shared/share/haproxy-1.conf +0 -16
  482. data/spec/shared/share/haproxy-2.conf +0 -17
  483. data/spec/shared/shlib/distro.sh +0 -73
  484. data/spec/shared/shlib/server.sh +0 -367
  485. data/spec/shared/shlib/set_env.sh +0 -131
@@ -0,0 +1,174 @@
1
+ - name: correct size
2
+ document:
3
+ products: [1, 2, 3]
4
+ query:
5
+ products:
6
+ $size: 3
7
+ matches: true
8
+
9
+ - name: incorrect size
10
+ document:
11
+ products: [1, 2, 3]
12
+ query:
13
+ products:
14
+ $size: 2
15
+ matches: false
16
+
17
+ - name: empty array - correct size
18
+ document:
19
+ products: []
20
+ query:
21
+ products:
22
+ $size: 0
23
+ matches: true
24
+
25
+ - name: empty array - incorrect size
26
+ document:
27
+ products: []
28
+ query:
29
+ products:
30
+ $size: 1
31
+ matches: false
32
+
33
+ - name: condition is an array
34
+ document:
35
+ products: [1, 2, 3]
36
+ query:
37
+ products:
38
+ - $size: 3
39
+ matches: false
40
+
41
+ - name: field value is a scalar
42
+ document:
43
+ hello: world
44
+ query:
45
+ hello:
46
+ $size: 5
47
+ matches: false
48
+
49
+ - name: field value is a hash
50
+ document:
51
+ hello:
52
+ foo: bar
53
+ query:
54
+ hello:
55
+ $size: 1
56
+ matches: false
57
+
58
+ - name: nil argument
59
+ document:
60
+ position: ceo
61
+ query:
62
+ position:
63
+ $size: ~
64
+ error: true
65
+
66
+ - name: empty array argument
67
+ document:
68
+ position: ceo
69
+ query:
70
+ position:
71
+ $size: []
72
+ error: true
73
+
74
+ - name: empty hash argument
75
+ document:
76
+ position: ceo
77
+ query:
78
+ position:
79
+ $size: {}
80
+ error: true
81
+
82
+ - name: string argument
83
+ document:
84
+ position: ceo
85
+ query:
86
+ position:
87
+ $size: foo
88
+ error: true
89
+ min_server_version: 3.4
90
+
91
+ - name: floating point argument
92
+ document:
93
+ position: ceo
94
+ query:
95
+ position:
96
+ $size: 2.5
97
+ error: true
98
+ min_server_version: 3.4
99
+
100
+ - name: negative integer argument
101
+ document:
102
+ position: ceo
103
+ query:
104
+ position:
105
+ $size: -2
106
+ error: true
107
+ min_server_version: 3.4
108
+
109
+ - name: empty array field value
110
+ document:
111
+ position: []
112
+ query:
113
+ position:
114
+ $size: 1
115
+ matches: false
116
+
117
+ - name: empty hash field value
118
+ document:
119
+ position: {}
120
+ query:
121
+ position:
122
+ $size: 1
123
+ matches: false
124
+
125
+ - name: numeric field value
126
+ document:
127
+ position: 42
128
+ query:
129
+ position:
130
+ $size: 1
131
+ matches: false
132
+
133
+ - name: string field value
134
+ document:
135
+ position: foo
136
+ query:
137
+ position:
138
+ $size: 1
139
+ matches: false
140
+
141
+ - name: true field value
142
+ document:
143
+ position: true
144
+ query:
145
+ position:
146
+ $size: 0
147
+ matches: false
148
+
149
+ - name: false field value
150
+ document:
151
+ position: false
152
+ query:
153
+ position:
154
+ $size: 0
155
+ matches: false
156
+
157
+ - name: null field value
158
+ document:
159
+ position: ~
160
+ query:
161
+ position:
162
+ $size: 0
163
+ matches: false
164
+
165
+ - name: range
166
+ document:
167
+ name: 42
168
+ query:
169
+ name:
170
+ $size: !ruby/range
171
+ begin: 1
172
+ end: 2
173
+ excl: false
174
+ error: true
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ require 'spec_helper'
5
+
6
+ def mop_error?(spec, kind)
7
+ unless %w(matcher driver dsl).include?(kind)
8
+ raise ArgumentError, "Bogus kind: #{kind}"
9
+ end
10
+
11
+ spec['error'] == true || spec['error'] == kind ||
12
+ spec['error'].is_a?(Array) && spec['error'].include?(kind)
13
+ end
14
+
15
+ describe 'Matcher operators' do
16
+ Dir[File.join(File.dirname(__FILE__), 'matcher_operator_data', '*.yml')].sort.each do |path|
17
+ context File.basename(path) do
18
+ specs = YAML.load(File.read(path))
19
+
20
+ specs.each do |spec|
21
+ context spec['name'] do
22
+
23
+ if spec['pending']
24
+ before do
25
+ # Cannot use `pending` here because some of the queries may work
26
+ # as specified (e.g. when Mongoid and server behavior differ).
27
+ skip spec['pending'].to_s
28
+ end
29
+ end
30
+
31
+ if spec['min_server_version']
32
+ min_server_version spec['min_server_version'].to_s
33
+ end
34
+
35
+ let(:query) { spec.fetch('query') }
36
+ let(:result) { spec.fetch('matches') }
37
+
38
+ context 'embedded matching' do
39
+ let(:document) { Mop.new(spec.fetch('document')) }
40
+
41
+ if mop_error?(spec, 'matcher')
42
+ it 'produces an error' do
43
+ lambda do
44
+ document._matches?(query)
45
+ end.should raise_error(Mongoid::Errors::InvalidQuery)
46
+ end
47
+ else
48
+ it 'produces the correct result' do
49
+ document._matches?(query).should be result
50
+ end
51
+ end
52
+ end
53
+
54
+ context 'server query' do
55
+ let!(:document) { Mop.create(spec.fetch('document')) }
56
+
57
+ context 'via driver' do
58
+ if mop_error?(spec, 'driver')
59
+ it 'produces an error' do
60
+ begin
61
+ Mop.collection.find(query).any?
62
+ rescue Mongo::Error::OperationFailure
63
+ rescue Mongo::Error::InvalidDocument
64
+ rescue BSON::Error::UnserializableClass
65
+ else
66
+ fail "Expected an exception to be raised"
67
+ end
68
+ end
69
+ else
70
+ it 'produces the correct result' do
71
+ Mop.collection.find(query).any?.should be result
72
+ end
73
+ end
74
+ end
75
+
76
+ context 'via Mongoid DSL' do
77
+ if mop_error?(spec, 'dsl')
78
+ it 'produces an error' do
79
+ begin
80
+ Mop.where(query).any?
81
+ rescue Mongo::Error::OperationFailure
82
+ rescue BSON::Error::UnserializableClass
83
+ rescue Mongoid::Errors::InvalidQuery
84
+ rescue Mongoid::Errors::CriteriaArgumentRequired
85
+ else
86
+ fail "Expected the query to raise an error"
87
+ end
88
+ end
89
+ else
90
+ it 'produces the correct result' do
91
+ Mop.where(query).any?.should be result
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,189 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ require 'spec_helper'
5
+
6
+ describe 'Matcher operators' do
7
+ let(:result) do
8
+ document._matches?(query)
9
+ end
10
+
11
+ shared_examples 'is true' do
12
+ it 'is true' do
13
+ result.should be true
14
+ end
15
+ end
16
+
17
+ shared_examples 'is false' do
18
+ it 'is false 'do
19
+ result.should be false
20
+ end
21
+ end
22
+
23
+ context 'when querying nested document' do
24
+ context 'embeds_one' do
25
+ let(:document) do
26
+ Canvas.new(
27
+ writer: Writer.new(speed: 3),
28
+ )
29
+ end
30
+
31
+ context 'implicit $eq' do
32
+ context 'matches' do
33
+ let(:query) do
34
+ {'writer.speed' => 3}
35
+ end
36
+
37
+ it_behaves_like 'is true'
38
+ end
39
+
40
+ context 'does not match' do
41
+ let(:query) do
42
+ {'speed' => 3}
43
+ end
44
+
45
+ it_behaves_like 'is false'
46
+ end
47
+ end
48
+
49
+ context 'field operator' do
50
+ # Test string and symbol operators
51
+ ['$gt', :$gt].each do |op|
52
+ context op.inspect do
53
+ context 'matches' do
54
+ let(:query) do
55
+ {'writer.speed' => {op => 2}}
56
+ end
57
+
58
+ it_behaves_like 'is true'
59
+ end
60
+
61
+ context 'does not match' do
62
+ let(:query) do
63
+ {'writer.speed' => {op => 3}}
64
+ end
65
+
66
+ it_behaves_like 'is false'
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ context 'hash query' do
73
+ context 'scalar field in embedded document' do
74
+ context 'matches' do
75
+ let(:query) do
76
+ {writer: {speed: 3}}
77
+ end
78
+
79
+ it_behaves_like 'is true'
80
+ end
81
+
82
+ context 'does not match' do
83
+ let(:query) do
84
+ {writer: {slow: 3}}
85
+ end
86
+
87
+ it_behaves_like 'is false'
88
+ end
89
+ end
90
+
91
+ context 'hash field' do
92
+ let(:document) do
93
+ Bar.new(
94
+ writer: {speed: 3},
95
+ )
96
+ end
97
+
98
+ context 'matches' do
99
+ let(:query) do
100
+ {writer: {speed: 3}}
101
+ end
102
+
103
+ it_behaves_like 'is true'
104
+ end
105
+
106
+ context 'does not match' do
107
+ let(:query) do
108
+ {writer: {slow: 3}}
109
+ end
110
+
111
+ it_behaves_like 'is false'
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ context 'embeds_many' do
118
+ let(:document) do
119
+ Survey.new(
120
+ questions: [Question.new(
121
+ answers: [
122
+ Answer.new(position: 3),
123
+ Answer.new(position: 4),
124
+ ],
125
+ )],
126
+ )
127
+ end
128
+
129
+ context 'implicit $eq' do
130
+ context 'matches' do
131
+ let(:query) do
132
+ {'questions.answers.position' => 3}
133
+ end
134
+
135
+ it_behaves_like 'is true'
136
+ end
137
+
138
+ context 'does not match' do
139
+ let(:query) do
140
+ {'questions.answers.position' => 2}
141
+ end
142
+
143
+ it_behaves_like 'is false'
144
+ end
145
+ end
146
+
147
+ context 'field operator' do
148
+ # Test string and symbol operators
149
+ ['$gt', :$gt].each do |op|
150
+ context op.inspect do
151
+ context 'matches' do
152
+ let(:query) do
153
+ {'questions.answers.position' => {op => 2}}
154
+ end
155
+
156
+ it_behaves_like 'is true'
157
+ end
158
+
159
+ context 'does not match' do
160
+ let(:query) do
161
+ {'questions.answers.position' => {op => 4}}
162
+ end
163
+
164
+ it_behaves_like 'is false'
165
+ end
166
+ end
167
+ end
168
+ end
169
+
170
+ context 'array index' do
171
+ context 'matches' do
172
+ let(:query) do
173
+ {'questions.answers.1' => {position: 4}}
174
+ end
175
+
176
+ it_behaves_like 'is true'
177
+ end
178
+
179
+ context 'does not match' do
180
+ let(:query) do
181
+ {'questions.answers.0' => {position: 4}}
182
+ end
183
+
184
+ it_behaves_like 'is false'
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
@@ -0,0 +1,142 @@
1
+ # frozen_string_literal: true
2
+ # encoding: utf-8
3
+
4
+ require 'spec_helper'
5
+
6
+ # This file serves as a record of server query behavior.
7
+
8
+ describe 'Server queries' do
9
+
10
+ context 'scalar operator on scalar field' do
11
+ let!(:document) do
12
+ Survey.create!(
13
+ questions: [Question.new(
14
+ answers: [Answer.new(position: 3)],
15
+ )],
16
+ )
17
+ end
18
+
19
+ let(:query) do
20
+ {'questions.answers.position' => {'$gt' => 2}}
21
+ end
22
+
23
+ it 'finds' do
24
+ Survey.collection.find(query).to_a.should == [document.attributes]
25
+ end
26
+ end
27
+
28
+ context 'scalar operator on array field' do
29
+ let!(:document) do
30
+ Bar.create!(
31
+ questions: [
32
+ answers: [
33
+ position: [3],
34
+ ],
35
+ ],
36
+ )
37
+ end
38
+
39
+ context '$eq with scalar on array field' do
40
+ let(:query) do
41
+ {'questions.answers.position' => {'$eq' => 3}}
42
+ end
43
+
44
+ it 'finds' do
45
+ Bar.collection.find(query).to_a.should == [document.attributes.with_indifferent_access]
46
+ end
47
+ end
48
+
49
+ context '$ne with scalar on array field' do
50
+ context 'same value as array item' do
51
+ let(:query) do
52
+ {'questions.answers.position' => {'$ne' => 3}}
53
+ end
54
+
55
+ it 'matches array and does not find' do
56
+ Bar.collection.find(query).to_a.should == []
57
+ end
58
+ end
59
+
60
+ context 'different value from array items' do
61
+ let(:query) do
62
+ {'questions.answers.position' => {'$ne' => 2}}
63
+ end
64
+
65
+ it 'finds' do
66
+ Bar.collection.find(query).to_a.should == [document.attributes.with_indifferent_access]
67
+ end
68
+ end
69
+ end
70
+
71
+ context '$gt on array field' do
72
+ let(:query) do
73
+ {'questions.answers.position' => {'$gt' => 2}}
74
+ end
75
+
76
+ it 'finds' do
77
+ # This finds the document - https://jira.mongodb.org/browse/DOCSP-10717
78
+ Bar.collection.find(query).to_a.should == [document.attributes.with_indifferent_access]
79
+ end
80
+ end
81
+
82
+ context '$in on a double array field' do
83
+ let!(:document) do
84
+ Bar.create!(
85
+ questions: [
86
+ answers: [
87
+ position: [[3]],
88
+ ],
89
+ ],
90
+ )
91
+ end
92
+
93
+ let(:query) do
94
+ {'questions.answers.position' => {'$in' => [3]}}
95
+ end
96
+
97
+ it 'does not find' do
98
+ Bar.collection.find(query).to_a.should == []
99
+ end
100
+ end
101
+
102
+ context '$in on an array field' do
103
+ let!(:document) do
104
+ Bar.create!(
105
+ questions: [
106
+ answers: [
107
+ position: [3],
108
+ ],
109
+ ],
110
+ )
111
+ end
112
+
113
+ let(:query) do
114
+ {'questions.answers.position' => {'$in' => [3]}}
115
+ end
116
+
117
+ it 'finds' do
118
+ Bar.collection.find(query).to_a.should == [document.attributes.with_indifferent_access]
119
+ end
120
+ end
121
+
122
+ context '$in on a scalar field' do
123
+ let!(:document) do
124
+ Bar.create!(
125
+ questions: [
126
+ answers: [
127
+ position: 3,
128
+ ],
129
+ ],
130
+ )
131
+ end
132
+
133
+ let(:query) do
134
+ {'questions.answers.position' => {'$in' => [3]}}
135
+ end
136
+
137
+ it 'finds' do
138
+ Bar.collection.find(query).to_a.should == [document.attributes.with_indifferent_access]
139
+ end
140
+ end
141
+ end
142
+ end
@@ -3,7 +3,6 @@
3
3
 
4
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
6
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "shared", "lib"))
7
6
 
8
7
  # Load byebug before mongoid, to place breakpoints in the lib methods.
9
8
  # But SpecConfig needs the driver code - require the driver here.
@@ -16,8 +15,8 @@ require "mongo"
16
15
  require 'pp'
17
16
 
18
17
  require 'support/spec_config'
19
- require 'mrss/lite_constraints'
20
- require "support/session_registry"
18
+ require 'support/lite_constraints'
19
+ require "support/session_registry"
21
20
 
22
21
  unless SpecConfig.instance.ci?
23
22
  begin
@@ -51,10 +50,11 @@ RSpec.configure do |config|
51
50
  config.add_formatter(RSpec::Core::Formatters::JsonFormatter, File.join(File.dirname(__FILE__), '../tmp/rspec.json'))
52
51
  end
53
52
 
54
- if SpecConfig.instance.ci? && !%w(1 true yes).include?(ENV['INTERACTIVE']&.downcase)
53
+ if SpecConfig.instance.ci?
55
54
  timeout = if SpecConfig.instance.app_tests?
56
- # App tests under JRuby take a REALLY long time (over 5 minutes per test).
57
- 500
55
+ # Allow 5 minutes per test for the app tests, since they install
56
+ # gems for Rails applications which can take a long time.
57
+ 300
58
58
  else
59
59
  # Allow a max of 30 seconds per test.
60
60
  # Tests should take under 10 seconds ideally but it seems
@@ -68,7 +68,7 @@ RSpec.configure do |config|
68
68
  end
69
69
  end
70
70
 
71
- config.extend(Mrss::LiteConstraints)
71
+ config.extend(LiteConstraints)
72
72
  end
73
73
 
74
74
  # require all shared examples