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,11 +1,9 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
- require "spec_helper"
5
- require_relative './has_many_models'
3
+ require 'spec_helper'
4
+ require_relative 'has_many_models'
6
5
 
7
6
  describe Mongoid::Association::Referenced::HasMany do
8
-
9
7
  before do
10
8
  class OwnerObject; include Mongoid::Document; end
11
9
  class BelongingObject; include Mongoid::Document; end
@@ -29,14 +27,13 @@ describe Mongoid::Association::Referenced::HasMany do
29
27
  end
30
28
 
31
29
  let(:options) do
32
- { }
30
+ {}
33
31
  end
34
32
 
35
33
  describe '#relation_complements' do
36
-
37
34
  let(:expected_complements) do
38
35
  [
39
- Mongoid::Association::Referenced::BelongsTo,
36
+ Mongoid::Association::Referenced::BelongsTo
40
37
  ]
41
38
  end
42
39
 
@@ -46,7 +43,6 @@ describe Mongoid::Association::Referenced::HasMany do
46
43
  end
47
44
 
48
45
  describe '#setup!' do
49
-
50
46
  it 'sets up a getter for the relation' do
51
47
  expect(Mongoid::Association::Accessors).to receive(:define_getter!).with(association)
52
48
  association.setup!
@@ -73,12 +69,10 @@ describe Mongoid::Association::Referenced::HasMany do
73
69
  end
74
70
 
75
71
  context 'autosave' do
76
-
77
72
  context 'when the :autosave option is true' do
78
-
79
73
  let(:options) do
80
74
  {
81
- autosave: true
75
+ autosave: true
82
76
  }
83
77
  end
84
78
 
@@ -95,10 +89,9 @@ describe Mongoid::Association::Referenced::HasMany do
95
89
  end
96
90
 
97
91
  context 'when the :autosave option is false' do
98
-
99
92
  let(:options) do
100
93
  {
101
- autosave: false
94
+ autosave: false
102
95
  }
103
96
  end
104
97
 
@@ -109,7 +102,6 @@ describe Mongoid::Association::Referenced::HasMany do
109
102
  end
110
103
 
111
104
  context 'when the :autosave option is not provided' do
112
-
113
105
  let(:association) do
114
106
  # Note that it is necessary to create the association directly, otherwise the
115
107
  # setup! method will be called by the :has_many macro
@@ -124,10 +116,9 @@ describe Mongoid::Association::Referenced::HasMany do
124
116
  end
125
117
 
126
118
  context 'when the :validate option is true' do
127
-
128
119
  let(:options) do
129
120
  {
130
- validate: true
121
+ validate: true
131
122
  }
132
123
  end
133
124
 
@@ -144,10 +135,9 @@ describe Mongoid::Association::Referenced::HasMany do
144
135
  end
145
136
 
146
137
  context 'when the :validate option is false' do
147
-
148
138
  let(:options) do
149
139
  {
150
- validate: false
140
+ validate: false
151
141
  }
152
142
  end
153
143
 
@@ -158,7 +148,6 @@ describe Mongoid::Association::Referenced::HasMany do
158
148
  end
159
149
 
160
150
  context 'when the :validate option is not provided' do
161
-
162
151
  let(:association) do
163
152
  # Note that it is necessary to create the association directly, otherwise the
164
153
  # setup! method will be called by the :has_many macro
@@ -172,13 +161,10 @@ describe Mongoid::Association::Referenced::HasMany do
172
161
  end
173
162
 
174
163
  context 'polymorphic' do
175
-
176
164
  context 'when the as option is provided' do
177
-
178
-
179
165
  let(:options) do
180
166
  {
181
- as: :containable
167
+ as: :containable
182
168
  }
183
169
  end
184
170
 
@@ -192,7 +178,6 @@ describe Mongoid::Association::Referenced::HasMany do
192
178
  end
193
179
 
194
180
  context 'when the as option is not provided' do
195
-
196
181
  it 'does not set the polymorphic attribute on the owner class' do
197
182
  expect(has_many_class.polymorphic).to be(false)
198
183
  end
@@ -200,14 +185,11 @@ describe Mongoid::Association::Referenced::HasMany do
200
185
  end
201
186
 
202
187
  context 'dependent' do
203
-
204
188
  context 'when the dependent option is provided' do
205
-
206
189
  context 'when the dependent option is :delete_all' do
207
-
208
190
  let(:options) do
209
191
  {
210
- dependent: :delete_all
192
+ dependent: :delete_all
211
193
  }
212
194
  end
213
195
 
