mongoid 7.1.0.rc0 → 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 (508) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG.md +6 -6
  5. data/LICENSE +1 -1
  6. data/README.md +14 -7
  7. data/Rakefile +21 -0
  8. data/lib/config/locales/en.yml +42 -6
  9. data/lib/mongoid.rb +26 -2
  10. data/lib/mongoid/association/accessors.rb +37 -2
  11. data/lib/mongoid/association/depending.rb +1 -6
  12. data/lib/mongoid/association/embedded/embeds_many.rb +2 -1
  13. data/lib/mongoid/association/embedded/embeds_one.rb +2 -1
  14. data/lib/mongoid/association/many.rb +5 -4
  15. data/lib/mongoid/association/proxy.rb +6 -4
  16. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -1
  17. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  18. data/lib/mongoid/association/referenced/belongs_to/eager.rb +38 -2
  19. data/lib/mongoid/association/referenced/eager.rb +29 -9
  20. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
  21. data/lib/mongoid/association/referenced/has_many/enumerable.rb +30 -15
  22. data/lib/mongoid/association/referenced/has_many/proxy.rb +11 -3
  23. data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
  24. data/lib/mongoid/atomic.rb +13 -3
  25. data/lib/mongoid/atomic/modifiers.rb +1 -1
  26. data/lib/mongoid/attributes.rb +28 -20
  27. data/lib/mongoid/attributes/dynamic.rb +1 -1
  28. data/lib/mongoid/clients/factory.rb +19 -2
  29. data/lib/mongoid/clients/options.rb +8 -8
  30. data/lib/mongoid/clients/sessions.rb +20 -4
  31. data/lib/mongoid/clients/storage_options.rb +5 -5
  32. data/lib/mongoid/composable.rb +1 -0
  33. data/lib/mongoid/config.rb +45 -12
  34. data/lib/mongoid/config/options.rb +5 -2
  35. data/lib/mongoid/contextual.rb +5 -4
  36. data/lib/mongoid/contextual/geo_near.rb +3 -2
  37. data/lib/mongoid/contextual/map_reduce.rb +3 -2
  38. data/lib/mongoid/contextual/mongo.rb +25 -5
  39. data/lib/mongoid/copyable.rb +2 -2
  40. data/lib/mongoid/criteria.rb +80 -11
  41. data/lib/mongoid/criteria/modifiable.rb +2 -1
  42. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
  43. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -6
  44. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +12 -0
  45. data/lib/mongoid/criteria/queryable/key.rb +1 -1
  46. data/lib/mongoid/criteria/queryable/mergeable.rb +75 -8
  47. data/lib/mongoid/criteria/queryable/pipeline.rb +3 -2
  48. data/lib/mongoid/criteria/queryable/selectable.rb +141 -19
  49. data/lib/mongoid/criteria/queryable/selector.rb +3 -3
  50. data/lib/mongoid/criteria/queryable/storable.rb +106 -101
  51. data/lib/mongoid/document.rb +15 -3
  52. data/lib/mongoid/errors.rb +7 -0
  53. data/lib/mongoid/errors/eager_load.rb +2 -0
  54. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
  55. data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
  56. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
  57. data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
  58. data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
  59. data/lib/mongoid/errors/invalid_query.rb +41 -0
  60. data/lib/mongoid/errors/no_client_config.rb +2 -2
  61. data/lib/mongoid/errors/no_default_client.rb +1 -1
  62. data/lib/mongoid/extensions/hash.rb +4 -2
  63. data/lib/mongoid/extensions/regexp.rb +1 -1
  64. data/lib/mongoid/factory.rb +27 -10
  65. data/lib/mongoid/fields.rb +2 -1
  66. data/lib/mongoid/fields/standard.rb +2 -1
  67. data/lib/mongoid/fields/validators/macro.rb +26 -10
  68. data/lib/mongoid/findable.rb +55 -18
  69. data/lib/mongoid/indexable.rb +2 -2
  70. data/lib/mongoid/interceptable.rb +5 -1
  71. data/lib/mongoid/matchable.rb +1 -149
  72. data/lib/mongoid/matcher.rb +127 -0
  73. data/lib/mongoid/matcher/all.rb +22 -0
  74. data/lib/mongoid/matcher/and.rb +21 -0
  75. data/lib/mongoid/matcher/elem_match.rb +35 -0
  76. data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
  77. data/lib/mongoid/matcher/eq.rb +11 -0
  78. data/lib/mongoid/matcher/eq_impl.rb +32 -0
  79. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
  80. data/lib/mongoid/matcher/exists.rb +15 -0
  81. data/lib/mongoid/matcher/expression.rb +40 -0
  82. data/lib/mongoid/matcher/expression_operator.rb +19 -0
  83. data/lib/mongoid/matcher/field_expression.rb +63 -0
  84. data/lib/mongoid/matcher/field_operator.rb +52 -0
  85. data/lib/mongoid/matcher/gt.rb +17 -0
  86. data/lib/mongoid/matcher/gte.rb +17 -0
  87. data/lib/mongoid/matcher/in.rb +25 -0
  88. data/lib/mongoid/matcher/lt.rb +17 -0
  89. data/lib/mongoid/matcher/lte.rb +17 -0
  90. data/lib/mongoid/matcher/ne.rb +16 -0
  91. data/lib/mongoid/matcher/nin.rb +11 -0
  92. data/lib/mongoid/matcher/nor.rb +25 -0
  93. data/lib/mongoid/matcher/not.rb +29 -0
  94. data/lib/mongoid/matcher/or.rb +21 -0
  95. data/lib/mongoid/matcher/regex.rb +41 -0
  96. data/lib/mongoid/matcher/size.rb +26 -0
  97. data/lib/mongoid/persistable/deletable.rb +1 -1
  98. data/lib/mongoid/persistable/pushable.rb +11 -2
  99. data/lib/mongoid/persistence_context.rb +6 -6
  100. data/lib/mongoid/query_cache.rb +83 -38
  101. data/lib/mongoid/railties/database.rake +7 -0
  102. data/lib/mongoid/reloadable.rb +2 -2
  103. data/lib/mongoid/serializable.rb +11 -3
  104. data/lib/mongoid/shardable.rb +56 -4
  105. data/lib/mongoid/tasks/database.rake +10 -5
  106. data/lib/mongoid/tasks/database.rb +83 -0
  107. data/lib/mongoid/timestamps/timeless.rb +3 -1
  108. data/lib/mongoid/traversable.rb +111 -4
  109. data/lib/mongoid/validatable/uniqueness.rb +1 -1
  110. data/lib/mongoid/version.rb +1 -1
  111. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +32 -23
  112. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
  113. data/spec/integration/app_spec.rb +254 -0
  114. data/spec/integration/associations/embedded_spec.rb +148 -0
  115. data/spec/integration/associations/has_many_spec.rb +69 -0
  116. data/spec/integration/associations/has_one_spec.rb +69 -0
  117. data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
  118. data/spec/integration/atomic/modifiers_spec.rb +117 -0
  119. data/spec/integration/bson_regexp_raw_spec.rb +20 -0
  120. data/spec/integration/criteria/date_field_spec.rb +41 -0
  121. data/spec/integration/criteria/logical_spec.rb +13 -0
  122. data/spec/integration/discriminator_key_spec.rb +354 -0
  123. data/spec/integration/discriminator_value_spec.rb +207 -0
  124. data/spec/integration/document_spec.rb +22 -0
  125. data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
  126. data/spec/integration/matcher_operator_data/all.yml +140 -0
  127. data/spec/integration/matcher_operator_data/and.yml +93 -0
  128. data/spec/integration/matcher_operator_data/elem_match.yml +363 -0
  129. data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
  130. data/spec/integration/matcher_operator_data/eq.yml +191 -0
  131. data/spec/integration/matcher_operator_data/exists.yml +213 -0
  132. data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
  133. data/spec/integration/matcher_operator_data/gt.yml +132 -0
  134. data/spec/integration/matcher_operator_data/gte.yml +132 -0
  135. data/spec/integration/matcher_operator_data/implicit.yml +331 -0
  136. data/spec/integration/matcher_operator_data/implicit_traversal.yml +16 -0
  137. data/spec/integration/matcher_operator_data/in.yml +194 -0
  138. data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
  139. data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
  140. data/spec/integration/matcher_operator_data/lt.yml +132 -0
  141. data/spec/integration/matcher_operator_data/lte.yml +132 -0
  142. data/spec/integration/matcher_operator_data/multiple.yml +29 -0
  143. data/spec/integration/matcher_operator_data/ne.yml +150 -0
  144. data/spec/integration/matcher_operator_data/nin.yml +114 -0
  145. data/spec/integration/matcher_operator_data/nor.yml +126 -0
  146. data/spec/integration/matcher_operator_data/not.yml +196 -0
  147. data/spec/integration/matcher_operator_data/or.yml +137 -0
  148. data/spec/integration/matcher_operator_data/regex.yml +174 -0
  149. data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
  150. data/spec/integration/matcher_operator_data/size.yml +174 -0
  151. data/spec/integration/matcher_operator_spec.rb +100 -0
  152. data/spec/integration/matcher_spec.rb +189 -0
  153. data/spec/integration/server_query_spec.rb +142 -0
  154. data/spec/integration/shardable_spec.rb +149 -0
  155. data/spec/lite_spec_helper.rb +15 -4
  156. data/spec/mongoid/association/accessors_spec.rb +238 -63
  157. data/spec/mongoid/association/depending_spec.rb +78 -26
  158. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
  159. data/spec/mongoid/association/embedded/embeds_many_models.rb +20 -0
  160. data/spec/mongoid/association/embedded/embeds_many_spec.rb +10 -0
  161. data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
  162. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -2
  163. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +193 -10
  164. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +140 -1
  165. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +146 -68
  166. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +462 -187
  167. data/spec/mongoid/association/referenced/has_many_models.rb +9 -0
  168. data/spec/mongoid/association/referenced/has_one_models.rb +9 -0
  169. data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
  170. data/spec/mongoid/atomic_spec.rb +23 -0
  171. data/spec/mongoid/attributes/nested_spec.rb +1 -1
  172. data/spec/mongoid/attributes_spec.rb +19 -7
  173. data/spec/mongoid/changeable_spec.rb +23 -0
  174. data/spec/mongoid/clients/factory_spec.rb +45 -8
  175. data/spec/mongoid/clients/options_spec.rb +11 -11
  176. data/spec/mongoid/clients/sessions_spec.rb +9 -10
  177. data/spec/mongoid/clients/transactions_spec.rb +20 -8
  178. data/spec/mongoid/clients_spec.rb +2 -2
  179. data/spec/mongoid/config_spec.rb +28 -0
  180. data/spec/mongoid/contextual/atomic_spec.rb +22 -11
  181. data/spec/mongoid/contextual/geo_near_spec.rb +11 -2
  182. data/spec/mongoid/contextual/map_reduce_spec.rb +20 -5
  183. data/spec/mongoid/contextual/mongo_spec.rb +146 -69
  184. data/spec/mongoid/copyable_spec.rb +153 -1
  185. data/spec/mongoid/copyable_spec_models.rb +14 -0
  186. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -1
  187. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +7 -7
  188. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +1 -1
  189. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +19 -7
  190. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +28 -1
  191. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +45 -12
  192. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1051 -392
  193. data/spec/mongoid/criteria/queryable/selectable_spec.rb +136 -82
  194. data/spec/mongoid/criteria/queryable/storable_spec.rb +80 -2
  195. data/spec/mongoid/criteria_spec.rb +240 -41
  196. data/spec/mongoid/document_fields_spec.rb +29 -0
  197. data/spec/mongoid/document_persistence_context_spec.rb +33 -0
  198. data/spec/mongoid/document_spec.rb +89 -15
  199. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  200. data/spec/mongoid/errors/no_client_config_spec.rb +2 -2
  201. data/spec/mongoid/errors/no_client_database_spec.rb +3 -3
  202. data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -3
  203. data/spec/mongoid/factory_spec.rb +261 -28
  204. data/spec/mongoid/fields_spec.rb +72 -3
  205. data/spec/mongoid/findable_spec.rb +32 -0
  206. data/spec/mongoid/indexable_spec.rb +34 -6
  207. data/spec/mongoid/inspectable_spec.rb +29 -2
  208. data/spec/mongoid/interceptable_spec.rb +64 -2
  209. data/spec/mongoid/interceptable_spec_models.rb +76 -0
  210. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +259 -0
  211. data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -0
  212. data/spec/mongoid/persistable/creatable_spec.rb +108 -25
  213. data/spec/mongoid/persistable/deletable_spec.rb +86 -0
  214. data/spec/mongoid/persistable/pushable_spec.rb +55 -1
  215. data/spec/mongoid/persistable/savable_spec.rb +174 -16
  216. data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
  217. data/spec/mongoid/query_cache_spec.rb +498 -29
  218. data/spec/mongoid/relations/proxy_spec.rb +1 -1
  219. data/spec/mongoid/reloadable_spec.rb +72 -0
  220. data/spec/mongoid/scopable_spec.rb +2 -1
  221. data/spec/mongoid/serializable_spec.rb +149 -20
  222. data/spec/mongoid/shardable_models.rb +61 -0
  223. data/spec/mongoid/shardable_spec.rb +69 -16
  224. data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
  225. data/spec/mongoid/tasks/database_spec.rb +1 -1
  226. data/spec/mongoid/traversable_spec.rb +1100 -0
  227. data/spec/spec_helper.rb +4 -33
  228. data/spec/support/child_process_helper.rb +79 -0
  229. data/spec/support/cluster_config.rb +3 -3
  230. data/spec/support/constraints.rb +50 -10
  231. data/spec/support/expectations.rb +3 -1
  232. data/spec/support/helpers.rb +11 -0
  233. data/spec/support/lite_constraints.rb +22 -0
  234. data/spec/{app → support}/models/account.rb +0 -0
  235. data/spec/{app → support}/models/acolyte.rb +0 -0
  236. data/spec/{app → support}/models/actor.rb +1 -1
  237. data/spec/{app → support}/models/actress.rb +0 -0
  238. data/spec/{app → support}/models/address.rb +0 -0
  239. data/spec/{app → support}/models/address_component.rb +0 -0
  240. data/spec/{app → support}/models/address_number.rb +0 -0
  241. data/spec/{app → support}/models/agency.rb +0 -0
  242. data/spec/{app → support}/models/agent.rb +0 -0
  243. data/spec/{app → support}/models/album.rb +0 -0
  244. data/spec/{app → support}/models/alert.rb +0 -0
  245. data/spec/{app → support}/models/animal.rb +0 -0
  246. data/spec/{app → support}/models/answer.rb +0 -0
  247. data/spec/{app → support}/models/appointment.rb +0 -0
  248. data/spec/support/models/armrest.rb +10 -0
  249. data/spec/{app → support}/models/array_field.rb +0 -0
  250. data/spec/{app → support}/models/article.rb +0 -0
  251. data/spec/{app → support}/models/artist.rb +0 -0
  252. data/spec/{app → support}/models/artwork.rb +0 -0
  253. data/spec/{app → support}/models/audio.rb +0 -0
  254. data/spec/{app → support}/models/augmentation.rb +0 -0
  255. data/spec/{app → support}/models/author.rb +0 -0
  256. data/spec/{app → support}/models/baby.rb +0 -0
  257. data/spec/{app → support}/models/band.rb +0 -0
  258. data/spec/{app → support}/models/bar.rb +0 -0
  259. data/spec/{app → support}/models/basic.rb +0 -0
  260. data/spec/{app → support}/models/bed.rb +0 -0
  261. data/spec/{app → support}/models/big_palette.rb +0 -0
  262. data/spec/{app → support}/models/birthday.rb +0 -0
  263. data/spec/{app → support}/models/bomb.rb +0 -0
  264. data/spec/{app → support}/models/book.rb +0 -0
  265. data/spec/{app → support}/models/breed.rb +0 -0
  266. data/spec/{app → support}/models/browser.rb +1 -1
  267. data/spec/{app → support}/models/building.rb +0 -0
  268. data/spec/{app → support}/models/building_address.rb +0 -0
  269. data/spec/{app → support}/models/bus.rb +0 -0
  270. data/spec/{app → support}/models/business.rb +0 -0
  271. data/spec/{app → support}/models/callback_test.rb +0 -0
  272. data/spec/{app → support}/models/canvas.rb +1 -1
  273. data/spec/{app → support}/models/car.rb +0 -0
  274. data/spec/{app → support}/models/cat.rb +0 -0
  275. data/spec/{app → support}/models/category.rb +0 -0
  276. data/spec/{app → support}/models/child.rb +0 -0
  277. data/spec/{app → support}/models/child_doc.rb +0 -0
  278. data/spec/{app → support}/models/church.rb +0 -0
  279. data/spec/{app → support}/models/circle.rb +0 -0
  280. data/spec/{app → support}/models/circuit.rb +0 -0
  281. data/spec/{app → support}/models/circus.rb +0 -0
  282. data/spec/{app → support}/models/code.rb +0 -0
  283. data/spec/support/models/coding.rb +4 -0
  284. data/spec/support/models/coding/pull_request.rb +12 -0
  285. data/spec/{app → support}/models/comment.rb +0 -0
  286. data/spec/{app → support}/models/company.rb +0 -0
  287. data/spec/{app → support}/models/consumption_period.rb +0 -0
  288. data/spec/{app → support}/models/contextable_item.rb +0 -0
  289. data/spec/{app → support}/models/contractor.rb +0 -0
  290. data/spec/{app → support}/models/cookie.rb +0 -0
  291. data/spec/{app → support}/models/country_code.rb +0 -0
  292. data/spec/{app → support}/models/courier_job.rb +0 -0
  293. data/spec/support/models/crate.rb +13 -0
  294. data/spec/support/models/deed.rb +8 -0
  295. data/spec/{app → support}/models/definition.rb +0 -0
  296. data/spec/support/models/delegating_patient.rb +16 -0
  297. data/spec/{app → support}/models/description.rb +0 -0
  298. data/spec/{app → support}/models/dictionary.rb +0 -0
  299. data/spec/{app → support}/models/division.rb +0 -0
  300. data/spec/{app → support}/models/doctor.rb +0 -0
  301. data/spec/{app → support}/models/dog.rb +0 -0
  302. data/spec/{app → support}/models/dokument.rb +0 -0
  303. data/spec/{app → support}/models/draft.rb +0 -0
  304. data/spec/{app → support}/models/dragon.rb +0 -0
  305. data/spec/{app → support}/models/driver.rb +1 -1
  306. data/spec/{app → support}/models/drug.rb +0 -0
  307. data/spec/{app → support}/models/dungeon.rb +0 -0
  308. data/spec/{app → support}/models/edit.rb +0 -0
  309. data/spec/{app → support}/models/email.rb +0 -0
  310. data/spec/{app → support}/models/employer.rb +0 -0
  311. data/spec/{app → support}/models/entry.rb +0 -0
  312. data/spec/{app → support}/models/eraser.rb +0 -0
  313. data/spec/{app → support}/models/even.rb +0 -0
  314. data/spec/{app → support}/models/event.rb +0 -0
  315. data/spec/{app → support}/models/exhibition.rb +0 -0
  316. data/spec/{app → support}/models/exhibitor.rb +0 -0
  317. data/spec/{app → support}/models/explosion.rb +0 -0
  318. data/spec/{app → support}/models/eye.rb +0 -0
  319. data/spec/{app → support}/models/eye_bowl.rb +0 -0
  320. data/spec/{app → support}/models/face.rb +0 -0
  321. data/spec/{app → support}/models/favorite.rb +0 -0
  322. data/spec/{app → support}/models/filesystem.rb +0 -0
  323. data/spec/{app → support}/models/fire_hydrant.rb +0 -0
  324. data/spec/{app → support}/models/firefox.rb +0 -0
  325. data/spec/{app → support}/models/fish.rb +0 -0
  326. data/spec/{app → support}/models/folder.rb +0 -0
  327. data/spec/{app → support}/models/folder_item.rb +0 -0
  328. data/spec/{app → support}/models/fruits.rb +0 -0
  329. data/spec/{app → support}/models/game.rb +0 -0
  330. data/spec/{app → support}/models/ghost.rb +0 -0
  331. data/spec/support/models/guitar.rb +5 -0
  332. data/spec/{app → support}/models/home.rb +0 -0
  333. data/spec/{app → support}/models/house.rb +0 -0
  334. data/spec/{app → support}/models/html_writer.rb +0 -0
  335. data/spec/{app → support}/models/id_key.rb +0 -0
  336. data/spec/support/models/idnodef.rb +8 -0
  337. data/spec/{app → support}/models/image.rb +0 -0
  338. data/spec/{app → support}/models/implant.rb +0 -0
  339. data/spec/support/models/instrument.rb +9 -0
  340. data/spec/{app → support}/models/item.rb +1 -1
  341. data/spec/{app → support}/models/jar.rb +0 -0
  342. data/spec/{app → support}/models/kaleidoscope.rb +0 -0
  343. data/spec/{app → support}/models/kangaroo.rb +0 -0
  344. data/spec/{app → support}/models/label.rb +0 -0
  345. data/spec/{app → support}/models/language.rb +0 -0
  346. data/spec/{app → support}/models/lat_lng.rb +0 -0
  347. data/spec/{app → support}/models/league.rb +0 -0
  348. data/spec/{app → support}/models/learner.rb +0 -0
  349. data/spec/{app → support}/models/line_item.rb +0 -0
  350. data/spec/{app → support}/models/location.rb +0 -0
  351. data/spec/{app → support}/models/login.rb +0 -0
  352. data/spec/{app → support}/models/manufacturer.rb +0 -0
  353. data/spec/{app → support}/models/meat.rb +0 -0
  354. data/spec/{app → support}/models/membership.rb +0 -0
  355. data/spec/{app → support}/models/message.rb +0 -0
  356. data/spec/{app → support}/models/minim.rb +0 -0
  357. data/spec/{app → support}/models/mixed_drink.rb +0 -0
  358. data/spec/support/models/mop.rb +16 -0
  359. data/spec/{app → support}/models/movie.rb +0 -0
  360. data/spec/{app → support}/models/my_hash.rb +0 -0
  361. data/spec/{app → support}/models/name.rb +0 -0
  362. data/spec/{app → support}/models/name_only.rb +0 -0
  363. data/spec/{app → support}/models/node.rb +0 -0
  364. data/spec/{app → support}/models/note.rb +0 -0
  365. data/spec/{app → support}/models/odd.rb +0 -0
  366. data/spec/{app → support}/models/ordered_post.rb +0 -0
  367. data/spec/{app → support}/models/ordered_preference.rb +0 -0
  368. data/spec/{app → support}/models/oscar.rb +0 -0
  369. data/spec/{app → support}/models/other_owner_object.rb +0 -0
  370. data/spec/{app → support}/models/override.rb +0 -0
  371. data/spec/{app → support}/models/ownable.rb +0 -0
  372. data/spec/{app → support}/models/owner.rb +2 -0
  373. data/spec/{app → support}/models/pack.rb +0 -0
  374. data/spec/{app → support}/models/page.rb +0 -0
  375. data/spec/{app → support}/models/page_question.rb +0 -0
  376. data/spec/{app → support}/models/palette.rb +1 -1
  377. data/spec/{app → support}/models/parent.rb +0 -0
  378. data/spec/{app → support}/models/parent_doc.rb +0 -0
  379. data/spec/{app → support}/models/passport.rb +1 -0
  380. data/spec/{app → support}/models/patient.rb +0 -0
  381. data/spec/{app → support}/models/pdf_writer.rb +0 -0
  382. data/spec/{app → support}/models/pencil.rb +0 -0
  383. data/spec/{app → support}/models/person.rb +1 -1
  384. data/spec/{app → support}/models/pet.rb +0 -0
  385. data/spec/{app → support}/models/pet_owner.rb +0 -0
  386. data/spec/{app → support}/models/phone.rb +1 -0
  387. data/spec/support/models/piano.rb +5 -0
  388. data/spec/{app → support}/models/pizza.rb +0 -0
  389. data/spec/{app → support}/models/player.rb +0 -0
  390. data/spec/{app → support}/models/post.rb +0 -0
  391. data/spec/{app → support}/models/post_genre.rb +0 -0
  392. data/spec/{app → support}/models/powerup.rb +0 -0
  393. data/spec/{app → support}/models/preference.rb +0 -0
  394. data/spec/{app → support}/models/princess.rb +0 -0
  395. data/spec/{app → support}/models/product.rb +0 -0
  396. data/spec/support/models/profile.rb +18 -0
  397. data/spec/{app → support}/models/pronunciation.rb +0 -0
  398. data/spec/{app → support}/models/pub.rb +0 -0
  399. data/spec/support/models/publication.rb +5 -0
  400. data/spec/support/models/publication/encyclopedia.rb +12 -0
  401. data/spec/support/models/publication/review.rb +14 -0
  402. data/spec/{app → support}/models/purchase.rb +0 -0
  403. data/spec/{app → support}/models/question.rb +0 -0
  404. data/spec/{app → support}/models/quiz.rb +0 -0
  405. data/spec/{app → support}/models/rating.rb +0 -0
  406. data/spec/{app → support}/models/record.rb +0 -0
  407. data/spec/{app → support}/models/registry.rb +0 -0
  408. data/spec/{app → support}/models/role.rb +0 -0
  409. data/spec/{app → support}/models/root_category.rb +0 -0
  410. data/spec/{app → support}/models/sandwich.rb +0 -0
  411. data/spec/{app → support}/models/scheduler.rb +0 -0
  412. data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
  413. data/spec/support/models/seat.rb +25 -0
  414. data/spec/{app → support}/models/seo.rb +0 -0
  415. data/spec/{app → support}/models/series.rb +0 -0
  416. data/spec/{app → support}/models/server.rb +0 -0
  417. data/spec/{app → support}/models/service.rb +0 -0
  418. data/spec/{app → support}/models/shape.rb +2 -2
  419. data/spec/{app → support}/models/shelf.rb +0 -0
  420. data/spec/{app → support}/models/shipment_address.rb +0 -0
  421. data/spec/{app → support}/models/shipping_container.rb +0 -0
  422. data/spec/{app → support}/models/shipping_pack.rb +0 -0
  423. data/spec/{app → support}/models/shop.rb +0 -0
  424. data/spec/{app → support}/models/short_agent.rb +0 -0
  425. data/spec/{app → support}/models/short_quiz.rb +0 -0
  426. data/spec/{app → support}/models/simple.rb +0 -0
  427. data/spec/{app → support}/models/slave.rb +0 -0
  428. data/spec/{app → support}/models/song.rb +0 -0
  429. data/spec/{app → support}/models/sound.rb +0 -0
  430. data/spec/{app → support}/models/square.rb +0 -0
  431. data/spec/{app → support}/models/staff.rb +0 -0
  432. data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
  433. data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
  434. data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
  435. data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
  436. data/spec/{app → support}/models/strategy.rb +0 -0
  437. data/spec/{app → support}/models/sub_item.rb +0 -0
  438. data/spec/{app → support}/models/subscription.rb +0 -0
  439. data/spec/{app → support}/models/survey.rb +0 -0
  440. data/spec/{app → support}/models/symptom.rb +0 -0
  441. data/spec/support/models/system_role.rb +7 -0
  442. data/spec/{app → support}/models/tag.rb +0 -0
  443. data/spec/{app → support}/models/target.rb +0 -0
  444. data/spec/{app → support}/models/template.rb +0 -0
  445. data/spec/{app → support}/models/thing.rb +0 -0
  446. data/spec/{app → support}/models/title.rb +0 -0
  447. data/spec/{app → support}/models/tool.rb +2 -2
  448. data/spec/{app → support}/models/topping.rb +0 -0
  449. data/spec/support/models/toy.rb +10 -0
  450. data/spec/{app → support}/models/track.rb +0 -0
  451. data/spec/{app → support}/models/translation.rb +0 -0
  452. data/spec/{app → support}/models/tree.rb +0 -0
  453. data/spec/{app → support}/models/truck.rb +2 -0
  454. data/spec/{app → support}/models/updatable.rb +0 -0
  455. data/spec/{app → support}/models/user.rb +0 -0
  456. data/spec/{app → support}/models/user_account.rb +0 -0
  457. data/spec/{app → support}/models/validation_callback.rb +0 -0
  458. data/spec/{app → support}/models/vehicle.rb +7 -2
  459. data/spec/{app → support}/models/version.rb +0 -0
  460. data/spec/{app → support}/models/vertex.rb +0 -0
  461. data/spec/{app → support}/models/vet_visit.rb +0 -0
  462. data/spec/{app → support}/models/video.rb +0 -0
  463. data/spec/{app → support}/models/video_game.rb +0 -0
  464. data/spec/{app → support}/models/weapon.rb +0 -0
  465. data/spec/{app → support}/models/wiki_page.rb +0 -0
  466. data/spec/{app → support}/models/word.rb +0 -0
  467. data/spec/{app → support}/models/word_origin.rb +0 -0
  468. data/spec/{app → support}/models/writer.rb +2 -2
  469. data/spec/support/session_registry.rb +50 -0
  470. data/spec/support/spec_config.rb +13 -5
  471. data/spec/support/spec_organizer.rb +130 -0
  472. metadata +882 -752
  473. metadata.gz.sig +0 -0
  474. data/lib/mongoid/matchable/all.rb +0 -30
  475. data/lib/mongoid/matchable/and.rb +0 -32
  476. data/lib/mongoid/matchable/default.rb +0 -121
  477. data/lib/mongoid/matchable/elem_match.rb +0 -36
  478. data/lib/mongoid/matchable/eq.rb +0 -23
  479. data/lib/mongoid/matchable/exists.rb +0 -25
  480. data/lib/mongoid/matchable/gt.rb +0 -25
  481. data/lib/mongoid/matchable/gte.rb +0 -25
  482. data/lib/mongoid/matchable/in.rb +0 -26
  483. data/lib/mongoid/matchable/lt.rb +0 -25
  484. data/lib/mongoid/matchable/lte.rb +0 -25
  485. data/lib/mongoid/matchable/ne.rb +0 -23
  486. data/lib/mongoid/matchable/nin.rb +0 -24
  487. data/lib/mongoid/matchable/nor.rb +0 -38
  488. data/lib/mongoid/matchable/or.rb +0 -35
  489. data/lib/mongoid/matchable/regexp.rb +0 -30
  490. data/lib/mongoid/matchable/size.rb +0 -23
  491. data/spec/mongoid/matchable/all_spec.rb +0 -34
  492. data/spec/mongoid/matchable/and_spec.rb +0 -190
  493. data/spec/mongoid/matchable/default_spec.rb +0 -140
  494. data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
  495. data/spec/mongoid/matchable/eq_spec.rb +0 -49
  496. data/spec/mongoid/matchable/exists_spec.rb +0 -60
  497. data/spec/mongoid/matchable/gt_spec.rb +0 -89
  498. data/spec/mongoid/matchable/gte_spec.rb +0 -87
  499. data/spec/mongoid/matchable/in_spec.rb +0 -52
  500. data/spec/mongoid/matchable/lt_spec.rb +0 -88
  501. data/spec/mongoid/matchable/lte_spec.rb +0 -88
  502. data/spec/mongoid/matchable/ne_spec.rb +0 -49
  503. data/spec/mongoid/matchable/nin_spec.rb +0 -51
  504. data/spec/mongoid/matchable/nor_spec.rb +0 -210
  505. data/spec/mongoid/matchable/or_spec.rb +0 -134
  506. data/spec/mongoid/matchable/regexp_spec.rb +0 -62
  507. data/spec/mongoid/matchable/size_spec.rb +0 -28
  508. data/spec/mongoid/matchable_spec.rb +0 -856
