mongoid 9.0.11 → 9.1.0

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 (997) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -8
  3. data/README.md +5 -11
  4. data/Rakefile +35 -38
  5. data/lib/config/locales/en.yml +11 -0
  6. data/lib/mongoid/association/accessors.rb +19 -26
  7. data/lib/mongoid/association/bindable.rb +43 -45
  8. data/lib/mongoid/association/builders.rb +18 -15
  9. data/lib/mongoid/association/constrainable.rb +3 -5
  10. data/lib/mongoid/association/depending.rb +34 -38
  11. data/lib/mongoid/association/eager.rb +47 -13
  12. data/lib/mongoid/association/eager_loadable.rb +152 -24
  13. data/lib/mongoid/association/embedded/batchable.rb +28 -30
  14. data/lib/mongoid/association/embedded/cyclic.rb +8 -11
  15. data/lib/mongoid/association/embedded/eager.rb +1 -6
  16. data/lib/mongoid/association/embedded/embedded_in/binding.rb +6 -9
  17. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -3
  18. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -0
  19. data/lib/mongoid/association/embedded/embedded_in.rb +25 -22
  20. data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -2
  21. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +2 -3
  22. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
  23. data/lib/mongoid/association/embedded/embeds_many.rb +24 -21
  24. data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -2
  25. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +2 -6
  26. data/lib/mongoid/association/embedded/embeds_one.rb +20 -18
  27. data/lib/mongoid/association/embedded.rb +0 -1
  28. data/lib/mongoid/association/macros.rb +3 -7
  29. data/lib/mongoid/association/many.rb +75 -3
  30. data/lib/mongoid/association/marshalable.rb +0 -3
  31. data/lib/mongoid/association/nested/many.rb +18 -13
  32. data/lib/mongoid/association/nested/nested_buildable.rb +6 -9
  33. data/lib/mongoid/association/nested/one.rb +4 -7
  34. data/lib/mongoid/association/nested.rb +1 -3
  35. data/lib/mongoid/association/one.rb +0 -3
  36. data/lib/mongoid/association/options.rb +8 -7
  37. data/lib/mongoid/association/referenced/auto_save.rb +0 -2
  38. data/lib/mongoid/association/referenced/belongs_to/binding.rb +11 -15
  39. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +23 -5
  40. data/lib/mongoid/association/referenced/belongs_to/eager.rb +1 -3
  41. data/lib/mongoid/association/referenced/belongs_to.rb +48 -43
  42. data/lib/mongoid/association/referenced/counter_cache.rb +5 -10
  43. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -2
  44. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +8 -4
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -3
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +52 -47
  47. data/lib/mongoid/association/referenced/has_many/binding.rb +0 -2
  48. data/lib/mongoid/association/referenced/has_many/buildable.rb +11 -5
  49. data/lib/mongoid/association/referenced/has_many/eager.rb +0 -3
  50. data/lib/mongoid/association/referenced/has_many/enumerable.rb +107 -38
  51. data/lib/mongoid/association/referenced/has_many/proxy.rb +10 -6
  52. data/lib/mongoid/association/referenced/has_many.rb +30 -24
  53. data/lib/mongoid/association/referenced/has_one/binding.rb +0 -2
  54. data/lib/mongoid/association/referenced/has_one/buildable.rb +11 -9
  55. data/lib/mongoid/association/referenced/has_one/eager.rb +0 -3
  56. data/lib/mongoid/association/referenced/has_one.rb +26 -21
  57. data/lib/mongoid/association/referenced/syncable.rb +30 -34
  58. data/lib/mongoid/association/referenced.rb +0 -1
  59. data/lib/mongoid/association/reflections.rb +0 -3
  60. data/lib/mongoid/association/relatable.rb +69 -66
  61. data/lib/mongoid/association.rb +12 -15
  62. data/lib/mongoid/atomic/modifiers.rb +65 -25
  63. data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
  64. data/lib/mongoid/atomic/paths/embedded/one.rb +2 -4
  65. data/lib/mongoid/atomic/paths/embedded.rb +3 -6
  66. data/lib/mongoid/atomic/paths/root.rb +1 -4
  67. data/lib/mongoid/atomic/paths.rb +2 -3
  68. data/lib/mongoid/atomic.rb +0 -3
  69. data/lib/mongoid/attributes/dynamic.rb +6 -7
  70. data/lib/mongoid/attributes/nested.rb +8 -10
  71. data/lib/mongoid/attributes/projector.rb +7 -20
  72. data/lib/mongoid/attributes/readonly.rb +6 -11
  73. data/lib/mongoid/attributes.rb +18 -34
  74. data/lib/mongoid/cacheable.rb +24 -6
  75. data/lib/mongoid/clients/factory.rb +12 -15
  76. data/lib/mongoid/clients/options.rb +2 -5
  77. data/lib/mongoid/clients/sessions.rb +50 -60
  78. data/lib/mongoid/clients/storage_options.rb +1 -4
  79. data/lib/mongoid/clients/validators/storage.rb +2 -3
  80. data/lib/mongoid/clients/validators.rb +1 -2
  81. data/lib/mongoid/clients.rb +8 -11
  82. data/lib/mongoid/collection_configurable.rb +10 -14
  83. data/lib/mongoid/composable.rb +30 -34
  84. data/lib/mongoid/config/defaults.rb +7 -4
  85. data/lib/mongoid/config/encryption.rb +1 -3
  86. data/lib/mongoid/config/environment.rb +7 -16
  87. data/lib/mongoid/config/introspection.rb +14 -16
  88. data/lib/mongoid/config/options.rb +16 -10
  89. data/lib/mongoid/config/validators/async_query_executor.rb +3 -6
  90. data/lib/mongoid/config/validators/client.rb +12 -15
  91. data/lib/mongoid/config/validators/option.rb +3 -5
  92. data/lib/mongoid/config/validators.rb +3 -4
  93. data/lib/mongoid/config.rb +132 -42
  94. data/lib/mongoid/contextual/aggregable/memory.rb +2 -4
  95. data/lib/mongoid/contextual/aggregable/mongo.rb +20 -22
  96. data/lib/mongoid/contextual/aggregable/none.rb +2 -4
  97. data/lib/mongoid/contextual/aggregable.rb +5 -7
  98. data/lib/mongoid/contextual/atomic.rb +20 -24
  99. data/lib/mongoid/contextual/command.rb +0 -3
  100. data/lib/mongoid/contextual/map_reduce.rb +12 -16
  101. data/lib/mongoid/contextual/memory.rb +72 -65
  102. data/lib/mongoid/contextual/mongo/documents_loader.rb +2 -3
  103. data/lib/mongoid/contextual/mongo.rb +169 -85
  104. data/lib/mongoid/contextual/none.rb +9 -9
  105. data/lib/mongoid/contextual/queryable.rb +1 -4
  106. data/lib/mongoid/contextual.rb +18 -7
  107. data/lib/mongoid/copyable.rb +7 -9
  108. data/lib/mongoid/criteria/findable.rb +5 -7
  109. data/lib/mongoid/criteria/includable.rb +37 -8
  110. data/lib/mongoid/criteria/inspectable.rb +2 -5
  111. data/lib/mongoid/criteria/marshalable.rb +4 -8
  112. data/lib/mongoid/criteria/modifiable.rb +3 -11
  113. data/lib/mongoid/criteria/options.rb +0 -3
  114. data/lib/mongoid/criteria/permission.rb +34 -37
  115. data/lib/mongoid/criteria/queryable/aggregable.rb +9 -10
  116. data/lib/mongoid/criteria/queryable/expandable.rb +4 -9
  117. data/lib/mongoid/criteria/queryable/extensions/array.rb +7 -10
  118. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -5
  119. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -4
  120. data/lib/mongoid/criteria/queryable/extensions/date.rb +2 -6
  121. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +3 -7
  122. data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -4
  123. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +20 -11
  124. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -11
  125. data/lib/mongoid/criteria/queryable/extensions/object.rb +7 -8
  126. data/lib/mongoid/criteria/queryable/extensions/range.rb +6 -9
  127. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +10 -12
  128. data/lib/mongoid/criteria/queryable/extensions/set.rb +4 -6
  129. data/lib/mongoid/criteria/queryable/extensions/string.rb +5 -9
  130. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -7
  131. data/lib/mongoid/criteria/queryable/extensions/time.rb +2 -6
  132. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +2 -12
  133. data/lib/mongoid/criteria/queryable/extensions.rb +18 -21
  134. data/lib/mongoid/criteria/queryable/key.rb +12 -18
  135. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  136. data/lib/mongoid/criteria/queryable/mergeable.rb +31 -39
  137. data/lib/mongoid/criteria/queryable/optional.rb +17 -18
  138. data/lib/mongoid/criteria/queryable/options.rb +20 -9
  139. data/lib/mongoid/criteria/queryable/pipeline.rb +6 -9
  140. data/lib/mongoid/criteria/queryable/selectable.rb +131 -193
  141. data/lib/mongoid/criteria/queryable/selector.rb +20 -29
  142. data/lib/mongoid/criteria/queryable/smash.rb +1 -6
  143. data/lib/mongoid/criteria/queryable/storable.rb +20 -39
  144. data/lib/mongoid/criteria/queryable.rb +25 -15
  145. data/lib/mongoid/criteria/scopable.rb +5 -11
  146. data/lib/mongoid/criteria/translator.rb +5 -8
  147. data/lib/mongoid/criteria.rb +109 -54
  148. data/lib/mongoid/deprecable.rb +1 -4
  149. data/lib/mongoid/deprecation.rb +2 -6
  150. data/lib/mongoid/document.rb +1 -1
  151. data/lib/mongoid/encryptable.rb +1 -2
  152. data/lib/mongoid/equality.rb +4 -5
  153. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  154. data/lib/mongoid/errors/attribute_not_loaded.rb +1 -4
  155. data/lib/mongoid/errors/callback.rb +1 -4
  156. data/lib/mongoid/errors/create_collection_failure.rb +8 -11
  157. data/lib/mongoid/errors/criteria_argument_required.rb +2 -5
  158. data/lib/mongoid/errors/delete_restriction.rb +1 -4
  159. data/lib/mongoid/errors/document_not_destroyed.rb +1 -4
  160. data/lib/mongoid/errors/document_not_found.rb +16 -21
  161. data/lib/mongoid/errors/drop_collection_failure.rb +7 -10
  162. data/lib/mongoid/errors/empty_config_file.rb +1 -4
  163. data/lib/mongoid/errors/immutable_attribute.rb +1 -4
  164. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -4
  165. data/lib/mongoid/errors/invalid_async_query_executor.rb +2 -5
  166. data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +2 -5
  167. data/lib/mongoid/errors/invalid_collection.rb +1 -3
  168. data/lib/mongoid/errors/invalid_config_file.rb +1 -4
  169. data/lib/mongoid/errors/invalid_config_option.rb +2 -5
  170. data/lib/mongoid/errors/invalid_dependent_strategy.rb +6 -10
  171. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +2 -4
  172. data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +1 -4
  173. data/lib/mongoid/errors/invalid_elem_match_operator.rb +5 -9
  174. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +1 -4
  175. data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +1 -4
  176. data/lib/mongoid/errors/invalid_expression_operator.rb +3 -7
  177. data/lib/mongoid/errors/invalid_field.rb +2 -5
  178. data/lib/mongoid/errors/invalid_field_operator.rb +5 -9
  179. data/lib/mongoid/errors/invalid_field_option.rb +2 -5
  180. data/lib/mongoid/errors/invalid_field_type.rb +1 -4
  181. data/lib/mongoid/errors/invalid_find.rb +1 -4
  182. data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +1 -4
  183. data/lib/mongoid/errors/invalid_includes.rb +3 -6
  184. data/lib/mongoid/errors/invalid_index.rb +1 -4
  185. data/lib/mongoid/errors/invalid_options.rb +1 -4
  186. data/lib/mongoid/errors/invalid_path.rb +1 -4
  187. data/lib/mongoid/errors/invalid_persistence_option.rb +4 -7
  188. data/lib/mongoid/errors/invalid_query.rb +6 -11
  189. data/lib/mongoid/errors/invalid_relation.rb +10 -13
  190. data/lib/mongoid/errors/invalid_relation_option.rb +4 -7
  191. data/lib/mongoid/errors/invalid_scope.rb +1 -4
  192. data/lib/mongoid/errors/invalid_session_nesting.rb +0 -3
  193. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +2 -4
  194. data/lib/mongoid/errors/invalid_storage_options.rb +1 -4
  195. data/lib/mongoid/errors/invalid_time.rb +1 -4
  196. data/lib/mongoid/errors/invalid_transaction_nesting.rb +0 -3
  197. data/lib/mongoid/errors/inverse_not_found.rb +1 -4
  198. data/lib/mongoid/errors/mixed_client_configuration.rb +1 -4
  199. data/lib/mongoid/errors/mixed_relations.rb +1 -3
  200. data/lib/mongoid/errors/mongoid_error.rb +7 -11
  201. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -4
  202. data/lib/mongoid/errors/no_client_config.rb +1 -4
  203. data/lib/mongoid/errors/no_client_database.rb +1 -4
  204. data/lib/mongoid/errors/no_client_hosts.rb +1 -4
  205. data/lib/mongoid/errors/no_clients_config.rb +1 -4
  206. data/lib/mongoid/errors/no_default_client.rb +1 -4
  207. data/lib/mongoid/errors/no_environment.rb +1 -4
  208. data/lib/mongoid/errors/no_map_reduce_output.rb +1 -4
  209. data/lib/mongoid/errors/no_metadata.rb +1 -4
  210. data/lib/mongoid/errors/no_parent.rb +1 -4
  211. data/lib/mongoid/errors/readonly_attribute.rb +1 -4
  212. data/lib/mongoid/errors/readonly_document.rb +1 -4
  213. data/lib/mongoid/errors/rollback.rb +0 -2
  214. data/lib/mongoid/errors/scope_overwrite.rb +2 -4
  215. data/lib/mongoid/errors/sessions_not_supported.rb +0 -3
  216. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -3
  217. data/lib/mongoid/errors/transaction_error.rb +0 -3
  218. data/lib/mongoid/errors/transactions_not_supported.rb +0 -3
  219. data/lib/mongoid/errors/unknown_attribute.rb +1 -4
  220. data/lib/mongoid/errors/unknown_model.rb +1 -4
  221. data/lib/mongoid/errors/unregistered_class.rb +1 -1
  222. data/lib/mongoid/errors/unsaved_document.rb +1 -3
  223. data/lib/mongoid/errors/unsupported_isolation_level.rb +22 -0
  224. data/lib/mongoid/errors/unsupported_javascript.rb +1 -4
  225. data/lib/mongoid/errors/validations.rb +3 -5
  226. data/lib/mongoid/errors.rb +72 -72
  227. data/lib/mongoid/evolvable.rb +0 -3
  228. data/lib/mongoid/extensions/array.rb +5 -7
  229. data/lib/mongoid/extensions/big_decimal.rb +6 -7
  230. data/lib/mongoid/extensions/binary.rb +3 -6
  231. data/lib/mongoid/extensions/boolean.rb +4 -7
  232. data/lib/mongoid/extensions/bson_document.rb +28 -0
  233. data/lib/mongoid/extensions/date.rb +10 -14
  234. data/lib/mongoid/extensions/date_time.rb +2 -6
  235. data/lib/mongoid/extensions/decimal128.rb +1 -5
  236. data/lib/mongoid/extensions/false_class.rb +3 -5
  237. data/lib/mongoid/extensions/float.rb +5 -10
  238. data/lib/mongoid/extensions/hash.rb +5 -10
  239. data/lib/mongoid/extensions/integer.rb +5 -10
  240. data/lib/mongoid/extensions/module.rb +1 -4
  241. data/lib/mongoid/extensions/nil_class.rb +0 -1
  242. data/lib/mongoid/extensions/object.rb +9 -14
  243. data/lib/mongoid/extensions/object_id.rb +2 -6
  244. data/lib/mongoid/extensions/range.rb +14 -15
  245. data/lib/mongoid/extensions/raw_value.rb +0 -3
  246. data/lib/mongoid/extensions/regexp.rb +3 -6
  247. data/lib/mongoid/extensions/set.rb +3 -4
  248. data/lib/mongoid/extensions/string.rb +8 -12
  249. data/lib/mongoid/extensions/symbol.rb +3 -7
  250. data/lib/mongoid/extensions/time.rb +24 -26
  251. data/lib/mongoid/extensions/time_with_zone.rb +4 -7
  252. data/lib/mongoid/extensions/true_class.rb +3 -5
  253. data/lib/mongoid/extensions.rb +26 -26
  254. data/lib/mongoid/factory.rb +5 -9
  255. data/lib/mongoid/fields/encrypted.rb +0 -1
  256. data/lib/mongoid/fields/foreign_key.rb +9 -10
  257. data/lib/mongoid/fields/localized.rb +12 -12
  258. data/lib/mongoid/fields/standard.rb +5 -7
  259. data/lib/mongoid/fields/validators/macro.rb +23 -34
  260. data/lib/mongoid/fields/validators.rb +1 -2
  261. data/lib/mongoid/fields.rb +151 -58
  262. data/lib/mongoid/findable.rb +82 -53
  263. data/lib/mongoid/indexable/specification.rb +20 -6
  264. data/lib/mongoid/indexable/validators/options.rb +33 -40
  265. data/lib/mongoid/indexable.rb +26 -25
  266. data/lib/mongoid/inspectable.rb +4 -7
  267. data/lib/mongoid/interceptable.rb +41 -40
  268. data/lib/mongoid/loadable.rb +17 -18
  269. data/lib/mongoid/loggable.rb +4 -8
  270. data/lib/mongoid/matchable.rb +0 -2
  271. data/lib/mongoid/matcher/all.rb +2 -5
  272. data/lib/mongoid/matcher/and.rb +0 -3
  273. data/lib/mongoid/matcher/bits.rb +13 -8
  274. data/lib/mongoid/matcher/bits_all_clear.rb +1 -3
  275. data/lib/mongoid/matcher/bits_all_set.rb +1 -3
  276. data/lib/mongoid/matcher/bits_any_clear.rb +1 -3
  277. data/lib/mongoid/matcher/bits_any_set.rb +1 -3
  278. data/lib/mongoid/matcher/elem_match.rb +13 -15
  279. data/lib/mongoid/matcher/elem_match_expression.rb +0 -3
  280. data/lib/mongoid/matcher/eq.rb +0 -3
  281. data/lib/mongoid/matcher/eq_impl.rb +12 -17
  282. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +4 -7
  283. data/lib/mongoid/matcher/exists.rb +1 -4
  284. data/lib/mongoid/matcher/expression.rb +5 -10
  285. data/lib/mongoid/matcher/expression_operator.rb +1 -3
  286. data/lib/mongoid/matcher/field_expression.rb +10 -13
  287. data/lib/mongoid/matcher/field_operator.rb +4 -6
  288. data/lib/mongoid/matcher/gt.rb +0 -3
  289. data/lib/mongoid/matcher/gte.rb +0 -3
  290. data/lib/mongoid/matcher/in.rb +9 -12
  291. data/lib/mongoid/matcher/lt.rb +0 -3
  292. data/lib/mongoid/matcher/lte.rb +0 -3
  293. data/lib/mongoid/matcher/mod.rb +4 -8
  294. data/lib/mongoid/matcher/ne.rb +0 -3
  295. data/lib/mongoid/matcher/nin.rb +0 -3
  296. data/lib/mongoid/matcher/nor.rb +1 -6
  297. data/lib/mongoid/matcher/not.rb +0 -3
  298. data/lib/mongoid/matcher/or.rb +0 -3
  299. data/lib/mongoid/matcher/regex.rb +11 -14
  300. data/lib/mongoid/matcher/size.rb +2 -5
  301. data/lib/mongoid/matcher/type.rb +32 -37
  302. data/lib/mongoid/matcher.rb +7 -15
  303. data/lib/mongoid/model_resolver.rb +1 -0
  304. data/lib/mongoid/persistable/creatable.rb +23 -7
  305. data/lib/mongoid/persistable/deletable.rb +6 -7
  306. data/lib/mongoid/persistable/destroyable.rb +2 -6
  307. data/lib/mongoid/persistable/incrementable.rb +1 -3
  308. data/lib/mongoid/persistable/logical.rb +3 -5
  309. data/lib/mongoid/persistable/maxable.rb +2 -4
  310. data/lib/mongoid/persistable/minable.rb +2 -4
  311. data/lib/mongoid/persistable/multipliable.rb +1 -3
  312. data/lib/mongoid/persistable/poppable.rb +2 -4
  313. data/lib/mongoid/persistable/pullable.rb +3 -5
  314. data/lib/mongoid/persistable/pushable.rb +5 -7
  315. data/lib/mongoid/persistable/renamable.rb +1 -3
  316. data/lib/mongoid/persistable/savable.rb +0 -3
  317. data/lib/mongoid/persistable/settable.rb +4 -13
  318. data/lib/mongoid/persistable/unsettable.rb +1 -3
  319. data/lib/mongoid/persistable/updatable.rb +16 -24
  320. data/lib/mongoid/persistable/upsertable.rb +8 -10
  321. data/lib/mongoid/persistable.rb +28 -27
  322. data/lib/mongoid/persistence_context.rb +34 -41
  323. data/lib/mongoid/pluckable.rb +0 -2
  324. data/lib/mongoid/positional.rb +5 -11
  325. data/lib/mongoid/railtie.rb +16 -22
  326. data/lib/mongoid/railties/console_sandbox.rb +6 -8
  327. data/lib/mongoid/railties/controller_runtime.rb +7 -11
  328. data/lib/mongoid/railties/database.rake +42 -44
  329. data/lib/mongoid/scopable.rb +23 -31
  330. data/lib/mongoid/search_indexable.rb +330 -0
  331. data/lib/mongoid/selectable.rb +1 -3
  332. data/lib/mongoid/serializable.rb +6 -8
  333. data/lib/mongoid/shardable.rb +8 -17
  334. data/lib/mongoid/stateful.rb +5 -10
  335. data/lib/mongoid/stringified_symbol.rb +5 -9
  336. data/lib/mongoid/tasks/database.rake +31 -32
  337. data/lib/mongoid/tasks/database.rb +28 -30
  338. data/lib/mongoid/tasks/encryption.rb +10 -15
  339. data/lib/mongoid/threaded/lifecycle.rb +6 -9
  340. data/lib/mongoid/threaded.rb +132 -32
  341. data/lib/mongoid/timestamps/created/short.rb +2 -3
  342. data/lib/mongoid/timestamps/created.rb +1 -2
  343. data/lib/mongoid/timestamps/short.rb +0 -1
  344. data/lib/mongoid/timestamps/timeless.rb +8 -13
  345. data/lib/mongoid/timestamps/updated/short.rb +2 -3
  346. data/lib/mongoid/timestamps/updated.rb +2 -5
  347. data/lib/mongoid/timestamps.rb +4 -6
  348. data/lib/mongoid/touchable.rb +19 -11
  349. data/lib/mongoid/traversable.rb +3 -2
  350. data/lib/mongoid/validatable/associated.rb +1 -5
  351. data/lib/mongoid/validatable/format.rb +0 -2
  352. data/lib/mongoid/validatable/length.rb +0 -2
  353. data/lib/mongoid/validatable/localizable.rb +0 -3
  354. data/lib/mongoid/validatable/macros.rb +0 -2
  355. data/lib/mongoid/validatable/numericality.rb +24 -3
  356. data/lib/mongoid/validatable/presence.rb +8 -10
  357. data/lib/mongoid/validatable/queryable.rb +0 -3
  358. data/lib/mongoid/validatable/uniqueness.rb +12 -14
  359. data/lib/mongoid/validatable.rb +15 -20
  360. data/lib/mongoid/version.rb +1 -1
  361. data/lib/mongoid/warnings.rb +10 -11
  362. data/lib/mongoid.rb +30 -34
  363. data/lib/rails/generators/mongoid/config/config_generator.rb +2 -4
  364. data/lib/rails/generators/mongoid/config/templates/mongoid.rb +4 -5
  365. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +2 -2
  366. data/lib/rails/generators/mongoid/model/model_generator.rb +5 -8
  367. data/lib/rails/generators/mongoid_generator.rb +6 -10
  368. data/lib/rails/mongoid.rb +1 -3
  369. data/spec/integration/active_job_spec.rb +1 -2
  370. data/spec/integration/app_spec.rb +142 -178
  371. data/spec/integration/associations/belongs_to_spec.rb +30 -28
  372. data/spec/integration/associations/embedded_dirty_spec.rb +0 -1
  373. data/spec/integration/associations/embedded_spec.rb +41 -43
  374. data/spec/integration/associations/embeds_many_spec.rb +46 -29
  375. data/spec/integration/associations/embeds_one_spec.rb +2 -1
  376. data/spec/integration/associations/foreign_key_spec.rb +10 -11
  377. data/spec/integration/associations/foreign_key_spec_models.rb +8 -9
  378. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +16 -13
  379. data/spec/integration/associations/has_many_spec.rb +17 -18
  380. data/spec/integration/associations/has_one_spec.rb +42 -45
  381. data/spec/integration/associations/nested_attributes_assignment_spec.rb +36 -39
  382. data/spec/integration/associations/reverse_population_spec.rb +4 -5
  383. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  384. data/spec/integration/associations/scope_option_spec.rb +18 -20
  385. data/spec/integration/atomic/modifiers_spec.rb +72 -52
  386. data/spec/integration/bson_regexp_raw_spec.rb +2 -3
  387. data/spec/integration/caching_spec.rb +68 -0
  388. data/spec/integration/callbacks_models.rb +11 -9
  389. data/spec/integration/callbacks_spec.rb +78 -80
  390. data/spec/integration/contextual/empty_spec.rb +19 -20
  391. data/spec/integration/criteria/alias_query_spec.rb +12 -19
  392. data/spec/integration/criteria/date_field_spec.rb +1 -2
  393. data/spec/integration/criteria/default_scope_spec.rb +23 -18
  394. data/spec/integration/criteria/logical_spec.rb +18 -19
  395. data/spec/integration/criteria/range_spec.rb +77 -86
  396. data/spec/integration/criteria/raw_value_spec.rb +122 -109
  397. data/spec/integration/criteria/time_with_zone_spec.rb +33 -24
  398. data/spec/integration/discriminator_key_spec.rb +85 -85
  399. data/spec/integration/discriminator_value_spec.rb +70 -73
  400. data/spec/integration/document_spec.rb +9 -10
  401. data/spec/integration/dots_and_dollars_spec.rb +104 -119
  402. data/spec/integration/encryption_spec.rb +8 -11
  403. data/spec/integration/i18n_fallbacks_spec.rb +7 -8
  404. data/spec/integration/isolation_state_spec.rb +241 -0
  405. data/spec/integration/matcher_examples_spec.rb +145 -168
  406. data/spec/integration/matcher_operator_data/in.yml +6 -6
  407. data/spec/integration/matcher_operator_spec.rb +16 -26
  408. data/spec/integration/matcher_spec.rb +31 -32
  409. data/spec/integration/persistence/collection_options_spec.rb +0 -2
  410. data/spec/integration/persistence/range_field_spec.rb +24 -2
  411. data/spec/integration/server_query_spec.rb +43 -37
  412. data/spec/integration/shardable_spec.rb +10 -11
  413. data/spec/integration/stringified_symbol_field_spec.rb +28 -43
  414. data/spec/lite_spec_helper.rb +11 -12
  415. data/spec/mongoid/association/accessors_spec.rb +197 -285
  416. data/spec/mongoid/association/auto_save_spec.rb +62 -93
  417. data/spec/mongoid/association/builders_spec.rb +121 -74
  418. data/spec/mongoid/association/constrainable_spec.rb +9 -22
  419. data/spec/mongoid/association/counter_cache_spec.rb +71 -104
  420. data/spec/mongoid/association/depending_spec.rb +166 -208
  421. data/spec/mongoid/association/eager_spec.rb +416 -80
  422. data/spec/mongoid/association/embedded/cyclic_spec.rb +36 -48
  423. data/spec/mongoid/association/embedded/dirty_spec.rb +15 -20
  424. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +36 -54
  425. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +8 -15
  426. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +135 -175
  427. data/spec/mongoid/association/embedded/embedded_in_spec.rb +25 -127
  428. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +9 -14
  429. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +38 -51
  430. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +1151 -1340
  431. data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -17
  432. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +11 -11
  433. data/spec/mongoid/association/embedded/embeds_many_spec.rb +25 -138
  434. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +15 -23
  435. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +18 -26
  436. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +204 -273
  437. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  438. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  439. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +5 -6
  440. data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -143
  441. data/spec/mongoid/association/macros_spec.rb +213 -300
  442. data/spec/mongoid/association/nested/many_spec.rb +51 -73
  443. data/spec/mongoid/association/nested/one_spec.rb +56 -80
  444. data/spec/mongoid/association/options_spec.rb +187 -310
  445. data/spec/mongoid/association/polymorphic_spec.rb +35 -53
  446. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +55 -76
  447. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +36 -41
  448. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +81 -101
  449. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +258 -345
  450. data/spec/mongoid/association/referenced/belongs_to_models.rb +4 -3
  451. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +3 -4
  452. data/spec/mongoid/association/referenced/belongs_to_spec.rb +91 -294
  453. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +42 -56
  454. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +41 -32
  455. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +36 -42
  456. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +8 -9
  457. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +771 -975
  458. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +9 -9
  459. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +5 -6
  460. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +59 -177
  461. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +29 -43
  462. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +53 -53
  463. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +104 -67
  464. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +431 -675
  465. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -2
  466. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +173 -11
  467. data/spec/mongoid/association/referenced/has_many_models.rb +1 -2
  468. data/spec/mongoid/association/referenced/has_many_query_spec.rb +3 -4
  469. data/spec/mongoid/association/referenced/has_many_spec.rb +44 -188
  470. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +26 -38
  471. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +28 -29
  472. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +29 -42
  473. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +270 -332
  474. data/spec/mongoid/association/referenced/has_one_models.rb +1 -2
  475. data/spec/mongoid/association/referenced/has_one_query_spec.rb +3 -4
  476. data/spec/mongoid/association/referenced/has_one_spec.rb +40 -188
  477. data/spec/mongoid/association/reflections_spec.rb +14 -24
  478. data/spec/mongoid/association/syncable_spec.rb +102 -125
  479. data/spec/mongoid/association_spec.rb +47 -70
  480. data/spec/mongoid/atomic/modifiers_spec.rb +184 -197
  481. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +39 -52
  482. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +35 -49
  483. data/spec/mongoid/atomic/paths/root_spec.rb +9 -15
  484. data/spec/mongoid/atomic/paths_spec.rb +81 -117
  485. data/spec/mongoid/atomic_spec.rb +156 -171
  486. data/spec/mongoid/attributes/dynamic_spec.rb +5 -6
  487. data/spec/mongoid/attributes/nested_spec.rb +1219 -1692
  488. data/spec/mongoid/attributes/nested_spec_models.rb +8 -9
  489. data/spec/mongoid/attributes/projector_spec.rb +2 -6
  490. data/spec/mongoid/attributes/readonly_spec.rb +73 -97
  491. data/spec/mongoid/attributes_spec.rb +669 -826
  492. data/spec/mongoid/cacheable_spec.rb +74 -44
  493. data/spec/mongoid/changeable_spec.rb +591 -733
  494. data/spec/mongoid/clients/factory_spec.rb +122 -154
  495. data/spec/mongoid/clients/options_spec.rb +40 -59
  496. data/spec/mongoid/clients/sessions_spec.rb +25 -44
  497. data/spec/mongoid/clients/transactions_spec.rb +33 -50
  498. data/spec/mongoid/clients/transactions_spec_models.rb +3 -4
  499. data/spec/mongoid/clients_spec.rb +265 -355
  500. data/spec/mongoid/collection_configurable_spec.rb +9 -12
  501. data/spec/mongoid/composable_spec.rb +2 -9
  502. data/spec/mongoid/config/defaults_spec.rb +24 -31
  503. data/spec/mongoid/config/encryption_spec.rb +54 -57
  504. data/spec/mongoid/config/environment_spec.rb +30 -40
  505. data/spec/mongoid/config/introspection_spec.rb +42 -37
  506. data/spec/mongoid/config/options_spec.rb +14 -21
  507. data/spec/mongoid/config_spec.rb +145 -195
  508. data/spec/mongoid/contextual/aggregable/memory_spec.rb +98 -135
  509. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +4 -7
  510. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +149 -187
  511. data/spec/mongoid/contextual/aggregable/none_spec.rb +14 -16
  512. data/spec/mongoid/contextual/atomic_spec.rb +223 -271
  513. data/spec/mongoid/contextual/map_reduce_spec.rb +110 -138
  514. data/spec/mongoid/contextual/memory_spec.rb +706 -854
  515. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +12 -13
  516. data/spec/mongoid/contextual/mongo_spec.rb +1008 -1213
  517. data/spec/mongoid/contextual/none_spec.rb +54 -59
  518. data/spec/mongoid/contextual/short_circuit_spec.rb +139 -0
  519. data/spec/mongoid/copyable_spec.rb +254 -300
  520. data/spec/mongoid/copyable_spec_models.rb +0 -1
  521. data/spec/mongoid/criteria/findable_spec.rb +322 -387
  522. data/spec/mongoid/criteria/includable_spec.rb +421 -372
  523. data/spec/mongoid/criteria/includable_spec_models.rb +16 -7
  524. data/spec/mongoid/criteria/inspectable_spec.rb +11 -14
  525. data/spec/mongoid/criteria/marshalable_spec.rb +11 -14
  526. data/spec/mongoid/criteria/modifiable_spec.rb +366 -512
  527. data/spec/mongoid/criteria/options_spec.rb +2 -7
  528. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +112 -141
  529. data/spec/mongoid/criteria/queryable/expandable_spec.rb +8 -11
  530. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +127 -184
  531. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +123 -60
  532. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +84 -117
  533. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +44 -65
  534. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +86 -108
  535. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +94 -33
  536. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +103 -138
  537. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +95 -34
  538. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +25 -38
  539. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +26 -28
  540. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +32 -54
  541. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +136 -130
  542. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +16 -24
  543. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +15 -24
  544. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +12 -19
  545. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +46 -63
  546. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +28 -42
  547. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +73 -96
  548. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +71 -92
  549. data/spec/mongoid/criteria/queryable/key_spec.rb +32 -36
  550. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +44 -49
  551. data/spec/mongoid/criteria/queryable/optional_spec.rb +373 -486
  552. data/spec/mongoid/criteria/queryable/options_spec.rb +172 -123
  553. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +65 -87
  554. data/spec/mongoid/criteria/queryable/queryable_spec.rb +41 -53
  555. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +576 -680
  556. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +7 -11
  557. data/spec/mongoid/criteria/queryable/selectable_spec.rb +807 -998
  558. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +154 -191
  559. data/spec/mongoid/criteria/queryable/selector_spec.rb +294 -390
  560. data/spec/mongoid/criteria/queryable/smash_spec.rb +6 -11
  561. data/spec/mongoid/criteria/queryable/storable_spec.rb +54 -81
  562. data/spec/mongoid/criteria/queryable_mql_spec.rb +92 -0
  563. data/spec/mongoid/criteria/scopable_spec.rb +102 -138
  564. data/spec/mongoid/criteria/translator_spec.rb +59 -60
  565. data/spec/mongoid/criteria_projection_spec.rb +81 -99
  566. data/spec/mongoid/criteria_spec.rb +935 -950
  567. data/spec/mongoid/document_fields_spec.rb +28 -30
  568. data/spec/mongoid/document_persistence_context_spec.rb +13 -15
  569. data/spec/mongoid/document_query_spec.rb +9 -12
  570. data/spec/mongoid/document_spec.rb +317 -409
  571. data/spec/mongoid/equality_spec.rb +69 -102
  572. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +8 -11
  573. data/spec/mongoid/errors/attribute_not_loaded_spec.rb +7 -10
  574. data/spec/mongoid/errors/callback_spec.rb +8 -11
  575. data/spec/mongoid/errors/delete_restriction_spec.rb +5 -8
  576. data/spec/mongoid/errors/document_not_destroyed_spec.rb +7 -10
  577. data/spec/mongoid/errors/document_not_found_spec.rb +51 -61
  578. data/spec/mongoid/errors/invalid_collection_spec.rb +9 -13
  579. data/spec/mongoid/errors/invalid_config_file_spec.rb +8 -11
  580. data/spec/mongoid/errors/invalid_config_option_spec.rb +8 -11
  581. data/spec/mongoid/errors/invalid_field_option_spec.rb +7 -10
  582. data/spec/mongoid/errors/invalid_field_spec.rb +10 -11
  583. data/spec/mongoid/errors/invalid_field_type_spec.rb +9 -12
  584. data/spec/mongoid/errors/invalid_find_spec.rb +8 -11
  585. data/spec/mongoid/errors/invalid_includes_spec.rb +9 -13
  586. data/spec/mongoid/errors/invalid_index_spec.rb +8 -11
  587. data/spec/mongoid/errors/invalid_options_spec.rb +8 -11
  588. data/spec/mongoid/errors/invalid_path_spec.rb +7 -10
  589. data/spec/mongoid/errors/invalid_relation_spec.rb +15 -16
  590. data/spec/mongoid/errors/invalid_scope_spec.rb +8 -11
  591. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -6
  592. data/spec/mongoid/errors/invalid_storage_options_spec.rb +8 -11
  593. data/spec/mongoid/errors/invalid_time_spec.rb +8 -11
  594. data/spec/mongoid/errors/inverse_not_found_spec.rb +9 -12
  595. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +9 -12
  596. data/spec/mongoid/errors/mixed_relations_spec.rb +8 -11
  597. data/spec/mongoid/errors/mongoid_error_spec.rb +21 -24
  598. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -9
  599. data/spec/mongoid/errors/no_client_config_spec.rb +7 -10
  600. data/spec/mongoid/errors/no_client_database_spec.rb +9 -12
  601. data/spec/mongoid/errors/no_client_hosts_spec.rb +9 -12
  602. data/spec/mongoid/errors/no_clients_config_spec.rb +7 -10
  603. data/spec/mongoid/errors/no_environment_spec.rb +8 -11
  604. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +8 -11
  605. data/spec/mongoid/errors/no_metadata_spec.rb +7 -10
  606. data/spec/mongoid/errors/no_parent_spec.rb +7 -10
  607. data/spec/mongoid/errors/readonly_attribute_spec.rb +7 -10
  608. data/spec/mongoid/errors/readonly_document_spec.rb +6 -9
  609. data/spec/mongoid/errors/scope_overwrite_spec.rb +9 -12
  610. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +9 -12
  611. data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -8
  612. data/spec/mongoid/errors/unsaved_document_spec.rb +8 -11
  613. data/spec/mongoid/errors/unsupported_javascript_spec.rb +9 -12
  614. data/spec/mongoid/errors/validations_spec.rb +11 -14
  615. data/spec/mongoid/extensions/array_spec.rb +70 -92
  616. data/spec/mongoid/extensions/big_decimal_spec.rb +233 -313
  617. data/spec/mongoid/extensions/binary_spec.rb +21 -32
  618. data/spec/mongoid/extensions/boolean_spec.rb +52 -75
  619. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +43 -54
  620. data/spec/mongoid/extensions/date_spec.rb +26 -38
  621. data/spec/mongoid/extensions/date_time_spec.rb +22 -32
  622. data/spec/mongoid/extensions/decimal128_spec.rb +12 -18
  623. data/spec/mongoid/extensions/false_class_spec.rb +10 -17
  624. data/spec/mongoid/extensions/float_spec.rb +40 -61
  625. data/spec/mongoid/extensions/hash_spec.rb +46 -64
  626. data/spec/mongoid/extensions/integer_spec.rb +40 -61
  627. data/spec/mongoid/extensions/module_spec.rb +13 -18
  628. data/spec/mongoid/extensions/nil_class_spec.rb +2 -5
  629. data/spec/mongoid/extensions/object_id_spec.rb +159 -247
  630. data/spec/mongoid/extensions/object_spec.rb +31 -47
  631. data/spec/mongoid/extensions/range_spec.rb +112 -115
  632. data/spec/mongoid/extensions/raw_value_spec.rb +10 -12
  633. data/spec/mongoid/extensions/regexp_spec.rb +23 -36
  634. data/spec/mongoid/extensions/set_spec.rb +38 -49
  635. data/spec/mongoid/extensions/string_spec.rb +118 -167
  636. data/spec/mongoid/extensions/stringified_symbol_spec.rb +29 -43
  637. data/spec/mongoid/extensions/symbol_spec.rb +12 -20
  638. data/spec/mongoid/extensions/time_spec.rb +160 -202
  639. data/spec/mongoid/extensions/time_with_zone_spec.rb +79 -105
  640. data/spec/mongoid/extensions/true_class_spec.rb +10 -17
  641. data/spec/mongoid/factory_spec.rb +125 -148
  642. data/spec/mongoid/fields/foreign_key_spec.rb +124 -169
  643. data/spec/mongoid/fields/localized_spec.rb +140 -185
  644. data/spec/mongoid/fields/standard_spec.rb +43 -59
  645. data/spec/mongoid/fields_spec.rb +751 -620
  646. data/spec/mongoid/findable_spec.rb +260 -228
  647. data/spec/mongoid/indexable/specification_spec.rb +42 -58
  648. data/spec/mongoid/indexable_spec.rb +260 -264
  649. data/spec/mongoid/inspectable_spec.rb +45 -55
  650. data/spec/mongoid/interceptable_spec.rb +784 -922
  651. data/spec/mongoid/interceptable_spec_models.rb +35 -35
  652. data/spec/mongoid/loading_spec.rb +47 -43
  653. data/spec/mongoid/loggable_spec.rb +3 -6
  654. data/spec/mongoid/matcher/extract_attribute_spec.rb +2 -6
  655. data/spec/mongoid/mongoizable_spec.rb +81 -90
  656. data/spec/mongoid/monkey_patches_spec.rb +4 -0
  657. data/spec/mongoid/persistable/creatable_spec.rb +181 -220
  658. data/spec/mongoid/persistable/deletable_spec.rb +139 -179
  659. data/spec/mongoid/persistable/destroyable_spec.rb +135 -164
  660. data/spec/mongoid/persistable/incrementable_spec.rb +65 -84
  661. data/spec/mongoid/persistable/logical_spec.rb +48 -61
  662. data/spec/mongoid/persistable/maxable_spec.rb +45 -44
  663. data/spec/mongoid/persistable/minable_spec.rb +45 -44
  664. data/spec/mongoid/persistable/multipliable_spec.rb +54 -69
  665. data/spec/mongoid/persistable/poppable_spec.rb +47 -60
  666. data/spec/mongoid/persistable/pullable_spec.rb +79 -103
  667. data/spec/mongoid/persistable/pushable_spec.rb +106 -131
  668. data/spec/mongoid/persistable/renamable_spec.rb +52 -65
  669. data/spec/mongoid/persistable/savable_spec.rb +152 -189
  670. data/spec/mongoid/persistable/settable_spec.rb +121 -145
  671. data/spec/mongoid/persistable/unsettable_spec.rb +56 -73
  672. data/spec/mongoid/persistable/updatable_spec.rb +185 -232
  673. data/spec/mongoid/persistable/upsertable_spec.rb +66 -77
  674. data/spec/mongoid/persistable_spec.rb +132 -139
  675. data/spec/mongoid/persistence_context_spec.rb +31 -89
  676. data/spec/mongoid/positional_spec.rb +67 -79
  677. data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +0 -3
  678. data/spec/mongoid/railties/console_sandbox_spec.rb +0 -1
  679. data/spec/mongoid/relations/proxy_spec.rb +0 -1
  680. data/spec/mongoid/reloadable_spec.rb +250 -145
  681. data/spec/mongoid/scopable_spec.rb +319 -398
  682. data/spec/mongoid/search_indexable_spec.rb +446 -41
  683. data/spec/mongoid/selectable_spec.rb +36 -51
  684. data/spec/mongoid/serializable_spec.rb +269 -312
  685. data/spec/mongoid/shardable_models.rb +5 -5
  686. data/spec/mongoid/shardable_spec.rb +44 -46
  687. data/spec/mongoid/stateful_spec.rb +55 -75
  688. data/spec/mongoid/tasks/database_rake_spec.rb +138 -141
  689. data/spec/mongoid/tasks/database_spec.rb +80 -80
  690. data/spec/mongoid/tasks/encryption_spec.rb +22 -20
  691. data/spec/mongoid/threaded_spec.rb +57 -83
  692. data/spec/mongoid/timestamps/created/short_spec.rb +12 -16
  693. data/spec/mongoid/timestamps/created_spec.rb +16 -20
  694. data/spec/mongoid/timestamps/timeless_spec.rb +31 -43
  695. data/spec/mongoid/timestamps/updated/short_spec.rb +21 -28
  696. data/spec/mongoid/timestamps/updated_spec.rb +18 -25
  697. data/spec/mongoid/timestamps_spec.rb +171 -188
  698. data/spec/mongoid/timestamps_spec_models.rb +12 -13
  699. data/spec/mongoid/touchable_spec.rb +330 -294
  700. data/spec/mongoid/touchable_spec_models.rb +35 -37
  701. data/spec/mongoid/traversable_spec.rb +435 -471
  702. data/spec/mongoid/validatable/associated_spec.rb +42 -60
  703. data/spec/mongoid/validatable/format_spec.rb +24 -34
  704. data/spec/mongoid/validatable/length_spec.rb +62 -86
  705. data/spec/mongoid/validatable/numericality_spec.rb +114 -23
  706. data/spec/mongoid/validatable/presence_spec.rb +149 -203
  707. data/spec/mongoid/validatable/uniqueness_spec.rb +632 -830
  708. data/spec/mongoid/validatable_spec.rb +71 -103
  709. data/spec/mongoid/warnings_spec.rb +5 -9
  710. data/spec/mongoid_spec.rb +25 -41
  711. data/spec/rails/controller_extension/controller_runtime_spec.rb +45 -49
  712. data/spec/rails/mongoid_spec.rb +15 -15
  713. data/spec/shared/lib/mrss/cluster_config.rb +5 -40
  714. data/spec/shared/lib/mrss/constraints.rb +7 -46
  715. data/spec/shared/lib/mrss/docker_runner.rb +10 -21
  716. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -31
  717. data/spec/shared/lib/mrss/release/candidate.rb +18 -12
  718. data/spec/shared/lib/mrss/server_version_registry.rb +1 -5
  719. data/spec/shared/share/Dockerfile.erb +6 -8
  720. data/spec/shared/shlib/server.sh +0 -50
  721. data/spec/shared/shlib/set_env.sh +4 -10
  722. data/spec/spec_helper.rb +54 -31
  723. data/spec/support/authorization.rb +0 -1
  724. data/spec/support/client_registry.rb +1 -2
  725. data/spec/support/constraints.rb +8 -25
  726. data/spec/support/crypt/models.rb +7 -8
  727. data/spec/support/crypt.rb +6 -9
  728. data/spec/support/expectations.rb +21 -7
  729. data/spec/support/feature_sandbox.rb +1 -4
  730. data/spec/support/helpers.rb +0 -1
  731. data/spec/support/immutable_ids.rb +20 -21
  732. data/spec/support/macros.rb +1 -3
  733. data/spec/support/models/account.rb +4 -5
  734. data/spec/support/models/acolyte.rb +5 -5
  735. data/spec/support/models/actor.rb +3 -3
  736. data/spec/support/models/actress.rb +0 -1
  737. data/spec/support/models/address.rb +11 -11
  738. data/spec/support/models/address_component.rb +1 -1
  739. data/spec/support/models/address_number.rb +1 -1
  740. data/spec/support/models/agency.rb +1 -1
  741. data/spec/support/models/agent.rb +1 -1
  742. data/spec/support/models/album.rb +1 -2
  743. data/spec/support/models/alert.rb +1 -1
  744. data/spec/support/models/animal.rb +4 -5
  745. data/spec/support/models/answer.rb +1 -1
  746. data/spec/support/models/appointment.rb +2 -2
  747. data/spec/support/models/armrest.rb +0 -1
  748. data/spec/support/models/array_field.rb +0 -1
  749. data/spec/support/models/article.rb +0 -1
  750. data/spec/support/models/artist.rb +16 -12
  751. data/spec/support/models/artwork.rb +1 -1
  752. data/spec/support/models/audible_sound.rb +0 -1
  753. data/spec/support/models/audio.rb +2 -2
  754. data/spec/support/models/augmentation.rb +1 -2
  755. data/spec/support/models/author.rb +1 -1
  756. data/spec/support/models/baby.rb +1 -1
  757. data/spec/support/models/band.rb +0 -1
  758. data/spec/support/models/bar.rb +2 -2
  759. data/spec/support/models/basic.rb +0 -1
  760. data/spec/support/models/bed.rb +0 -1
  761. data/spec/support/models/big_palette.rb +0 -1
  762. data/spec/support/models/birthday.rb +3 -5
  763. data/spec/support/models/bolt.rb +0 -1
  764. data/spec/support/models/bomb.rb +1 -1
  765. data/spec/support/models/book.rb +1 -1
  766. data/spec/support/models/breed.rb +1 -1
  767. data/spec/support/models/browser.rb +1 -2
  768. data/spec/support/models/building.rb +0 -1
  769. data/spec/support/models/building_address.rb +1 -1
  770. data/spec/support/models/bus.rb +1 -1
  771. data/spec/support/models/business.rb +2 -2
  772. data/spec/support/models/callback_test.rb +1 -1
  773. data/spec/support/models/canvas.rb +5 -6
  774. data/spec/support/models/car.rb +0 -1
  775. data/spec/support/models/cat.rb +0 -2
  776. data/spec/support/models/catalog.rb +0 -1
  777. data/spec/support/models/category.rb +1 -1
  778. data/spec/support/models/child.rb +1 -1
  779. data/spec/support/models/child_doc.rb +5 -6
  780. data/spec/support/models/church.rb +1 -1
  781. data/spec/support/models/circle.rb +0 -1
  782. data/spec/support/models/circuit.rb +2 -2
  783. data/spec/support/models/circus.rb +0 -1
  784. data/spec/support/models/code.rb +2 -1
  785. data/spec/support/models/coding/pull_request.rb +0 -1
  786. data/spec/support/models/coding.rb +0 -1
  787. data/spec/support/models/comment.rb +0 -1
  788. data/spec/support/models/company.rb +0 -1
  789. data/spec/support/models/consumption_period.rb +0 -1
  790. data/spec/support/models/contextable_item.rb +1 -1
  791. data/spec/support/models/contractor.rb +1 -1
  792. data/spec/support/models/cookie.rb +0 -1
  793. data/spec/support/models/country_code.rb +2 -3
  794. data/spec/support/models/courier_job.rb +2 -2
  795. data/spec/support/models/cover.rb +0 -1
  796. data/spec/support/models/crate.rb +0 -1
  797. data/spec/support/models/customer.rb +0 -1
  798. data/spec/support/models/customer_address.rb +0 -1
  799. data/spec/support/models/deed.rb +1 -1
  800. data/spec/support/models/definition.rb +1 -1
  801. data/spec/support/models/delegating_patient.rb +0 -1
  802. data/spec/support/models/description.rb +0 -1
  803. data/spec/support/models/dictionary.rb +1 -1
  804. data/spec/support/models/division.rb +2 -2
  805. data/spec/support/models/doctor.rb +0 -1
  806. data/spec/support/models/dog.rb +2 -2
  807. data/spec/support/models/dokument.rb +1 -1
  808. data/spec/support/models/draft.rb +0 -1
  809. data/spec/support/models/dragon.rb +1 -1
  810. data/spec/support/models/driver.rb +2 -2
  811. data/spec/support/models/drug.rb +1 -1
  812. data/spec/support/models/dungeon.rb +1 -1
  813. data/spec/support/models/edit.rb +1 -1
  814. data/spec/support/models/email.rb +1 -1
  815. data/spec/support/models/employer.rb +1 -2
  816. data/spec/support/models/entry.rb +1 -1
  817. data/spec/support/models/eraser.rb +0 -1
  818. data/spec/support/models/even.rb +1 -1
  819. data/spec/support/models/event.rb +3 -4
  820. data/spec/support/models/exhibition.rb +1 -1
  821. data/spec/support/models/exhibitor.rb +1 -1
  822. data/spec/support/models/explosion.rb +1 -1
  823. data/spec/support/models/eye.rb +0 -1
  824. data/spec/support/models/eye_bowl.rb +2 -3
  825. data/spec/support/models/face.rb +2 -3
  826. data/spec/support/models/fanatic.rb +1 -1
  827. data/spec/support/models/favorite.rb +1 -1
  828. data/spec/support/models/filesystem.rb +1 -1
  829. data/spec/support/models/fire_hydrant.rb +1 -1
  830. data/spec/support/models/firefox.rb +0 -1
  831. data/spec/support/models/fish.rb +0 -1
  832. data/spec/support/models/folder.rb +0 -2
  833. data/spec/support/models/folder_item.rb +1 -3
  834. data/spec/support/models/fruits.rb +9 -5
  835. data/spec/support/models/game.rb +3 -4
  836. data/spec/support/models/ghost.rb +0 -1
  837. data/spec/support/models/guitar.rb +0 -1
  838. data/spec/support/models/hole.rb +0 -1
  839. data/spec/support/models/home.rb +1 -1
  840. data/spec/support/models/house.rb +2 -2
  841. data/spec/support/models/html_writer.rb +0 -1
  842. data/spec/support/models/id_key.rb +3 -3
  843. data/spec/support/models/idnodef.rb +0 -1
  844. data/spec/support/models/image.rb +0 -1
  845. data/spec/support/models/implant.rb +1 -2
  846. data/spec/support/models/instrument.rb +2 -3
  847. data/spec/support/models/item.rb +2 -2
  848. data/spec/support/models/jar.rb +1 -2
  849. data/spec/support/models/kaleidoscope.rb +1 -1
  850. data/spec/support/models/kangaroo.rb +1 -1
  851. data/spec/support/models/label.rb +2 -2
  852. data/spec/support/models/language.rb +1 -1
  853. data/spec/support/models/lat_lng.rb +0 -1
  854. data/spec/support/models/league.rb +1 -1
  855. data/spec/support/models/learner.rb +0 -1
  856. data/spec/support/models/line_item.rb +1 -1
  857. data/spec/support/models/location.rb +1 -1
  858. data/spec/support/models/login.rb +1 -2
  859. data/spec/support/models/manufacturer.rb +0 -1
  860. data/spec/support/models/meat.rb +1 -1
  861. data/spec/support/models/membership.rb +1 -1
  862. data/spec/support/models/message.rb +1 -2
  863. data/spec/support/models/minim.rb +0 -1
  864. data/spec/support/models/mixed_drink.rb +1 -1
  865. data/spec/support/models/modifier_models.rb +25 -0
  866. data/spec/support/models/mop.rb +0 -1
  867. data/spec/support/models/movie.rb +1 -1
  868. data/spec/support/models/my_hash.rb +1 -2
  869. data/spec/support/models/name.rb +4 -5
  870. data/spec/support/models/name_only.rb +0 -1
  871. data/spec/support/models/node.rb +1 -1
  872. data/spec/support/models/note.rb +3 -3
  873. data/spec/support/models/nut.rb +0 -1
  874. data/spec/support/models/odd.rb +1 -1
  875. data/spec/support/models/order.rb +1 -1
  876. data/spec/support/models/ordered_post.rb +1 -1
  877. data/spec/support/models/ordered_preference.rb +1 -1
  878. data/spec/support/models/oscar.rb +1 -1
  879. data/spec/support/models/other_owner_object.rb +0 -1
  880. data/spec/support/models/override.rb +3 -11
  881. data/spec/support/models/ownable.rb +1 -1
  882. data/spec/support/models/owner.rb +1 -1
  883. data/spec/support/models/pack.rb +0 -1
  884. data/spec/support/models/page.rb +3 -3
  885. data/spec/support/models/page_question.rb +1 -1
  886. data/spec/support/models/palette.rb +2 -2
  887. data/spec/support/models/parent.rb +2 -2
  888. data/spec/support/models/parent_doc.rb +1 -1
  889. data/spec/support/models/passport.rb +0 -1
  890. data/spec/support/models/patient.rb +2 -2
  891. data/spec/support/models/pdf_writer.rb +0 -1
  892. data/spec/support/models/pencil.rb +0 -1
  893. data/spec/support/models/person.rb +32 -28
  894. data/spec/support/models/pet.rb +1 -1
  895. data/spec/support/models/pet_owner.rb +1 -1
  896. data/spec/support/models/phone.rb +1 -2
  897. data/spec/support/models/piano.rb +0 -1
  898. data/spec/support/models/pizza.rb +1 -1
  899. data/spec/support/models/player.rb +5 -5
  900. data/spec/support/models/post.rb +12 -12
  901. data/spec/support/models/post_genre.rb +1 -1
  902. data/spec/support/models/powerup.rb +1 -2
  903. data/spec/support/models/preference.rb +2 -2
  904. data/spec/support/models/princess.rb +1 -1
  905. data/spec/support/models/product.rb +3 -3
  906. data/spec/support/models/profile.rb +2 -1
  907. data/spec/support/models/pronunciation.rb +1 -1
  908. data/spec/support/models/pub.rb +2 -2
  909. data/spec/support/models/publication/encyclopedia.rb +0 -1
  910. data/spec/support/models/publication/review.rb +0 -1
  911. data/spec/support/models/publication.rb +0 -1
  912. data/spec/support/models/purchase.rb +1 -1
  913. data/spec/support/models/purchased_item.rb +1 -1
  914. data/spec/support/models/question.rb +2 -2
  915. data/spec/support/models/quiz.rb +1 -1
  916. data/spec/support/models/rating.rb +1 -1
  917. data/spec/support/models/record.rb +2 -3
  918. data/spec/support/models/registry.rb +1 -1
  919. data/spec/support/models/role.rb +1 -1
  920. data/spec/support/models/root_category.rb +1 -1
  921. data/spec/support/models/sandbox/app/models/app_models_message.rb +0 -1
  922. data/spec/support/models/sandbox/lib/models/lib_models_message.rb +0 -1
  923. data/spec/support/models/sandbox/sandbox_message.rb +0 -1
  924. data/spec/support/models/sandbox/sandbox_user.rb +0 -1
  925. data/spec/support/models/sandbox/subdir/sandbox_comment.rb +0 -1
  926. data/spec/support/models/sandwich.rb +1 -1
  927. data/spec/support/models/scheduler.rb +0 -1
  928. data/spec/support/models/school.rb +0 -1
  929. data/spec/support/models/scribe.rb +1 -1
  930. data/spec/support/models/sealer.rb +0 -1
  931. data/spec/support/models/seat.rb +0 -1
  932. data/spec/support/models/seo.rb +1 -1
  933. data/spec/support/models/series.rb +1 -1
  934. data/spec/support/models/server.rb +1 -1
  935. data/spec/support/models/service.rb +2 -2
  936. data/spec/support/models/shape.rb +3 -3
  937. data/spec/support/models/shelf.rb +1 -1
  938. data/spec/support/models/shield.rb +2 -2
  939. data/spec/support/models/shipment_address.rb +0 -1
  940. data/spec/support/models/shipping_container.rb +1 -1
  941. data/spec/support/models/shipping_pack.rb +0 -1
  942. data/spec/support/models/shirt.rb +0 -1
  943. data/spec/support/models/shop.rb +2 -2
  944. data/spec/support/models/short_agent.rb +0 -1
  945. data/spec/support/models/short_quiz.rb +1 -1
  946. data/spec/support/models/simple.rb +1 -1
  947. data/spec/support/models/slave.rb +1 -1
  948. data/spec/support/models/song.rb +1 -2
  949. data/spec/support/models/sound.rb +2 -2
  950. data/spec/support/models/spacer.rb +0 -1
  951. data/spec/support/models/square.rb +0 -1
  952. data/spec/support/models/staff.rb +0 -1
  953. data/spec/support/models/store_as_dup_test1.rb +2 -2
  954. data/spec/support/models/store_as_dup_test2.rb +1 -1
  955. data/spec/support/models/store_as_dup_test3.rb +2 -2
  956. data/spec/support/models/store_as_dup_test4.rb +1 -1
  957. data/spec/support/models/strategy.rb +0 -1
  958. data/spec/support/models/student.rb +1 -2
  959. data/spec/support/models/sub_item.rb +0 -1
  960. data/spec/support/models/subscription.rb +2 -2
  961. data/spec/support/models/survey.rb +2 -2
  962. data/spec/support/models/symptom.rb +2 -2
  963. data/spec/support/models/system_role.rb +2 -3
  964. data/spec/support/models/tag.rb +2 -2
  965. data/spec/support/models/target.rb +1 -1
  966. data/spec/support/models/template.rb +1 -1
  967. data/spec/support/models/thing.rb +1 -1
  968. data/spec/support/models/threadlocker.rb +0 -1
  969. data/spec/support/models/title.rb +0 -1
  970. data/spec/support/models/tool.rb +3 -3
  971. data/spec/support/models/topping.rb +1 -1
  972. data/spec/support/models/toy.rb +0 -1
  973. data/spec/support/models/track.rb +1 -1
  974. data/spec/support/models/translation.rb +1 -1
  975. data/spec/support/models/tree.rb +2 -3
  976. data/spec/support/models/truck.rb +0 -1
  977. data/spec/support/models/updatable.rb +0 -1
  978. data/spec/support/models/user.rb +3 -4
  979. data/spec/support/models/user_account.rb +3 -3
  980. data/spec/support/models/validation_callback.rb +4 -4
  981. data/spec/support/models/vehicle.rb +2 -3
  982. data/spec/support/models/version.rb +1 -1
  983. data/spec/support/models/vertex.rb +0 -1
  984. data/spec/support/models/vet_visit.rb +1 -1
  985. data/spec/support/models/video.rb +2 -2
  986. data/spec/support/models/video_game.rb +0 -1
  987. data/spec/support/models/washer.rb +0 -1
  988. data/spec/support/models/weapon.rb +1 -2
  989. data/spec/support/models/wiki_page.rb +2 -3
  990. data/spec/support/models/word.rb +2 -2
  991. data/spec/support/models/word_origin.rb +1 -2
  992. data/spec/support/models/writer.rb +3 -3
  993. data/spec/support/rails_mock.rb +7 -12
  994. data/spec/support/shared/time.rb +0 -1
  995. data/spec/support/sinatra_mock.rb +4 -2
  996. data/spec/support/spec_config.rb +19 -18
  997. metadata +14 -2
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
- require "spec_helper"
3
+ require 'spec_helper'
5
4
 