@@ -224,10 +206,9 @@ describe Mongoid::Association::Referenced::HasMany do
224
206
  end
225
207
 
226
208
  context 'when the dependent option is :destroy' do
227
-
228
209
  let(:options) do
229
210
  {
230
- dependent: :destroy
211
+ dependent: :destroy
231
212
  }
232
213
  end
233
214
 
@@ -244,10 +225,9 @@ describe Mongoid::Association::Referenced::HasMany do
244
225
  end
245
226
 
246
227
  context 'when the dependent option is :nullify' do
247
-
248
228
  let(:options) do
249
229
  {
250
- dependent: :nullify
230
+ dependent: :nullify
251
231
  }
252
232
  end
253
233
 
@@ -264,10 +244,9 @@ describe Mongoid::Association::Referenced::HasMany do
264
244
  end
265
245
 
266
246
  context 'when the dependent option is :restrict_with_exception' do
267
-
268
247
  let(:options) do
269
248
  {
270
- dependent: :restrict_with_exception
249
+ dependent: :restrict_with_exception
271
250
  }
272
251
  end
273
252
 
@@ -284,10 +263,9 @@ describe Mongoid::Association::Referenced::HasMany do
284
263
  end
285
264
 
286
265
  context 'when the dependent option is :restrict_with_error' do
287
-
288
266
  let(:options) do
289
267
  {
290
- dependent: :restrict_with_error
268
+ dependent: :restrict_with_error
291
269
  }
292
270
  end
293
271
 
@@ -305,7 +283,6 @@ describe Mongoid::Association::Referenced::HasMany do
305
283
  end
306
284
 
307
285
  context 'when the dependent option is not provided' do
308
-
309
286
  it 'does not set up the dependency' do
310
287
  expect(Mongoid::Association::Depending).not_to receive(:define_dependency!)
311
288
  association.setup!
@@ -315,9 +292,7 @@ describe Mongoid::Association::Referenced::HasMany do
315
292
  end
316
293
 
317
294
  describe '#type' do
318
-
319
295
  context 'when polymorphic' do
320
-
321
296
  let(:options) do
322
297
  { as: :containable }
323
298
  end
@@ -328,7 +303,6 @@ describe Mongoid::Association::Referenced::HasMany do
328
303
  end
329
304
 
330
305
  context 'when not polymorphic' do
331
-
332
306
  it 'returns nil' do
333
307
  expect(association.type).to be_nil
334
308
  end
@@ -336,9 +310,7 @@ describe Mongoid::Association::Referenced::HasMany do
336
310
  end
337
311
 
338
312
  describe '#inverse_type' do
339
-
340
313
  context 'when polymorphic' do
341
-
342
314
  let(:options) do
343
315
  { as: :containable }
344
316
  end
@@ -349,7 +321,6 @@ describe Mongoid::Association::Referenced::HasMany do
349
321
  end
350
322
 
351
323
  context 'when not polymorphic' do
352
-
353
324
  it 'returns nil' do
354
325
  expect(association.inverse_type).to be_nil
355
326
  end
@@ -357,9 +328,7 @@ describe Mongoid::Association::Referenced::HasMany do
357
328
  end
358
329
 
359
330
  describe '#inverse_type_setter' do
360
-
361
331
  context 'when polymorphic' do
362
-
363
332
  let(:options) do
364
333
  { as: :containable }
365
334
  end
@@ -370,7 +339,6 @@ describe Mongoid::Association::Referenced::HasMany do
370
339
  end
371
340
 
372
341
  context 'when not polymorphic' do
373
-
374
342
  it 'returns nil' do
375
343
  expect(association.inverse_type).to be_nil
376
344
  end
@@ -378,9 +346,7 @@ describe Mongoid::Association::Referenced::HasMany do
378
346
  end
379
347
 
380
348
  describe '#foreign_key' do
381
-
382
349
  context 'when options has foreign_key specified' do
383
-
384
350
  let(:options) do
385
351
  { foreign_key: :other_object_id }
386
352
  end
@@ -391,7 +357,6 @@ describe Mongoid::Association::Referenced::HasMany do
391
357
  end
392
358
 
393
359
  context 'when options does not have foreign_key specified' do
394
-
395
360
  it 'returns the default foreign key, the name of the inverse followed by "_id"' do
396
361
  expect(association.foreign_key).to eq("#{association.inverse}_id")
397
362
  end
@@ -399,19 +364,16 @@ describe Mongoid::Association::Referenced::HasMany do
399
364
  end
400
365
 