@@ -6,6 +6,9 @@ class HmmCompany
6
6
 
7
7
  field :p, type: Integer
8
8
  has_many :emails, primary_key: :p, foreign_key: :f, class_name: 'HmmEmail'
9
+
10
+ # The addresses are added with different dependency mechanisms in tests:
11
+ #has_many :addresses, class_name: 'HmmAddress', dependent: :destroy
9
12
  end
10
13
 
11
14
  class HmmEmail
@@ -15,6 +18,12 @@ class HmmEmail
15
18
  belongs_to :company, primary_key: :p, foreign_key: :f, class_name: 'HmmCompany'
16
19
  end
17
20
 
21
+ class HmmAddress
22
+ include Mongoid::Document
23
+
24
+ belongs_to :company, class_name: 'HmmCompany'
25
+ end
26
+
18
27
  class HmmSchool
19
28
  include Mongoid::Document
20
29
 
@@ -6,6 +6,9 @@ class HomCollege
6
6
 
7
7
  has_one :accreditation, class_name: 'HomAccreditation'
8
8
 
9
+ # The address is added with different dependency mechanisms in tests:
10
+ #has_one :address, class_name: 'HomAddress', dependent: :destroy
11
+
9
12
  field :state, type: String
10
13
  end
11
14
 
@@ -24,6 +27,12 @@ class HomAccreditation::Child
24
27
  belongs_to :hom_college