6
5
  describe Mongoid::Association::Options do
7
-
8
6
  STORES_FOREIGN_KEY =
9
7
  [
10
8
  Mongoid::Association::Referenced::HasAndBelongsToMany,
@@ -20,9 +18,7 @@ describe Mongoid::Association::Options do
20
18
  Mongoid::Association::Referenced::HasOne,
21
19
  Mongoid::Association::Referenced::HasAndBelongsToMany
22
20
  ].each do |association_class|
23
-
24
21
  context "when the association type is #{association_class}" do
25
-
26
22
  let(:class_left) do
27
23
  class ClassLeft; include Mongoid::Document; end
28
24
  ClassLeft
@@ -42,14 +38,12 @@ describe Mongoid::Association::Options do
42
38
  end
43
39
 
44
40
  describe 'the :as option' do
45
-
46
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:as) do
47
-
41
+ context 'when the option is supported by the association type',
42
+ if: association_class::VALID_OPTIONS.include?(:as) do
48
43
  context 'when :as is in the options' do
49
-
50
44
  let(:options) do
51
45
  {
52
- as: :nameable
46
+ as: :nameable
53
47
  }
54
48
  end
55
49
 
@@ -59,47 +53,42 @@ describe Mongoid::Association::Options do
59
53
  end
60
54
 