401
366
  describe '#embedded?' do
402
-
403
367
  it 'returns false' do
404
368
  expect(association.embedded?).to be(false)
405
369
  end
406
370
  end
407
371
 
408
372
  describe '#primary_key' do
409
-
410
373
  context 'when the :primary_key option is specified' do
411
-
412
374
  let(:options) do
413
375
  {
414
- primary_key: 'guid'
376
+ primary_key: 'guid'
415
377
  }
416
378
  end
417
379
 
@@ -421,7 +383,6 @@ describe Mongoid::Association::Referenced::HasMany do
421
383
  end
422
384
 
423
385
  context 'when the :primary_key option is not specified' do
424
-
425
386
  it 'returns the primary_key default' do
426
387
  expect(association.primary_key).to eq(Mongoid::Association::Relatable::PRIMARY_KEY_DEFAULT)
427
388
  end
@@ -429,35 +390,30 @@ describe Mongoid::Association::Referenced::HasMany do
429
390
  end
430
391
 
431
392
  describe '#relation' do
432
-
433
393
  it 'returns Mongoid::Association::Referenced::HasMany::Proxy' do
434
394
  expect(association.relation).to be(Mongoid::Association::Referenced::HasMany::Proxy)
435
395
  end
436
396
  end
437
397
 
438
398
  describe '#validation_default' do
439
-
440
399
  it 'returns true' do
441
400
  expect(association.validation_default).to be(true)
442
401
  end
443
402
  end
444
403
 
445
404
  describe '#name' do
446
-
447
405
  it 'returns the name of the relation' do
448
406
  expect(association.name).to be(name)
449
407
  end
450
408
  end
451
409
 
452
410
  describe '#options' do
453
-
454
411
  it 'returns the options' do
455
412
  expect(association.options).to be(options)
456
413
  end
457
414
  end
458
415
 
459
416
  describe '#merge!' do
460
-
461
417
  end
462
418
 
463
419
  describe '#store_as' do
@@ -467,19 +423,16 @@ describe Mongoid::Association::Referenced::HasMany do
467
423
  end
468
424
 
469
425
  describe '#touchable?' do
470
-
471
426
  it 'return false' do
472
427
  expect(association.send(:touchable?)).to be(false)
473
428
  end
474
429
  end
475
430
 
476
431
  describe '#order' do
477
-
478
432
  context 'when order is specified in the options' do
479
-
480
433
  let(:options) do
481
434
  {
482
- order: :rating.desc
435
+ order: :rating.desc
483
436
  }
484
437
  end
485
438
 
@@ -489,7 +442,6 @@ describe Mongoid::Association::Referenced::HasMany do
489
442
  end
490
443
 
491
444
  context 'when order is not specified in the options' do
492
-
493
445
  it 'returns nil' do
494
446
  expect(association.order).to be_nil
495
447
  end
@@ -497,9 +449,7 @@ describe Mongoid::Association::Referenced::HasMany do
497
449
  end
498
450
 
499
451
  describe '#scope' do
500
-
501
452
  context 'when scope is specified in the options' do
502
-
503
453
  let(:options) do
504
454
  { scope: -> { unscoped.where(foo: :bar) } }
505
455
  end
@@ -510,7 +460,6 @@ describe Mongoid::Association::Referenced::HasMany do
510
460
  end
511
461
 
512
462
  context 'when scope is not specified in the options' do
513
-
514
463
  it 'returns nil' do
515
464
  expect(association.scope).to be_nil
516
465
  end
@@ -518,12 +467,10 @@ describe Mongoid::Association::Referenced::HasMany do
518
467
  end
519
468
 
520
469
  describe '#as' do
521
-
522
470
  context 'when :as is specified in the options' do
523
-
524
471
  let(:options) do
525
472
  {
526
- as: :containable
473
+ as: :containable
527
474
  }
528
475
  end
529
476
 
@@ -533,7 +480,6 @@ describe Mongoid::Association::Referenced::HasMany do
533
480
  end
534
481
 
535
482
  context 'when :as is not specified in the options' do
536
-
537
483
  it 'returns nil' do
538
484
  expect(association.as).to be_nil
539
485
  end
@@ -541,23 +487,19 @@ describe Mongoid::Association::Referenced::HasMany do
541
487
  end
542
488
 
543
489
  describe '#polymorphic?' do
544
-
545
490
  context 'when :as is specified in the options' do
546
-
547
491
  let(:options) do
548
492
  {
549
- as: :containable
493
+ as: :containable
550
494
  }
551
495
  end
552
496
 