25
28
  end
26
29
 
30
+ class HomAddress
31
+ include Mongoid::Document
32
+
33
+ belongs_to :college, class_name: 'HomCollege'
34
+ end
35
+
27
36
  module HomNs
28
37
  class PrefixedParent
29
38
  include Mongoid::Document
@@ -9,6 +9,26 @@ describe Mongoid::Atomic::Modifiers do
9
9
  described_class.new
10
10
  end
11
11
 
12
+ describe "#push_conflict?" do
13
+ let(:result) { modifiers.send(:push_conflict?, field) }
14
+
15
+ context 'for embeds many subdocument' do
16
+ context 'when another field on subdocument is being set' do
17
+ before do
18
+ modifiers.set('foo.0.a' => 1)
19
+ end
20
+
21
+ let(:field) { 'foo' }
22
+
23
+ it 'does not conflict' do
24
+ pending 'https://jira.mongodb.org/browse/MONGOID-4982'
25
+
26
+ result.should be false
27
+ end
28
+ end
29
+ end
30
+ end
31
+
12
32
  describe "#add_to_set" do
13
33
 
14
34
  context "when the unique adds are empty" do
@@ -344,6 +364,33 @@ describe Mongoid::Atomic::Modifiers do
344
364
  end
345
365
  end
346
366
  end