61
55
  context 'when :as is not in the options' do
62
-
63
56
  it 'returns nil' do
64
57
  expect(association.as).to be_nil
65
58
  end
66
59
  end
67
60
  end
68
61
 
69
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:as) do
70
-
62
+ context 'when the option is not supported by the association type',
63
+ if: !association_class::VALID_OPTIONS.include?(:as) do
71
64
  it 'returns nil' do
72
65
  expect(association.as).to be_nil
73
66
  end
74
67
 
75
68
  context 'when the option is provided' do
76
-
77
69
  let(:options) do
78
70
  {
79
- as: :nameable
71
+ as: :nameable
80
72
  }
81
73
  end
82
74
 
83
75
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
84
- expect {
76
+ expect do
85
77
  association
86
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
78
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
87
79
  end
88
80
  end
89
81
  end
90
82
  end
91
83
 
92
84
  describe '#autobuilding?' do
93
-
94
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:autobuild) do
95
-
85
+ context 'when the option is supported by the association type',
86
+ if: association_class::VALID_OPTIONS.include?(:autobuild) do
96
87
  context 'when :autobuild is in the options' do
97
-
98
88
  context 'when :autobuild is true' do
99
-
100
89
  let(:options) do
101
90
  {
102
- autobuild: true
91
+ autobuild: true
103
92
  }