553
497
  it 'returns true' do
554
498
  expect(association.polymorphic?).to be(true)
555
499
  end
556
-
557
500
  end
558
501
 
559
502
  context 'when :as is not specified in the options' do
560
-
561
503
  it 'returns false' do
562
504
  expect(association.polymorphic?).to be(false)
563
505
  end
@@ -565,20 +507,17 @@ describe Mongoid::Association::Referenced::HasMany do
565
507
  end
566
508
 
567
509
  describe '#type_setter' do
568
-
569
510
  context 'when polymorphic' do
570
-
571
511
  let(:options) do
572
512
  { as: :containable }
573
513
  end
574
514
 
575
515
  it 'returns the type followed by = as a String' do
576
- expect(association.type_setter).to eq("containable_type=")
516
+ expect(association.type_setter).to eq('containable_type=')
577
517
  end
578
518
  end
579
519
 
580
520
  context 'when not polymorphic' do
581
-
582
521
  it 'returns nil' do
583
522
  expect(association.type).to be_nil
584
523
  end
@@ -586,14 +525,11 @@ describe Mongoid::Association::Referenced::HasMany do
586
525
  end
587
526
 
588
527
  describe '#dependent' do
589
-
590
528
  context 'when the dependent option is provided' do
591
-
592
529
  context 'when the dependent option is :delete_all' do
593
-
594
530
  let(:options) do
595
531
  {
596
- dependent: :delete_all
532
+ dependent: :delete_all
597
533
  }
598
534
  end
599
535
 
@@ -603,10 +539,9 @@ describe Mongoid::Association::Referenced::HasMany do
603
539
  end
604
540
 
605
541
  context 'when the dependent option is :destroy' do
606
-
607
542
  let(:options) do
608
543
  {
609
- dependent: :destroy
544
+ dependent: :destroy
610
545
  }
611
546
  end
612
547
 
@@ -616,10 +551,9 @@ describe Mongoid::Association::Referenced::HasMany do
616
551
  end
617
552
 
618
553
  context 'when the dependent option is :nullify' do
619
-
620
554
  let(:options) do
621
555
  {
622
- dependent: :nullify
556
+ dependent: :nullify
623
557
  }
624
558
  end
625
559
 
@@ -629,10 +563,9 @@ describe Mongoid::Association::Referenced::HasMany do
629
563
  end
630
564
 
631
565
  context 'when the dependent option is :restrict_with_exception' do
632
-
633
566
  let(:options) do
634
567
  {
635
- dependent: :restrict_with_exception
568
+ dependent: :restrict_with_exception
636
569
  }
637
570
  end
638
571
 
@@ -642,10 +575,9 @@ describe Mongoid::Association::Referenced::HasMany do
642
575
  end
643
576
 
644
577
  context 'when the dependent option is :restrict_with_error' do
645
-
646
578
  let(:options) do
647
579
  {
648
- dependent: :restrict_with_error
580
+ dependent: :restrict_with_error
649
581
  }
650
582
  end
651
583
 
@@ -656,7 +588,6 @@ describe Mongoid::Association::Referenced::HasMany do
656
588
  end
657
589
 
658
590
  context 'when the dependent option is not provided' do
659
-
660
591
  it 'returns nil' do
661
592
  expect(association.dependent).to be_nil
662
593
  end
@@ -664,48 +595,41 @@ describe Mongoid::Association::Referenced::HasMany do
664
595
  end
665
596
 
666
597
  describe '#inverse_type' do
667
-
668
598
  it 'returns nil' do
669
599
  expect(association.inverse_type).to be_nil
670
600
  end
671
601
  end
672
602
 
673
603
  describe '#bindable?' do
674
-
675
604
  it 'returns false' do
676
605
  expect(association.bindable?(Person.new)).to be(false)
677
606
  end
678
607
  end
679
608
 
680
609
  describe '#inverses' do
681
-
682
610
  context 'when polymorphic' do
683
-
684
611
  before do
685
612
  BelongingObject.belongs_to :containable, polymorphic: true
686
613
  end
687
614
 
688
615
  let(:options) do
689
616
  {
690
- as: :containable
617
+ as: :containable
691
618
  }
692
619
  end
693
620
 
694
621
  context 'when another object is passed to the method' do
695
-
696
622
  let(:instance_of_other_class) do
697
623
  BelongingObject.new
698
624
  end
699
625
 
700
626
  context 'when the relation class has only one relation whose class matches the owning class' do
701
-
702
627
  it 'returns the :as attribute of this association' do