367
+
368
+ context 'when there is another operation on a sibling of a key which is nested' do
369
+
370
+ let(:first_op) do
371
+ { "addresses.0.name" => 'test' }
372
+ end
373
+
374
+ let(:push_op) do
375
+ { "addresses.0.locations" => { "street" => "Oxford St" } }
376
+ end
377
+
378
+ before do
379
+ modifiers.set(first_op)
380
+ modifiers.push(push_op)
381
+ end
382
+
383
+ it "does not conflict and adds push to top level" do
384
+ pending 'https://jira.mongodb.org/browse/MONGOID-4982'
385
+
386
+ modifiers.should == {
387
+ '$set' => { "addresses.0.name" => 'test' },
388
+ '$push' => {"addresses.0.locations" => {'$each' => [
389
+ { "street" => "Oxford St" },
390
+ ]}},
391
+ }
392
+ end
393
+ end
347
394
  end
348
395
 
349
396
  describe "#set" do
@@ -362,6 +362,29 @@ describe Mongoid::Atomic do
362
362
  )
363
363
  end
364
364
  end
365
+
366
+ context 'when adding nested embedded docs and updating top level embedded doc' do
367
+ let!(:truck) { Truck.create! }
368
+ let!(:crate) { truck.crates.create!(volume: 1) }
369
+
370
+ before do
371
+ truck.crates.first.volume = 2
372
+ truck.crates.first.toys.build(name: 'Bear')
373
+ truck.crates.build
374
+ end
375
+
376
+ it 'correctly distributes the operations' do
377
+ pending 'https://jira.mongodb.org/browse/MONGOID-4982'
378
+
379
+ truck.atomic_updates.should == {
380
+ '$set' => {'crates.0.volume' => 2},
381
+ '$push' => {'crates.0.toys' => {'$each' => [crate.toys.first.attributes]}},
382
+ conflicts: {
383
+ '$push' => {'crates' => {'$each' => [truck.crates.last.attributes]}},
384
+ },
385
+ }
386
+ end
387
+ end
365
388
  end