104
93
  end
105
94
 
@@ -109,10 +98,9 @@ describe Mongoid::Association::Options do
109
98
  end
110
99
 
111
100
  context 'when :autobuild is false' do
112
-
113
101
  let(:options) do
114
102
  {
115
- autobuild: false
103
+ autobuild: false
116
104
  }
117
105
  end
118
106
 
@@ -122,10 +110,9 @@ describe Mongoid::Association::Options do
122
110
  end
123
111
 
124
112
  context 'when :autobuild is nil' do
125
-
126
113
  let(:options) do
127
114
  {
128
- autobuild: nil
115
+ autobuild: nil
129
116
  }
130
117
  end
131
118
 
@@ -136,47 +123,42 @@ describe Mongoid::Association::Options do
136
123
  end
137
124
 
138
125
  context 'when :autobuild is not in the options' do
139
-
140
126
  it 'returns false' do
141
127
  expect(association.autobuilding?).to be(false)
142
128
  end
143
129
  end
144
130
  end
145
131
 
146
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:autobuild) do
147
-
132
+ context 'when the option is not supported by the association type',
133
+ if: !association_class::VALID_OPTIONS.include?(:autobuild) do
148
134
  it 'returns false' do
149
135
  expect(association.autobuilding?).to be(false)
150
136
  end