703
- expect(association.inverses(instance_of_other_class)).to match_array([ :containable ])
628
+ expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
704
629
  end
705
630
  end
706
631
 
707
632
  context 'when :inverse_of is specified' do
708
-
709
633
  before do
710
634
  options.merge!(inverse_of: :inverse_name)
711
635
  end
@@ -716,17 +640,14 @@ describe Mongoid::Association::Referenced::HasMany do
716
640
  end
717
641
 
718
642
  context 'when inverse_of is not specified' do
719
-
720
643
  it 'returns the :as attribute of this association' do
721
- expect(association.inverses(instance_of_other_class)).to match_array([ :containable ])
644
+ expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
722
645
  end
723
646
  end
724
647
  end
725
648
 
726
649
  context 'when another object is not passed to the method' do
727
-
728
650
  context 'when inverse_of is specified' do
729
-
730
651
  before do
731
652
  options.merge!(inverse_of: :inverse_name)
732
653
  end
@@ -737,7 +658,6 @@ describe Mongoid::Association::Referenced::HasMany do
737
658
  end
738
659
 
739
660
  context 'when inverse_of is not specified' do
740
-
741
661
  it 'returns the :as attribute' do
742
662
  expect(association.inverses).to eq([ :containable ])
743
663
  end
@@ -746,13 +666,11 @@ describe Mongoid::Association::Referenced::HasMany do
746
666
  end
747
667
 
748
668
  context 'when not polymorphic' do
749
-
750
669
  before do
751
670
  BelongingObject.belongs_to :owner_object
752
671
  end
753
672
 
754
673
  context 'when inverse_of is specified' do
755
-
756
674
  before do
757
675
  options.merge!(inverse_of: :inverse_name)
758
676
  end
@@ -763,50 +681,42 @@ describe Mongoid::Association::Referenced::HasMany do
763
681
  end
764
682
 
765
683
  context 'when inverse_of is not specified' do
766
-
767
684
  it 'uses the inverse class to find the inverse name' do
768
685
  expect(association.inverses).to eq([ :owner_object ])
769
686
  end
770
687
  end
771
688
 
772
689
  context 'when :cyclic is specified' do
773
-
774
690
  it 'returns the cyclic inverse name' do
775
-
776
691
  end
777
692
  end
778
693
  end
779
694
  end
780
695
 
781
696
  describe '##inverse' do
782
-
783
697
  context 'when polymorphic' do
784
-
785
698
  before do
786
699
  BelongingObject.belongs_to :containable, polymorphic: true
787
700
  end
788
701
 
789
702
  let(:options) do
790
703
  {
791
- as: :containable
704
+ as: :containable
792
705
  }
793
706
  end
794
707
 
795
708
  context 'when another object is passed to the method' do
796
-
797
709
  let(:instance_of_other_class) do
798
710
  BelongingObject.new
799
711
  end
800
712
 
801
713
  context 'when the relation class has only one relation whose class matches the owning class' do
802
-
803
714
  it 'returns the :as attribute of this association' do
804
715
  expect(association.inverse(instance_of_other_class)).to eq(:containable)
805
716
  end
806
717
  end
807
718
 
808
719
  context 'when :inverse_of is specified' do
809
-
810
720
  before do
811
721
  options.merge!(inverse_of: :inverse_name)
812
722
  end
@@ -817,7 +727,6 @@ describe Mongoid::Association::Referenced::HasMany do
817
727
  end
818
728
 
819
729
  context 'when inverse_of is not specified' do
820
-
821
730
  it 'returns the :as attribute of this association' do
822
731
  expect(association.inverse(instance_of_other_class)).to eq(:containable)
823
732
  end
@@ -825,9 +734,7 @@ describe Mongoid::Association::Referenced::HasMany do
825
734
  end
826
735
 
827
736
  context 'when another object is not passed to the method' do
828
-
829
737
  context 'when inverse_of is specified' do
830
-
831
738
  before do
832
739
  options.merge!(inverse_of: :inverse_name)
833
740
  end
@@ -838,7 +745,6 @@ describe Mongoid::Association::Referenced::HasMany do
838
745
  end
839
746
 
840
747
  context 'when inverse_of is not specified' do
841
-
842
748
  it 'returns the :as attribute' do
843
749
  expect(association.inverse).to eq(:containable)
844
750
  end
@@ -847,13 +753,11 @@ describe Mongoid::Association::Referenced::HasMany do
847
753
  end
848
754
 
849
755
  context 'when not polymorphic' do
850
-
851
756
  before do
852
757
  BelongingObject.belongs_to :owner_object