366
389
  end
367
390
  end
@@ -234,7 +234,7 @@ describe Mongoid::Attributes::Nested do
234
234
  end
235
235
  end
236
236
 
237
- describe "##{name}_attributes=" do
237
+ describe "*_attributes=" do
238
238
 
239
239
  context "when the parent document is new" do
240
240
 
@@ -1349,10 +1349,16 @@ describe Mongoid::Attributes do
1349
1349
  context "when attribute is a Hash" do
1350
1350
  let(:person) { Person.new map: { somekey: "somevalue" } }
1351
1351
 
1352
- it "raises an error when try to set an invalid value" do
1353
- expect {
1352
+ it "raises an error when trying to set a value of invalid type - array" do
1353
+ expect do
1354
1354
  person.map = []
1355
- }.to raise_error(Mongoid::Errors::InvalidValue)
1355
+ end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type Array cannot be written to a field of type Hash/)
1356
+ end
1357
+
1358
+ it "raises an error when trying to set a value of invalid type - boolean" do
1359
+ expect do
1360
+ person.map = false
1361
+ end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type FalseClass cannot be written to a field of type Hash/)
1356
1362
  end
1357
1363
 
1358
1364
  it "can set a Hash value" do
@@ -1367,10 +1373,16 @@ describe Mongoid::Attributes do
1367
1373
  expect(person.aliases).to eq([ :alias_1 ])