151
137
 
152
138
  context 'when the option is provided' do
153
-
154
139
  let(:options) do
155
140
  {
156
- autobuild: false
141
+ autobuild: false
157
142
  }
158
143
  end
159
144
 
160
145
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
161
- expect {
146
+ expect do
162
147
  association
163
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
148
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
164
149
  end
165
150
  end
166
151
  end
167
152
  end
168
153
 
169
154
  describe '#autosave?' do
170
-
171
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:autosave) do
172
-
155
+ context 'when the option is supported by the association type',
156
+ if: association_class::VALID_OPTIONS.include?(:autosave) do
173
157
  context 'when :autosave is in the options' do
174
-
175
158
  context 'when :autosave is true' do
176
-
177
159
  let(:options) do
178
160
  {
179
- autosave: true
161
+ autosave: true
180
162
  }
181
163
  end
182
164
 
@@ -186,10 +168,9 @@ describe Mongoid::Association::Options do
186
168
  end
187
169
 
188
170
  context 'when :autosave is false' do
189
-
190
171
  let(:options) do
191
172
  {
192
- autosave: false
173
+ autosave: false
193
174
  }
194
175
  end
195
176
 
@@ -199,10 +180,9 @@ describe Mongoid::Association::Options do
199
180
  end
200
181
 