853
758
  end
854
759
 
855
760
  context 'when inverse_of is specified' do
856
-
857
761
  before do
858
762
  options.merge!(inverse_of: :inverse_name)
859
763
  end
@@ -864,34 +768,27 @@ describe Mongoid::Association::Referenced::HasMany do
864
768
  end
865
769
 
866
770
  context 'when inverse_of is not specified' do
867
-
868
771
  it 'uses the inverse class to find the inverse name' do
869
772
  expect(association.inverse).to eq(:owner_object)
870
773
  end
871
774
  end
872
775
 
873
776
  context 'when :cyclic is specified' do
874
-
875
777
  it 'returns the cyclic inverse name' do
876
-
877
778
  end
878
779
  end
879
780
  end
880
781
  end
881
782
 
882
783
  describe '#inverse_association' do
883
-
884
784
  end
885
785
 
886
786
  describe '#autosave' do
887
-
888
787
  context 'when the autosave option is specified' do
889
-
890
788
  context 'when the autosave option is true' do
891
-
892
789
  let(:options) do
893
790
  {
894
- autosave: true
791
+ autosave: true
895
792
  }
896
793
  end
897
794
 
@@ -901,10 +798,9 @@ describe Mongoid::Association::Referenced::HasMany do
901
798
  end
902
799
 
903
800
  context 'when the autosave option is false' do
904
-
905
801
  let(:options) do
906
802
  {
907
- autosave: false
803
+ autosave: false
908
804
  }
909
805
  end
910
806
 
@@ -915,7 +811,6 @@ describe Mongoid::Association::Referenced::HasMany do
915
811
  end
916
812
 
917
813
  context 'when the autosave option is not specified' do
918
-
919
814
  it 'returns false' do
920
815
  expect(association.autosave).to be(false)
921
816
  end
@@ -923,9 +818,7 @@ describe Mongoid::Association::Referenced::HasMany do
923
818
  end
924
819
 
925
820
  describe '#relation_class_name' do
926
-
927
821
  context 'when the :class_name option is specified' do
928
-
929
822
  let(:options) do
930
823
  { class_name: 'OtherBelongingObject' }
931
824
  end
@@ -936,7 +829,6 @@ describe Mongoid::Association::Referenced::HasMany do
936
829
  end
937
830
 
938
831
  context 'when the class_name option is not specified' do
939
-
940
832
  it 'uses the name of the relation to deduce the class name' do
941
833
  expect(association.relation_class_name).to eq('BelongingObject')
942
834
  end
@@ -944,9 +836,7 @@ describe Mongoid::Association::Referenced::HasMany do
944
836
  end
945
837
 
946
838
  describe '#relation_class' do
947
-
948
839
  context 'when the :class_name option is specified' do
949
-
950
840
  let!(:_class) do
951
841
  class OtherBelongingObject; end
952
842
  OtherBelongingObject
@@ -962,7 +852,6 @@ describe Mongoid::Association::Referenced::HasMany do
962
852
  end
963
853
 
964
854
  context 'when the class_name option is not specified' do
965
-
966
855
  it 'uses the name of the relation to deduce the class name' do
967
856
  expect(association.relation_class).to eq(BelongingObject)
968
857
  end
@@ -970,23 +859,19 @@ describe Mongoid::Association::Referenced::HasMany do
970
859
  end
971
860
 
972
861
  describe '#inverse_class_name' do
973
-
974
862
  it 'returns the name of the owner class' do
975
863
  expect(association.inverse_class_name).to eq(OwnerObject.name)
976
864
  end
977
865
  end
978
866
 
979
867
  describe '#inverse_class' do
980
-
981
868
  it 'returns the owner class' do
982
869
  expect(association.inverse_class).to be(OwnerObject)
983
870
  end
984
871
  end
985
872
 
986
873
  describe '#inverse_of' do
987
-
988
874
  context 'when :inverse_of is specified in the options' do
989
-
990
875
  let(:options) do
991
876
  { inverse_of: :a_belonging_object }
992
877
  end
@@ -997,7 +882,6 @@ describe Mongoid::Association::Referenced::HasMany do
997
882
  end
998
883
 
999
884
  context 'when :inverse_of is not specified in the options' do
1000
-
1001
885
  it 'returns nil' do
1002
886
  expect(association.inverse_of).to be_nil
1003
887
  end
@@ -1005,25 +889,20 @@ describe Mongoid::Association::Referenced::HasMany do
1005
889
  end
1006
890
 
1007
891
  describe '#key' do