1368
1374
  end
1369
1375
 
1370
- it "raises an error when try to set an invalid value" do
1371
- expect {
1376
+ it "raises an error when trying to set a value of invalid type - hash" do
1377
+ expect do
1372
1378
  person.aliases = {}
1373
- }.to raise_error(Mongoid::Errors::InvalidValue)
1379
+ end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type Hash cannot be written to a field of type Array/)
1380
+ end
1381
+
1382
+ it "raises an error when trying to set a value of invalid type - boolean" do
1383
+ expect do
1384
+ person.aliases = false
1385
+ end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type FalseClass cannot be written to a field of type Array/)
1374
1386
  end
1375
1387
  end
1376
1388
 
@@ -1425,7 +1437,7 @@ describe Mongoid::Attributes do
1425
1437
  end
1426
1438
 
1427
1439
  describe "#typed_attributes" do
1428
-
1440
+
1429
1441
  let(:date_time) do
1430
1442
  DateTime.current
1431
1443
  end
@@ -949,6 +949,29 @@ describe Mongoid::Changeable do
949
949
  end
950
950
  end
951
951
 
952
+ context 'when habtm association changes' do
953
+
954
+ let(:person) do
955
+ Person.create!(title: "Grand Poobah")
956
+ end
957
+
958
+ let(:user_account) do
959
+ UserAccount.create!
960
+ end
961
+
962
+ before do
963
+ person.user_accounts << user_account
964
+ end
965
+
966
+ it 'returns a hash of changes' do
967
+ pending 'https://jira.mongodb.org/browse/MONGOID-4843'
968
+
969
+ person.changes.should == {
970
+ user_account_ids: [[], [user_account.id]]
971
+ }
972
+ end
973
+ end
974
+
952
975
  context "when the document has not changed" do