201
182
  context 'when :autosave is nil' do
202
-
203
183
  let(:options) do
204
184
  {
205
- autosave: nil
185
+ autosave: nil
206
186
  }
207
187
  end
208
188
 
@@ -213,45 +193,41 @@ describe Mongoid::Association::Options do
213
193
  end
214
194
 
215
195
  context 'when :autosave is not in the options' do
216
-
217
196
  it 'returns false' do
218
197
  expect(association.autosave?).to be(false)
219
198
  end
220
199
  end
221
200
  end
222
201
 
223
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:autosave) do
224
-
202
+ context 'when the option is not supported by the association type',
203
+ if: !association_class::VALID_OPTIONS.include?(:autosave) do
225
204
  it 'returns false' do
226
205
  expect(association.autosave?).to be(false)
227
206
  end
228
207
 
229
208
  context 'when the option is provided' do
230
-
231
209
  let(:options) do
232
210
  {
233
- autosave: false
211
+ autosave: false
234
212
  }
235
213
  end
236
214
 
237
215
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
238
- expect {
216
+ expect do
239
217
  association
240
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
218
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
241
219
  end
242
220
  end
243
221
  end
244
222
  end
245
223
 
246
224
  describe 'the :dependent option' do
247
-
248
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:dependent) do
249
-
225
+ context 'when the option is supported by the association type',
226
+ if: association_class::VALID_OPTIONS.include?(:dependent) do
250
227
  context 'when :dependent is in the options' do
251
-
252
228
  let(:options) do
253
229
  {
254
- dependent: :delete_all
230
+ dependent: :delete_all
255
231
  }
256
232
  end
257
233
 
@@ -261,45 +237,41 @@ describe Mongoid::Association::Options do
261
237
  end
262
238
 
263
239
  context 'when :dependent is not in the options' do
264
-
265
240
  it 'returns nil' do
266
241
  expect(association.dependent).to be_nil
267
242
  end
268
243
  end
269
244
  end
270
245
 
271
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:dependent) do
272
-
246
+ context 'when the option is not supported by the association type',
247
+ if: !association_class::VALID_OPTIONS.include?(:dependent) do
273
248
  it 'returns nil' do
274
249
  expect(association.dependent).to be_nil
275
250
  end
276
251
 
277
252
  context 'when the option is provided' do
278
-
279
253
  let(:options) do
280
254
  {
281
- dependent: :delete_all
255
+ dependent: :delete_all
282
256
  }
283
257
  end
284
258
 
285
259
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
286
- expect {
260
+ expect do
287
261
  association
288
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
262
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
289
263
  end
290
264
  end
291
265
  end
292
266
  end
293
267
 
294
268
  describe 'the :foreign_key option' do
295
-
296
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:foreign_key) do
297
-
269
+ context 'when the option is supported by the association type',
270
+ if: association_class::VALID_OPTIONS.include?(:foreign_key) do
298
271
  context 'when the :foreign_key option is specified' do
299
-
300
272
  let(:options) do
301
273
  {
302
- foreign_key: :some_field
274
+ foreign_key: :some_field
303
275
  }
304
276
  end
305
277
 
@@ -310,9 +282,7 @@ describe Mongoid::Association::Options do
310
282
 
311
283
  context 'when the association stores the foreign key', if: association_class::VALID_OPTIONS.include?(:foreign_key) &&
312
284
  STORES_FOREIGN_KEY.include?(association_class) do
313
-
314
285
  context 'when :foreign_key option is not specified' do
315
-
316
286
  it 'returns the name followed by the foreign_key_suffix' do
317
287
  expect(association.foreign_key).to eq("name#{association.class::FOREIGN_KEY_SUFFIX}")
318
288
  end
@@ -321,9 +291,7 @@ describe Mongoid::Association::Options do
321
291
 
322
292
  context 'when the association does not store the foreign key', if: association_class::VALID_OPTIONS.include?(:foreign_key) &&
323
293
  !STORES_FOREIGN_KEY.include?(association_class) do
324
-
325
294
  context 'when :foreign_key option is not specified' do
326
-
327
295
  before do
328
296
  allow(association).to receive(:inverse).and_return(:other)
329
297
  end
@@ -335,38 +303,35 @@ describe Mongoid::Association::Options do
335
303
  end
336
304
  end
337
305
 
338
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:foreign_key) do
339
-
306
+ context 'when the option is not supported by the association type',
307
+ if: !association_class::VALID_OPTIONS.include?(:foreign_key) do
340
308
  it 'returns nil' do
341
309
  expect(association.dependent).to be_nil
342
310
  end
343
311
 
344
312
  context 'when the option is provided' do
345
-
346
313
  let(:options) do
347
314
  {
348
- foreign_key: :some_field
315
+ foreign_key: :some_field
349
316
  }
350
317
  end
351
318
 
352
319
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
353
- expect {
320
+ expect do
354
321
  association
355
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
322
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
356
323
  end
357
324
  end
358
325
  end
359
326
  end
360
327
 
361
328
  describe 'the :primary_key option' do
362
-
363
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:primary_key) do
364
-
329
+ context 'when the option is supported by the association type',
330
+ if: association_class::VALID_OPTIONS.include?(:primary_key) do
365
331
  context 'when the option is specified' do
366
-
367
332
  let(:options) do
368
333
  {
369
- primary_key: :other_id
334
+ primary_key: :other_id
370
335
  }
371
336
  end
372
337
 
@@ -376,45 +341,41 @@ describe Mongoid::Association::Options do
376
341
  end
377
342
 
378
343
  context 'when the option is not specified' do
379
-
380
344
  it 'returns the default primary key' do
381
345
  expect(association.primary_key).to eq(Mongoid::Association::Relatable::PRIMARY_KEY_DEFAULT)
382
346
  end
383
347
  end
384
348
  end
385
349
 
386
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:primary_key) do
387
-
350
+ context 'when the option is not supported by the association type',
351
+ if: !association_class::VALID_OPTIONS.include?(:primary_key) do
388
352
  it 'returns nil' do
389
353
  expect(association.primary_key).to be_nil
390
354
  end
391
355
 
392
356
  context 'when the option is provided' do
393
-
394
357
  let(:options) do
395
358
  {
396
- primary_key: :other_id
359
+ primary_key: :other_id
397
360
  }
398
361
  end
399
362
 
400
363
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
401
- expect {
364
+ expect do
402
365
  association
403
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
366
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
404
367
  end
405
368
  end
406
369
  end
407
370
  end
408
371
 
409
372
  describe 'the :after_add option' do
410
-
411
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:after_add) do
412
-
373
+ context 'when the option is supported by the association type',
374
+ if: association_class::VALID_OPTIONS.include?(:after_add) do
413
375
  context 'when the :after_add option is specified' do
414
-
415
376
  let(:options) do
416
377
  {
417
- after_add: :method_name
378
+ after_add: :method_name
418
379
  }
419
380
  end
420
381
 
@@ -424,46 +385,41 @@ describe Mongoid::Association::Options do
424
385
  end
425
386
 
426
387
  context 'when the :after_add option is not specified' do
427
-
428
388
  it 'returns nil' do
429
389
  expect(association.get_callbacks(:after_add)).to be_empty
430
390
  end
431
391
  end
432
392
  end
433
393
 
434
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:after_add) do
435
-
436
-
394
+ context 'when the option is not supported by the association type',
395
+ if: !association_class::VALID_OPTIONS.include?(:after_add) do
437
396
  it 'returns nil' do
438
397
  expect(association.get_callbacks(:after_add)).to be_empty
439
398
  end
440
399
 
441
400
  context 'when the option is provided' do
442
-
443
401
  let(:options) do
444
402
  {
445
- after_add: :method_name
403
+ after_add: :method_name
446
404
  }
447
405
  end
448
406
 
449
407
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
450
- expect {
408
+ expect do
451
409
  association
452
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
410
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
453
411
  end
454
412
  end
455
413
  end
456
414
  end
457
415
 
458
416
  describe 'the :after_remove option' do
459
-
460
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:after_remove) do
461
-
417
+ context 'when the option is supported by the association type',
418
+ if: association_class::VALID_OPTIONS.include?(:after_remove) do
462
419
  context 'when the :after_remove option is specified' do
463
-
464
420
  let(:options) do
465
421
  {
466
- after_remove: :method_name
422
+ after_remove: :method_name
467
423
  }
468
424
  end
469
425
 
@@ -473,46 +429,41 @@ describe Mongoid::Association::Options do
473
429
  end
474
430
 
475
431
  context 'when the :after_remove option is not specified' do