1008
-
1009
892
  it 'returns the primary key' do
1010
893
  expect(association.key).to eq(association.primary_key)
1011
894
  end
1012
895
  end
1013
896
 
1014
897
  describe '#setter' do
1015
-
1016
898
  it 'returns a string of the name followed by =' do
1017
899
  expect(association.setter).to eq("#{name}=")
1018
900
  end
1019
901
  end
1020
902
 
1021
903
  describe '#validate?' do
1022
-
1023
904
  context 'when :validate is specified in the options' do
1024
-
1025
905
  context 'when validate is true' do
1026
-
1027
906
  let(:options) do
1028
907
  { validate: true }
1029
908
  end
@@ -1034,7 +913,6 @@ describe Mongoid::Association::Referenced::HasMany do
1034
913
  end
1035
914
 
1036
915
  context 'when validate is false' do
1037
-
1038
916
  let(:options) do
1039
917
  { validate: false }
1040
918
  end
@@ -1046,7 +924,6 @@ describe Mongoid::Association::Referenced::HasMany do
1046
924
  end
1047
925
 
1048
926
  context 'when :validate is not specified in the options' do
1049
-
1050
927
  it 'returns the validation_default' do
1051
928
  expect(association.send(:validate?)).to eq(association.validation_default)
1052
929
  end
@@ -1054,23 +931,19 @@ describe Mongoid::Association::Referenced::HasMany do
1054
931
  end
1055
932
 
1056
933
  describe '#forced_nil_inverse?' do
1057
-
1058
934
  it 'returns false' do
1059
935
  expect(association.forced_nil_inverse?).to be(false)
1060
936
  end
1061
937
  end
1062
938
 
1063
939
  describe '#stores_foreign_key?' do
1064
-
1065
940
  it 'returns false' do
1066
941
  expect(association.stores_foreign_key?).to be(false)
1067
942
  end
1068
943
  end
1069
944
 
1070
945
  describe '#inverse_setter' do
1071
-
1072
946
  context 'when an inverse can be determined' do
1073
-
1074
947
  before do
1075
948
  BelongingObject.belongs_to :owner_object
1076
949
  end
@@ -1081,7 +954,6 @@ describe Mongoid::Association::Referenced::HasMany do
1081
954
  end
1082
955
 
1083
956
  context 'when an inverse cannot be determined' do
1084
-
1085
957
  it 'returns nil' do
1086
958
  expect(association.inverse_setter).to be_nil
1087
959
  end
@@ -1089,11 +961,10 @@ describe Mongoid::Association::Referenced::HasMany do
1089
961
  end
1090
962
 
1091
963
  describe '#extension' do
1092
-
1093
964
  context 'when a block is passed' do
1094
-
1095
965
  let(:association) do
1096
- has_many_class.embeds_one name, options do; end
966
+ has_many_class.embeds_one name, options do
967
+ end
1097
968
  end
1098
969
 
1099
970
  it 'defines an extension module' do
@@ -1102,12 +973,12 @@ describe Mongoid::Association::Referenced::HasMany do
1102
973
 
1103
974
  it 'returns the extension' do
1104
975
  expect(association.extension).to eq(
1105
- "#{has_many_class.name}::#{has_many_class.name}#{name.to_s.camelize}RelationExtension".constantize)
976
+ "#{has_many_class.name}::#{has_many_class.name}#{name.to_s.camelize}RelationExtension".constantize
977
+ )
1106
978
  end
1107
979
  end
1108
980
 
1109
981
  context 'when an :extension is not specified in the options' do
1110
-
1111
982
  it 'returns false' do
1112
983
  expect(association.extension).to be_nil
1113
984
  end
@@ -1115,28 +986,23 @@ describe Mongoid::Association::Referenced::HasMany do
1115
986
  end
1116
987
 
1117
988
  describe '#foreign_key_setter' do
1118
-
1119
989
  it 'returns the foreign key followed by "="' do
1120
990
  expect(association.foreign_key_setter).to eq("#{association.foreign_key}=")
1121
991
  end
1122
992
  end
1123
993
 
1124
994
  describe '#criteria' do
1125
-
1126
995
  it 'returns a criteria object' do
1127
996
  expect(association.criteria(OwnerObject.new)).to be_a(Mongoid::Criteria)
1128
997
  end
1129
998
  end
1130
999
 
1131
1000
  describe '#destructive?' do
1132
-
1133
1001
  context 'when the dependent option is provided' do
1134
-
1135
1002
  context 'when the dependent option is :delete_all' do