953
976
 
954
977
  let(:acolyte) do
@@ -41,7 +41,7 @@ describe Mongoid::Clients::Factory do
41
41
  let(:config) do
42
42
  {
43
43
  default: { hosts: SpecConfig.instance.addresses, database: database_id },
44
- secondary: { hosts: SpecConfig.instance.addresses, database: database_id }
44
+ analytics: { hosts: SpecConfig.instance.addresses, database: database_id }
45
45
  }
46
46
  end
47
47
 
@@ -54,7 +54,7 @@ describe Mongoid::Clients::Factory do
54
54
  end
55
55
 
56
56
  let(:client) do
57
- described_class.create(:secondary)
57
+ described_class.create(:analytics)
58
58
  end
59
59
 
60
60
  let(:cluster) do
@@ -65,6 +65,11 @@ describe Mongoid::Clients::Factory do
65
65
  expect(client).to be_a(Mongo::Client)
66
66
  end
67
67
 
68
+ it 'does not produce driver warnings' do
69
+ Mongo::Logger.logger.should_not receive(:warn)
70
+ client
71
+ end
72
+
68
73
  let(:cluster_addresses) do
69
74
  cluster.addresses.map(&:to_s)
70
75
  end
@@ -74,6 +79,38 @@ describe Mongoid::Clients::Factory do
74
79
  it "sets the platform to Mongoid's platform constant" do