476
-
477
432
  it 'returns nil' do
478
433
  expect(association.get_callbacks(:after_remove)).to be_empty
479
434
  end
480
435
  end
481
436
  end
482
437
 
483
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:after_remove) do
484
-
485
-
438
+ context 'when the option is not supported by the association type',
439
+ if: !association_class::VALID_OPTIONS.include?(:after_remove) do
486
440
  it 'returns nil' do
487
441
  expect(association.get_callbacks(:after_remove)).to be_empty
488
442
  end
489
443
 
490
444
  context 'when the option is provided' do
491
-
492
445
  let(:options) do
493
446
  {
494
- after_remove: :method_name
447
+ after_remove: :method_name
495
448
  }
496
449
  end
497
450
 
498
451
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
499
- expect {
452
+ expect do
500
453
  association
501
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
454
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
502
455
  end
503
456
  end
504
457
  end
505
458
  end
506
459
 
507
460
  describe 'the :before_add option' do
508
-
509
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:before_add) do
510
-
461
+ context 'when the option is supported by the association type',
462
+ if: association_class::VALID_OPTIONS.include?(:before_add) do
511
463
  context 'when the :before_add option is specified' do
512
-
513
464
  let(:options) do
514
465
  {
515
- before_add: :method_name
466
+ before_add: :method_name
516
467
  }
517
468
  end
518
469
 
@@ -522,46 +473,41 @@ describe Mongoid::Association::Options do
522
473
  end
523
474
 
524
475
  context 'when the :before_add option is not specified' do
525
-
526
476
  it 'returns nil' do
527
477
  expect(association.get_callbacks(:before_add)).to be_empty
528
478
  end
529
479
  end
530
480
  end
531
481
 
532
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:before_add) do
533
-
534
-
482
+ context 'when the option is not supported by the association type',
483
+ if: !association_class::VALID_OPTIONS.include?(:before_add) do
535
484
  it 'returns nil' do
536
485
  expect(association.get_callbacks(:before_add)).to be_empty
537
486
  end
538
487
 
539
488
  context 'when the option is provided' do
540
-
541
489
  let(:options) do
542
490
  {
543
- before_add: :method_name
491
+ before_add: :method_name
544
492
  }
545
493
  end
546
494
 
547
495
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
548
- expect {
496
+ expect do
549
497
  association
550
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
498
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
551
499
  end
552
500
  end
553
501
  end
554
502
  end
555
503
 
556
504
  describe 'the :before_remove option' do
557
-
558
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:before_remove) do
559
-
505
+ context 'when the option is supported by the association type',
506
+ if: association_class::VALID_OPTIONS.include?(:before_remove) do
560
507
  context 'when the :before_remove option is specified' do
561
-
562
508
  let(:options) do
563
509
  {
564
- before_remove: :method_name
510
+ before_remove: :method_name
565
511
  }
566
512
  end
567
513
 
@@ -571,49 +517,42 @@ describe Mongoid::Association::Options do
571
517
  end
572
518
 
573
519
  context 'when the :before_remove option is not specified' do
574
-
575
520
  it 'returns nil' do
576
521
  expect(association.get_callbacks(:before_remove)).to be_empty
577
522
  end
578
523
  end
579
524
  end
580
525
 
581
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:before_remove) do
582
-
583
-
526
+ context 'when the option is not supported by the association type',
527
+ if: !association_class::VALID_OPTIONS.include?(:before_remove) do
584
528
  it 'returns nil' do
585
529
  expect(association.get_callbacks(:before_remove)).to be_empty
586
530
  end
587
531
 
588
532
  context 'when the option is provided' do
589
-
590
533
  let(:options) do
591
534
  {
592
- before_remove: :method_name
535
+ before_remove: :method_name
593
536
  }
594
537
  end
595
538
 
596
539
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
597
- expect {
540
+ expect do
598
541
  association
599
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
542
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
600
543
  end
601
544
  end
602
545
  end
603
546
  end
604
547
 
605
-
606
548
  describe '#indexed?' do
607
-
608
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:index) do
609
-
549
+ context 'when the option is supported by the association type',
550
+ if: association_class::VALID_OPTIONS.include?(:index) do
610
551
  context 'when :index is in the options' do
611
-
612
552
  context 'when :index is true' do
613
-
614
553
  let(:options) do
615
554
  {
616
- index: true
555
+ index: true
617
556
  }
618
557
  end
619
558
 
@@ -623,10 +562,9 @@ describe Mongoid::Association::Options do
623
562
  end
624
563
 
625
564
  context 'when :index is false' do
626
-
627
565
  let(:options) do
628
566
  {
629
- index: false
567
+ index: false
630
568
  }
631
569
  end
632
570
 
@@ -636,10 +574,9 @@ describe Mongoid::Association::Options do
636
574
  end
637
575
 
638
576
  context 'when :index is nil' do
639
-
640
577
  let(:options) do
641
578
  {
642
- index: nil
579
+ index: nil
643
580
  }
644
581
  end
645
582
 
@@ -650,45 +587,41 @@ describe Mongoid::Association::Options do
650
587
  end
651
588
 
652
589
  context 'when :index is not in the options' do
653
-
654
590
  it 'returns false' do
655
591
  expect(association.indexed?).to be(false)
656
592
  end
657
593
  end
658
594
  end
659
595
 
660
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:index) do
661
-
596
+ context 'when the option is not supported by the association type',
597
+ if: !association_class::VALID_OPTIONS.include?(:index) do
662
598
  it 'returns false' do
663
599
  expect(association.indexed?).to be(false)
664
600
  end
665
601
 
666
602
  context 'when the option is provided' do
667
-
668
603
  let(:options) do
669
604
  {
670
- index: true
605
+ index: true
671
606
  }
672
607
  end
673
608
 
674
609
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
675
- expect {
610
+ expect do
676
611
  association
677
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
612
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
678
613
  end
679
614
  end
680
615
  end
681
616
  end
682
617
 
683
618
  describe 'the :order option' do
684
-
685
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:order) do
686
-
619
+ context 'when the option is supported by the association type',
620
+ if: association_class::VALID_OPTIONS.include?(:order) do
687
621
  context 'when :order is in the options' do
688
-
689
622
  let(:options) do
690
623
  {
691
- order: :rating.desc
624
+ order: :rating.desc
692
625
  }
693
626
  end
694
627
 
@@ -698,47 +631,42 @@ describe Mongoid::Association::Options do
698
631
  end
699
632
 
700
633
  context 'when :order is not in the options' do
701
-
702
634
  it 'returns nil' do
703
635
  expect(association.order).to be_nil
704
636
  end
705
637
  end
706
638
  end
707
639
 
708
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:order) do
709
-
640
+ context 'when the option is not supported by the association type',
641
+ if: !association_class::VALID_OPTIONS.include?(:order) do
710
642
  it 'returns nil' do
711
643
  expect(association.order).to be_nil
712
644
  end
713
645
 
714
646
  context 'when the option is provided' do
715
-
716
647
  let(:options) do
717
648
  {
718
- order: :rating.desc
649
+ order: :rating.desc
719
650
  }
720
651
  end
721
652
 
722
653
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
723
- expect {
654
+ expect do
724
655
  association
725
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
656
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
726
657
  end
727
658
  end
728
659
  end
729
660
  end
730
661
 
731
662
  describe '#polymorphic' do
732
-
733
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:polymorphic) do
734
-
663
+ context 'when the option is supported by the association type',
664
+ if: association_class::VALID_OPTIONS.include?(:polymorphic) do
735
665
  context 'when :polymorphic is in the options' do
736
-
737
666
  context 'when :polymorphic is true' do
738
-
739
667
  let(:options) do
740
668
  {
741
- polymorphic: true
669
+ polymorphic: true
742
670
  }
743
671
  end
744
672
 
@@ -748,10 +676,9 @@ describe Mongoid::Association::Options do
748
676
  end
749
677
 
750
678
  context 'when :polymorphic is false' do
751
-
752
679
  let(:options) do
753
680
  {
754
- polymorphic: false
681
+ polymorphic: false
755
682
  }
756
683
  end
757
684
 
@@ -761,10 +688,9 @@ describe Mongoid::Association::Options do
761
688
  end
762
689
 
763
690
  context 'when :polymorphic is nil' do
764
-
765
691
  let(:options) do
766
692
  {
767
- polymorphic: nil
693
+ polymorphic: nil
768
694
  }
769
695
  end
770
696
 
@@ -775,47 +701,42 @@ describe Mongoid::Association::Options do
775
701
  end
776
702
 
777
703
  context 'when :polymorphic is not in the options' do
778
-
779
704
  it 'returns false' do
780
705
  expect(association.polymorphic?).to be(false)
781
706
  end
782
707
  end
783
708
  end
784
709
 
785
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:polymorphic) do
786
-
710
+ context 'when the option is not supported by the association type',
711
+ if: !association_class::VALID_OPTIONS.include?(:polymorphic) do
787
712
  it 'returns false' do
788
713
  expect(association.polymorphic?).to be(false)
789
714
  end
790
715
 
791
716
  context 'when the option is provided' do
792
-
793
717
  let(:options) do
794
718
  {
795
- polymorphic: true
719
+ polymorphic: true
796
720
  }
797
721
  end
798
722
 
799
723
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
800
- expect {
724
+ expect do
801
725
  association
802
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
726
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
803
727
  end
804
728
  end
805
729
  end
806
730
  end
807
731
 
808
732
  describe '#cascading_callbacks?' do
809
-
810
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
811
-
733
+ context 'when the option is supported by the association type',
734
+ if: association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
812
735
  context 'when :cascade_callbacks is in the options' do
813
-
814
736
  context 'when :cascade_callbacks is true' do
815
-
816
737
  let(:options) do
817
738
  {
818
- cascade_callbacks: true
739
+ cascade_callbacks: true
819
740
  }
820
741
  end
821
742
 
@@ -825,10 +746,9 @@ describe Mongoid::Association::Options do
825
746
  end
826
747
 
827
748
  context 'when :cascade_callbacks is false' do
828
-
829
749
  let(:options) do
830
750
  {
831
- cascade_callbacks: false
751
+ cascade_callbacks: false
832
752
  }
833
753
  end
834
754
 
@@ -838,10 +758,9 @@ describe Mongoid::Association::Options do
838
758
  end
839
759
 
840
760
  context 'when :cascade_callbacks is nil' do
841
-
842
761
  let(:options) do
843
762
  {
844
- cascade_callbacks: nil
763
+ cascade_callbacks: nil
845
764
  }
846
765
  end
847
766
 
@@ -852,47 +771,42 @@ describe Mongoid::Association::Options do
852
771
  end
853
772
 
854
773
  context 'when :cascade_callbacks is not in the options' do
855
-
856
774
  it 'returns false' do
857
775
  expect(association.cascading_callbacks?).to be(false)
858
776
  end
859
777
  end
860
778
  end
861
779
 
862
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
863
-
780
+ context 'when the option is not supported by the association type',
781
+ if: !association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
864
782
  it 'returns false' do
865
783
  expect(association.cascading_callbacks?).to be(false)
866
784
  end
867
785
 
868
786
  context 'when the option is provided' do
869
-
870
787
  let(:options) do
871
788
  {
872
- cascade_callbacks: true
789
+ cascade_callbacks: true
873
790
  }
874
791
  end
875
792
 
876
793
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
877
- expect {
794
+ expect do
878
795
  association
879
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
796
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
880
797
  end
881
798
  end
882
799
  end
883
800
  end
884
801
 
885
802
  describe '#cyclic?' do
886
-
887
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:cyclic) do
888
-
803
+ context 'when the option is supported by the association type',
804
+ if: association_class::VALID_OPTIONS.include?(:cyclic) do
889
805
  context 'when :cyclic is in the options' do
890
-
891
806
  context 'when :cyclic is true' do
892
-
893
807
  let(:options) do
894
808
  {
895
- cyclic: true
809
+ cyclic: true
896
810
  }
897
811
  end
898
812
 
@@ -902,10 +816,9 @@ describe Mongoid::Association::Options do
902
816
  end
903
817
 
904
818
  context 'when :cyclic is false' do
905
-
906
819
  let(:options) do
907
820
  {
908
- cyclic: false
821
+ cyclic: false
909
822
  }
910
823
  end
911
824
 
@@ -915,10 +828,9 @@ describe Mongoid::Association::Options do
915
828
  end
916
829
 
917
830
  context 'when :cyclic is nil' do
918
-
919
831
  let(:options) do
920
832
  {
921
- cyclic: nil
833
+ cyclic: nil
922
834
  }
923
835
  end
924
836
 
@@ -929,45 +841,41 @@ describe Mongoid::Association::Options do
929
841
  end
930
842
 
931
843
  context 'when :cyclic is not in the options' do
932
-
933
844
  it 'returns false' do
934
845
  expect(association.cyclic?).to be(false)
935
846
  end
936
847
  end
937
848
  end
938
849
 
939
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:cyclic) do
940
-
850
+ context 'when the option is not supported by the association type',
851
+ if: !association_class::VALID_OPTIONS.include?(:cyclic) do
941
852
  it 'returns false' do