1136
-
1137
1003
  let(:options) do
1138
1004
  {
1139
- dependent: :delete_all
1005
+ dependent: :delete_all
1140
1006
  }
1141
1007
  end
1142
1008
 
@@ -1146,10 +1012,9 @@ describe Mongoid::Association::Referenced::HasMany do
1146
1012
  end
1147
1013
 
1148
1014
  context 'when the dependent option is :destroy' do
1149
-
1150
1015
  let(:options) do
1151
1016
  {
1152
- dependent: :destroy
1017
+ dependent: :destroy
1153
1018
  }
1154
1019
  end
1155
1020
 
@@ -1159,10 +1024,9 @@ describe Mongoid::Association::Referenced::HasMany do
1159
1024
  end
1160
1025
 
1161
1026
  context 'when the dependent option is :nullify' do
1162
-
1163
1027
  let(:options) do
1164
1028
  {
1165
- dependent: :nullify
1029
+ dependent: :nullify
1166
1030
  }
1167
1031
  end
1168
1032
 
@@ -1172,10 +1036,9 @@ describe Mongoid::Association::Referenced::HasMany do
1172
1036
  end
1173
1037
 
1174
1038
  context 'when the dependent option is :restrict_with_exception' do
1175
-
1176
1039
  let(:options) do
1177
1040
  {
1178
- dependent: :restrict_with_exception
1041
+ dependent: :restrict_with_exception
1179
1042
  }
1180
1043
  end
1181
1044
 
@@ -1185,10 +1048,9 @@ describe Mongoid::Association::Referenced::HasMany do
1185
1048
  end
1186
1049
 
1187
1050
  context 'when the dependent option is :restrict_with_error' do
1188
-
1189
1051
  let(:options) do
1190
1052
  {
1191
- dependent: :restrict_with_error
1053
+ dependent: :restrict_with_error
1192
1054
  }
1193
1055
  end
1194
1056
 
@@ -1199,7 +1061,6 @@ describe Mongoid::Association::Referenced::HasMany do
1199
1061
  end
1200
1062
 
1201
1063
  context 'when the dependent option is not provided' do
1202
-
1203
1064
  it 'returns false' do
1204
1065
  expect(association.destructive?).to be(false)
1205
1066
  end
@@ -1207,28 +1068,24 @@ describe Mongoid::Association::Referenced::HasMany do
1207
1068
  end
1208
1069
 
1209
1070
  describe '#nested_builder' do
1210
-
1211
1071
  it 'returns an instance of Association::Nested::Many' do
1212
1072
  expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::Many)
1213
1073
  end
1214
1074
  end
1215
1075
 
1216
1076
  describe '#path' do
1217
-
1218
1077
  it 'returns an instance of Mongoid::Atomic::Paths::Root' do
1219
- expect(association.path(double( :_parent => true))).to be_a(Mongoid::Atomic::Paths::Root)
1078
+ expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Root)
1220
1079
  end
1221
1080
  end
1222
1081
 
1223
1082
  describe '#foreign_key_check' do
1224
-
1225
1083
  it 'returns the nil' do
1226
1084
  expect(association.foreign_key_check).to be_nil
1227
1085
  end
1228
1086
  end
1229
1087
 
1230
1088
  describe '#create_relation' do
1231
-
1232
1089
  let(:owner) do
1233
1090
  OwnerObject.new
1234
1091
  end
@@ -1248,8 +1105,10 @@ describe Mongoid::Association::Referenced::HasMany do
1248
1105
  end
1249
1106
  end
1250
1107
 
1251
- context "when adding an object to the association" do
1108
+ context 'when adding an object to the association' do
1252
1109
  let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
1110
+ let!(:school) { HmmSchool.create! }
1111
+ let!(:student) { HmmStudent.create! }
1253
1112
 
1254
1113
  let(:update_time) do
1255
1114
  Timecop.freeze(Time.at(Time.now.to_i) + 2)
@@ -1259,15 +1118,12 @@ describe Mongoid::Association::Referenced::HasMany do
1259
1118
  Timecop.return
1260
1119
  end
1261
1120
 
1262
- let!(:school) { HmmSchool.create! }
1263
- let!(:student) { HmmStudent.create! }
1264
-
1265
1121
  before do
1266
1122
  update_time
1267
1123
  student.update(school: school)
1268
1124
  end
1269
1125
 
1270
- it "updates the updated_at" do
1126
+ it 'updates the updated_at' do
1271
1127
  expect(student.updated_at).to eq(update_time)
1272
1128
  end
1273
1129
  end