75
80
  expect(client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
76
81
  end
82
+
83
+ context 'driver 2.13+' do
84
+ min_driver_version '2.13'
85
+
86
+ it 'sets Mongoid as a wrapping library' do
87
+ client.options[:wrapping_libraries].should == [BSON::Document.new(
88
+ Mongoid::Clients::Factory::MONGOID_WRAPPING_LIBRARY)]
89
+ end
90
+
91
+ context 'when configuration specifies a wrapping library' do
92
+
93
+ let(:config) do
94
+ {
95
+ default: { hosts: SpecConfig.instance.addresses, database: database_id },
96
+ analytics: {
97
+ hosts: SpecConfig.instance.addresses,
98
+ database: database_id,
99
+ options: {
100
+ wrapping_libraries: [{name: 'Foo'}],
101
+ },
102
+ }
103
+ }
104
+ end
105
+
106
+ it 'adds Mongoid as another wrapping library' do
107
+ client.options[:wrapping_libraries].should == [
108
+ BSON::Document.new(Mongoid::Clients::Factory::MONGOID_WRAPPING_LIBRARY),
109
+ {'name' => 'Foo'},
110
+ ]
111
+ end
112
+ end
113
+ end
77
114
  end
78
115
 
79
116
  context "when the configuration has no ports" do
@@ -81,7 +118,7 @@ describe Mongoid::Clients::Factory do
81
118
  let(:config) do
82
119
  {
83
120
  default: { hosts: [ "127.0.0.1" ], database: database_id },
84
- secondary: { hosts: [ "127.0.0.1" ], database: database_id }
121
+ analytics: { hosts: [ "127.0.0.1" ], database: database_id }
85
122
  }
86
123
  end
87
124
 
@@ -94,7 +131,7 @@ describe Mongoid::Clients::Factory do
94
131
  end
95
132
 
96
133
  let(:client) do
97
- described_class.create(:secondary)
134
+ described_class.create(:analytics)
98
135
  end
99
136
 
100
137
  let(:default) do
@@ -125,7 +162,7 @@ describe Mongoid::Clients::Factory do
125
162
  let(:config) do
126
163
  {
127
164
  default: { hosts: [ "127.0.0.1:27017" ], database: database_id },
128
- secondary: { uri: "mongodb://127.0.0.1:27017/mongoid_test" }
165
+ analytics: { uri: "mongodb://127.0.0.1:27017/mongoid_test" }
129
166
  }
130
167
  end
131
168
 
@@ -138,7 +175,7 @@ describe Mongoid::Clients::Factory do
138
175
  end
139
176
 
140
177
  let(:client) do
141
- described_class.create(:secondary)
178
+ described_class.create(:analytics)
142
179
  end
143
180
 
144
181
  let(:cluster) do
@@ -163,7 +200,7 @@ describe Mongoid::Clients::Factory do
163
200
  let(:config) do
164
201
  {
165
202
  default: { hosts: [ "127.0.0.1:1234" ], database: database_id, server_selection_timeout: 1 },
166
- secondary: { uri: "mongodb://127.0.0.1:1234,127.0.0.1:5678/mongoid_test?serverSelectionTimeoutMS=1000" }
203
+ analytics: { uri: "mongodb://127.0.0.1:1234,127.0.0.1:5678/mongoid_test?serverSelectionTimeoutMS=1000" }
167
204
  }
168
205
  end
169
206
 
@@ -176,7 +213,7 @@ describe Mongoid::Clients::Factory do
176
213
  end
177
214
 
178
215
  let(:client) do
179
- described_class.create(:secondary)
216
+ described_class.create(:analytics)
180
217
  end
181
218
 
182
219
  let(:cluster) do
@@ -14,7 +14,7 @@ describe Mongoid::Clients::Options, retry: 3 do
14
14
  Mongoid::Clients.clients.clear
15
15
  end
16
16
 
17
- describe '#with', if: non_legacy_server? do
17
+ describe '#with' do
18
18
 
19
19
  context 'when passing some options' do
20
20
 
@@ -151,7 +151,7 @@ describe Mongoid::Clients::Options, retry: 3 do
151
151
  let(:config) do
152
152
  {
153
153
  default: { hosts: SpecConfig.instance.addresses, database: database_id },
154
- secondary: { uri: "mongodb://#{SpecConfig.instance.addresses.first}/secondary-db?connectTimeoutMS=3000" }
154
+ analytics: { uri: "mongodb://#{SpecConfig.instance.addresses.first}/analytics-db?connectTimeoutMS=3000" }
155
155
  }
156
156
  end
157
157
 
@@ -164,14 +164,14 @@ describe Mongoid::Clients::Options, retry: 3 do
164
164
  end
165
165
 
166
166
  let(:persistence_context) do
167
- Minim.with(client: :secondary) do |klass|
167
+ Minim.with(client: :analytics) do |klass|
168
168
  klass.persistence_context
169
169
  end
170
170
  end
171
171
 
172
172
  it 'uses the database specified in the uri' do
173
- expect(persistence_context.database_name).to eq('secondary-db')
174
- expect(persistence_context.client.database.name).to eq('secondary-db')
173
+ expect(persistence_context.database_name).to eq('analytics-db')
174
+ expect(persistence_context.client.database.name).to eq('analytics-db')
175
175
  end
176
176
 
177
177
  it 'uses the options specified in the uri' do
@@ -291,7 +291,7 @@ describe Mongoid::Clients::Options, retry: 3 do
291
291
  end
292
292
  end
293
293
 
294
- describe '.with', if: non_legacy_server? do
294
+ describe '.with' do
295
295
 
296
296
  context 'when passing some options' do
297
297
 
@@ -344,8 +344,8 @@ describe Mongoid::Clients::Options, retry: 3 do
344
344
  let(:config) do
345
345
  {
346
346
  default: { hosts: SpecConfig.instance.addresses, database: database_id },
347
- secondary: {
348
- uri: "mongodb://#{SpecConfig.instance.addresses.first}/secondary-db",
347
+ analytics: {
348
+ uri: "mongodb://#{SpecConfig.instance.addresses.first}/analytics-db",
349
349
  options: {
350
350
  server_selection_timeout: 0.5,
351
351
  },
@@ -358,14 +358,14 @@ describe Mongoid::Clients::Options, retry: 3 do
358
358
  end
359
359
 
360
360
  let(:persistence_context) do
361
- test_model.with(client: :secondary) do |object|
361
+ test_model.with(client: :analytics) do |object|
362
362
  object.persistence_context
363
363
  end
364
364
  end
365
365
 
366
366
  it 'uses the database specified in the uri' do
367
- expect(persistence_context.database_name).to eq('secondary-db')
368
- expect(persistence_context.client.database.name).to eq('secondary-db')
367
+ expect(persistence_context.database_name).to eq('analytics-db')
368
+ expect(persistence_context.client.database.name).to eq('analytics-db')
369
369
  end
370
370
  end
371
371
 
@@ -20,12 +20,7 @@ describe Mongoid::Clients::Sessions do
20
20
 
21
21
  let(:subscriber) do
22
22
  client = Mongoid::Clients.with_name(:other)
23
- monitoring = if client.respond_to?(:monitoring, true)
24
- client.send(:monitoring)
25
- else
26
- # driver 2.5
27
- client.instance_variable_get('@monitoring')
28
- end
23
+ monitoring = client.send(:monitoring)
29
24
  monitoring.subscribers['Command'].find do |s|
30
25
  s.is_a?(EventSubscriber)
31
26
  end
@@ -43,7 +38,8 @@ describe Mongoid::Clients::Sessions do
43
38
 
44
39
  context 'when a session is used on a model class' do
45
40
 
46
- context 'when sessions are supported', if: sessions_supported? do
41
+ context 'when sessions are supported' do
42
+ min_server_version '3.6'
47
43
 
48
44
  around do |example|
49
45
  Mongoid::Clients.with_name(:other).database.collections.each(&:drop)
@@ -172,7 +168,8 @@ describe Mongoid::Clients::Sessions do
172
168
  end
173
169
  end
174
170
 
175
- context 'when sessions are not supported', unless: sessions_supported? do
171
+ context 'when sessions are not supported' do
172
+ max_server_version '3.4'
176
173
 
177
174
  let!(:error) do
178
175
  e = nil
@@ -199,7 +196,8 @@ describe Mongoid::Clients::Sessions do
199
196
  end
200
197
  end
201
198
 
202
- context 'when sessions are supported', if: sessions_supported? do
199
+ context 'when sessions are supported' do
200
+ min_server_version '3.6'
203
201
 
204
202
  around do |example|
205
203
  Mongoid::Clients.with_name(:other).database.collections.each(&:drop)
@@ -316,7 +314,8 @@ describe Mongoid::Clients::Sessions do
316
314
  end
317
315
  end
318
316
 
319
- context 'when sessions are not supported', unless: sessions_supported? do
317
+ context 'when sessions are not supported' do
318
+ max_server_version '3.4'
320
319
 
321
320
  let!(:error) do
322
321
  e = nil