942
853
  expect(association.cyclic?).to be(false)
943
854
  end
944
855
 
945
856
  context 'when the option is provided' do
946
-
947
857
  let(:options) do
948
858
  {
949
- cyclic: true
859
+ cyclic: true
950
860
  }
951
861
  end
952
862
 
953
863
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
954
- expect {
864
+ expect do
955
865
  association
956
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
866
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
957
867
  end
958
868
  end
959
869
  end
960
870
  end
961
871
 
962
872
  describe 'the :store_as option' do
963
-
964
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:store_as) do
965
-
873
+ context 'when the option is supported by the association type',
874
+ if: association_class::VALID_OPTIONS.include?(:store_as) do
966
875
  context 'when :store_as is in the options' do
967
-
968
876
  let(:options) do
969
877
  {
970
- store_as: :another_name
878
+ store_as: :another_name
971
879
  }
972
880
  end
973
881
 
@@ -977,45 +885,41 @@ describe Mongoid::Association::Options do
977
885
  end
978
886
 
979
887
  context 'when :store_as is not in the options' do
980
-
981
888
  it 'returns the name as a string' do
982
- expect(association.store_as).to eq("name")
889
+ expect(association.store_as).to eq('name')
983
890
  end
984
891
  end
985
892
  end
986
893
 
987
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:store_as) do
988
-
894
+ context 'when the option is not supported by the association type',
895
+ if: !association_class::VALID_OPTIONS.include?(:store_as) do
989
896
  it 'returns nil' do
990
897
  expect(association.store_as).to be_nil
991
898
  end
992
899
 
993
900
  context 'when the option is provided' do
994
-
995
901
  let(:options) do
996
902
  {
997
- store_as: :another_name
903
+ store_as: :another_name
998
904
  }
999
905
  end
1000
906
 
1001
907
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
1002
- expect {
908
+ expect do
1003
909
  association
1004
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
910
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
1005
911
  end
1006
912
  end
1007
913
  end
1008
914
  end
1009
915
 
1010
916
  describe 'the :class_name option' do
1011
-
1012
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:class_name) do
1013
-
917
+ context 'when the option is supported by the association type',
918
+ if: association_class::VALID_OPTIONS.include?(:class_name) do
1014
919
  context 'when :class_name is in the options' do
1015
-
1016
920
  let(:options) do
1017
921
  {
1018
- class_name: :a_class
922
+ class_name: :a_class
1019
923
  }
1020
924
  end
1021
925
 
@@ -1025,45 +929,40 @@ describe Mongoid::Association::Options do
1025
929
  end
1026
930
 
1027
931
  context 'when :class_name is not in the options' do
1028
-
1029
932
  it 'returns the name deduced from the association name' do
1030
933
  expect(association.class_name).to eq(ActiveSupport::Inflector.classify(:name))
1031
934
  end
1032
935
  end
1033
936
  end
1034
937
 
1035
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:class_name) do
1036
-
938
+ context 'when the option is not supported by the association type',
939
+ if: !association_class::VALID_OPTIONS.include?(:class_name) do
1037
940
  it 'returns the name deduced from the association name' do
1038
941
  expect(association.class_name).to eq(ActiveSupport::Inflector.classify(:name))
1039
942
  end
1040
943
 
1041
944
  context 'when the option is provided' do
1042
-
1043
945
  let(:options) do
1044
946
  {
1045
- class_name: :a_class
947
+ class_name: :a_class
1046
948
  }
1047
949
  end
1048
950
 
1049
- it 'should support the option' do
1050
- fail('All association types should support this option')
951
+ it 'supports the option' do
952
+ raise('All association types should support this option')
1051
953
  end
1052
954
  end
1053
955
  end
1054
956
  end
1055
957
 
1056
958
  describe '#counter_cached?' do
1057
-
1058
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:counter_cache) do
1059
-
959
+ context 'when the option is supported by the association type',
960
+ if: association_class::VALID_OPTIONS.include?(:counter_cache) do
1060
961
  context 'when :counter_cache is in the options' do
1061
-
1062
962
  context 'when :counter_cache is true' do
1063
-
1064
963
  let(:options) do
1065
964
  {
1066
- counter_cache: true
965
+ counter_cache: true
1067
966
  }
1068
967
  end
1069
968
 
@@ -1073,10 +972,9 @@ describe Mongoid::Association::Options do
1073
972
  end
1074
973
 
1075
974
  context 'when :counter_cache is false' do
1076
-
1077
975
  let(:options) do
1078
976
  {
1079
- counter_cache: false
977
+ counter_cache: false
1080
978
  }
1081
979
  end
1082
980
 
@@ -1086,10 +984,9 @@ describe Mongoid::Association::Options do
1086
984
  end
1087
985
 
1088
986
  context 'when :counter_cache is nil' do
1089
-
1090
987
  let(:options) do
1091
988
  {
1092
- counter_cache: nil
989
+ counter_cache: nil
1093
990
  }
1094
991
  end
1095
992
 
@@ -1100,44 +997,41 @@ describe Mongoid::Association::Options do
1100
997
  end
1101
998
 
1102
999
  context 'when :counter_cache is not in the options' do
1103
-
1104
1000
  it 'returns false' do
1105
1001
  expect(association.counter_cached?).to be(false)
1106
1002
  end
1107
1003
  end
1108
1004
  end
1109
1005
 
1110
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:counter_cache) do
1111
-
1006
+ context 'when the option is not supported by the association type',
1007
+ if: !association_class::VALID_OPTIONS.include?(:counter_cache) do
1112
1008
  it 'returns false' do
1113
1009
  expect(association.counter_cached?).to be(false)
1114
1010
  end
1115
1011
 
1116
1012
  context 'when the option is provided' do
1117
-
1118
1013
  let(:options) do
1119
1014
  {
1120
- counter_cache: :column_name
1015
+ counter_cache: :column_name
1121
1016
  }
1122
1017
  end
1123
1018
 
1124
1019
  it 'raises a Mongoid::Errors::InvalidRelationOption error' do
1125
- expect {
1020
+ expect do
1126
1021
  association
1127
- }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
1022
+ end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
1128
1023
  end
1129
1024
  end
1130
1025
  end
1131
1026
  end
1132
1027
 
1133
1028
  describe '#extension' do
1134
-
1135
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:extend) do
1136
-
1029
+ context 'when the option is supported by the association type',
1030
+ if: association_class::VALID_OPTIONS.include?(:extend) do
1137
1031
  context 'when a block is passed' do
1138
-
1139
1032
  let!(:association) do
1140
- association_class.new(class_left, :name, options) do; end
1033
+ association_class.new(class_left, :name, options) do
1034
+ end
1141
1035
  end
1142
1036
 
1143
1037
  after do
@@ -1154,7 +1048,6 @@ describe Mongoid::Association::Options do
1154
1048
  end
1155
1049
 
1156
1050
  context 'when a module name is passed' do
1157
-
1158
1051
  before do
1159
1052
  class ClassLeft; end
1160
1053
  module ClassLeft::Handle; end
@@ -1162,7 +1055,7 @@ describe Mongoid::Association::Options do
1162
1055
 
1163
1056
  let(:options) do
1164
1057
  {
1165
- extend: ClassLeft::Handle
1058
+ extend: ClassLeft::Handle
1166
1059
  }
1167
1060
  end
1168
1061
 
@@ -1176,7 +1069,6 @@ describe Mongoid::Association::Options do
1176
1069
  end
1177
1070
 
1178
1071
  context 'when a block is not passed' do
1179
-
1180
1072
  it 'does not define an extension module' do
1181
1073
  expect(defined?(ClassLeft::ClassLeftNameRelationExtension)).to be_nil
1182
1074
  end
@@ -1185,27 +1077,23 @@ describe Mongoid::Association::Options do
1185
1077
  expect(association.extension).to be_nil
1186
1078
  end
1187
1079
  end
1188
-
1189
-
1190
1080
  end
1191
1081
 
1192
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:extend) do
1193
-
1194
- it 'should support the option' do
1195
- fail('All association types should support this option')
1082
+ context 'when the option is not supported by the association type',
1083
+ if: !association_class::VALID_OPTIONS.include?(:extend) do
1084
+ it 'supports the option' do
1085
+ raise('All association types should support this option')
1196
1086
  end
1197
1087
  end
1198
1088
  end
1199
1089
 
1200
1090
  describe 'the :inverse_of option' do
1201
-
1202
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:inverse_of) do
1203
-
1091
+ context 'when the option is supported by the association type',
1092
+ if: association_class::VALID_OPTIONS.include?(:inverse_of) do
1204
1093
  context 'when :inverse_of is in the options' do
1205
-
1206
1094
  let(:options) do
1207
1095
  {
1208
- inverse_of: :inverse_name
1096
+ inverse_of: :inverse_name
1209
1097
  }
1210
1098
  end
1211
1099
 
@@ -1215,46 +1103,40 @@ describe Mongoid::Association::Options do
1215
1103
  end
1216
1104
 
1217
1105
  context 'when :inverse_of is not in the options' do
1218
-
1219
1106
  it 'returns nil' do
1220
1107
  expect(association.inverse_of).to be_nil
1221
1108
  end
1222
1109
  end
1223
1110
  end
1224
1111
 
1225
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:inverse_of) do
1226
-
1112
+ context 'when the option is not supported by the association type',
1113
+ if: !association_class::VALID_OPTIONS.include?(:inverse_of) do
1227
1114
  it 'returns nil' do
1228
1115
  expect(association.inverse_of).to be_nil
1229
1116
  end
1230
1117
 
1231
-
1232
1118
  context 'when the option is provided' do
1233
-
1234
1119
  let(:options) do
1235
1120
  {
1236
- inverse_of: :inverse_name
1121
+ inverse_of: :inverse_name
1237
1122
  }
1238
1123
  end
1239
1124
 
1240
- it 'should support the option' do
1241
- fail('All association types should support this option')
1125
+ it 'supports the option' do
1126
+ raise('All association types should support this option')
1242
1127
  end
1243
1128
  end
1244
1129
  end
1245
1130
  end
1246
1131
 
1247
1132
  describe '#validate?' do
1248
-
1249
- context 'when the option is supported by the association type', if: association_class::VALID_OPTIONS.include?(:validate) do
1250
-
1133
+ context 'when the option is supported by the association type',
1134
+ if: association_class::VALID_OPTIONS.include?(:validate) do
1251
1135
  context 'when :validate is in the options' do
1252
-
1253
1136
  context 'when :validate is true' do
1254
-
1255
1137
  let(:options) do
1256
1138
  {
1257
- validate: true
1139
+ validate: true
1258
1140
  }
1259
1141
  end
1260
1142
 
@@ -1264,10 +1146,9 @@ describe Mongoid::Association::Options do
1264
1146
  end
1265
1147
 
1266
1148
  context 'when :validate is false' do
1267
-
1268
1149
  let(:options) do
1269
1150
  {
1270
- validate: false
1151
+ validate: false
1271
1152
  }
1272
1153
  end
1273
1154
 
@@ -1277,10 +1158,9 @@ describe Mongoid::Association::Options do
1277
1158
  end
1278
1159
 
1279
1160
  context 'when :validate is nil' do
1280
-
1281
1161
  let(:options) do
1282
1162
  {
1283
- validate: nil
1163
+ validate: nil
1284
1164
  }
1285
1165
  end
1286
1166
 
@@ -1291,30 +1171,27 @@ describe Mongoid::Association::Options do
1291
1171
  end
1292
1172
 
1293
1173
  context 'when :validate is not in the options' do
1294
-
1295
1174
  it 'returns the validation default' do
1296
1175
  expect(association.send(:validate?)).to be(association.validation_default)
1297
1176
  end
1298
1177
  end
1299
1178
  end
1300
1179
 
1301
- context 'when the option is not supported by the association type', if: !association_class::VALID_OPTIONS.include?(:validate) do
1302
-
1180
+ context 'when the option is not supported by the association type',
1181
+ if: !association_class::VALID_OPTIONS.include?(:validate) do
1303
1182
  it 'returns false' do
1304
1183
  expect(association.send(:validate?)).to be(false)
1305
1184
  end
1306
1185
 
1307
-
1308
1186
  context 'when the option is provided' do
1309
-
1310
1187
  let(:options) do
1311
1188
  {
1312
- validate: true
1189
+ validate: true
1313
1190
  }
1314
1191
  end
1315
1192
 
1316
- it 'should support the option' do
1317
- fail('All association types should support this option')
1193
+ it 'supports the option' do
1194
+ raise('All association types should support this option')
1318
1195
  end
1319
1196
  end
1320
1197
  end