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_one_models'
3
+ require 'spec_helper'
4
+ require_relative 'has_one_models'
6
5
 
7
6
  describe Mongoid::Association::Referenced::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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_one macro
@@ -124,10 +116,9 @@ describe Mongoid::Association::Referenced::HasOne 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::HasOne 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::HasOne 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 :embeds_one macro
@@ -172,13 +161,10 @@ describe Mongoid::Association::Referenced::HasOne 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::HasOne 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_one_class.polymorphic).to be(false)
198
183
  end
@@ -200,14 +185,11 @@ describe Mongoid::Association::Referenced::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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::HasOne 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,42 +390,36 @@ describe Mongoid::Association::Referenced::HasOne do
429
390
  end
430
391
 
431
392
  describe '#indexed?' do
432
-
433
393
  it 'returns false' do
434
394
  expect(association.indexed?).to be(false)
435
395
  end
436
396
  end
437
397
 
438
398
  describe '#relation' do
439
-
440
399
  it 'returns Mongoid::Association::Referenced::HasOne::Proxy' do
441
400
  expect(association.relation).to be(Mongoid::Association::Referenced::HasOne::Proxy)
442
401
  end
443
402
  end
444
403
 
445
404
  describe '#validation_default' do
446
-
447
405
  it 'returns true' do
448
406
  expect(association.validation_default).to be(true)
449
407
  end
450
408
  end
451
409
 
452
410
  describe '#name' do
453
-
454
411
  it 'returns the name of the relation' do
455
412
  expect(association.name).to be(name)
456
413
  end
457
414
  end
458
415
 
459
416
  describe '#options' do
460
-
461
417
  it 'returns the options' do
462
418
  expect(association.options).to be(options)
463
419
  end
464
420
  end
465
421
 
466
422
  describe '#merge!' do
467
-
468
423
  end
469
424
 
470
425
  describe '#store_as' do
@@ -474,23 +429,19 @@ describe Mongoid::Association::Referenced::HasOne do
474
429
  end
475
430
 
476
431
  describe '#touchable?' do
477
-
478
432
  it 'return false' do
479
433
  expect(association.send(:touchable?)).to be(false)
480
434
  end
481
435
  end
482
436
 
483
437
  describe '#order' do
484
-
485
438
  it 'returns nil' do
486
439
  expect(association.order).to be_nil
487
440
  end
488
441
  end
489
442
 
490
443
  describe '#scope' do
491
-
492
444
  context 'when scope is specified in the options' do
493
-
494
445
  let(:options) do
495
446
  { scope: -> { unscoped.where(foo: :bar) } }
496
447
  end
@@ -501,7 +452,6 @@ describe Mongoid::Association::Referenced::HasOne do
501
452
  end
502
453
 
503
454
  context 'when scope is not specified in the options' do
504
-
505
455
  it 'returns nil' do
506
456
  expect(association.scope).to be_nil
507
457
  end
@@ -509,12 +459,10 @@ describe Mongoid::Association::Referenced::HasOne do
509
459
  end
510
460
 
511
461
  describe '#as' do
512
-
513
462
  context 'when :as is specified in the options' do
514
-
515
463
  let(:options) do
516
464
  {
517
- as: :containable
465
+ as: :containable
518
466
  }
519
467
  end
520
468
 
@@ -524,7 +472,6 @@ describe Mongoid::Association::Referenced::HasOne do
524
472
  end
525
473
 
526
474
  context 'when :as is not specified in the options' do
527
-
528
475
  it 'returns nil' do
529
476
  expect(association.as).to be_nil
530
477
  end
@@ -532,23 +479,19 @@ describe Mongoid::Association::Referenced::HasOne do
532
479
  end
533
480
 
534
481
  describe '#polymorphic?' do
535
-
536
482
  context 'when :as is specified in the options' do
537
-
538
483
  let(:options) do
539
484
  {
540
- as: :containable
485
+ as: :containable
541
486
  }
542
487
  end
543
488
 
544
489
  it 'returns true' do
545
490
  expect(association.polymorphic?).to be(true)
546
491
  end
547
-
548
492
  end
549
493
 
550
494
  context 'when :as is not specified in the options' do
551
-
552
495
  it 'returns false' do
553
496
  expect(association.polymorphic?).to be(false)
554
497
  end
@@ -556,20 +499,17 @@ describe Mongoid::Association::Referenced::HasOne do
556
499
  end
557
500
 
558
501
  describe '#type_setter' do
559
-
560
502
  context 'when polymorphic' do
561
-
562
503
  let(:options) do
563
504
  { as: :containable }
564
505
  end
565
506
 
566
507
  it 'returns the type followed by = as a String' do
567
- expect(association.type_setter).to eq("containable_type=")
508
+ expect(association.type_setter).to eq('containable_type=')
568
509
  end
569
510
  end
570
511
 
571
512
  context 'when not polymorphic' do
572
-
573
513
  it 'returns nil' do
574
514
  expect(association.type).to be_nil
575
515
  end
@@ -577,14 +517,11 @@ describe Mongoid::Association::Referenced::HasOne do
577
517
  end
578
518
 
579
519
  describe '#dependent' do
580
-
581
520
  context 'when the dependent option is provided' do
582
-
583
521
  context 'when the dependent option is :delete_all' do
584
-
585
522
  let(:options) do
586
523
  {
587
- dependent: :delete_all
524
+ dependent: :delete_all
588
525
  }
589
526
  end
590
527
 
@@ -594,10 +531,9 @@ describe Mongoid::Association::Referenced::HasOne do
594
531
  end
595
532
 
596
533
  context 'when the dependent option is :destroy' do
597
-
598
534
  let(:options) do
599
535
  {
600
- dependent: :destroy
536
+ dependent: :destroy
601
537
  }
602
538
  end
603
539
 
@@ -607,10 +543,9 @@ describe Mongoid::Association::Referenced::HasOne do
607
543
  end
608
544
 
609
545
  context 'when the dependent option is :nullify' do
610
-
611
546
  let(:options) do
612
547
  {
613
- dependent: :nullify
548
+ dependent: :nullify
614
549
  }
615
550
  end
616
551
 
@@ -620,10 +555,9 @@ describe Mongoid::Association::Referenced::HasOne do
620
555
  end
621
556
 
622
557
  context 'when the dependent option is :restrict_with_exception' do
623
-
624
558
  let(:options) do
625
559
  {
626
- dependent: :restrict_with_exception
560
+ dependent: :restrict_with_exception
627
561
  }
628
562
  end
629
563
 
@@ -633,10 +567,9 @@ describe Mongoid::Association::Referenced::HasOne do
633
567
  end
634
568
 
635
569
  context 'when the dependent option is :restrict_with_error' do
636
-
637
570
  let(:options) do
638
571
  {
639
- dependent: :restrict_with_error
572
+ dependent: :restrict_with_error
640
573
  }
641
574
  end
642
575
 
@@ -647,7 +580,6 @@ describe Mongoid::Association::Referenced::HasOne do
647
580
  end
648
581
 
649
582
  context 'when the dependent option is not provided' do
650
-
651
583
  it 'returns nil' do
652
584
  expect(association.dependent).to be_nil
653
585
  end
@@ -655,48 +587,41 @@ describe Mongoid::Association::Referenced::HasOne do
655
587
  end
656
588
 
657
589
  describe '#inverse_type' do
658
-
659
590
  it 'returns nil' do
660
591
  expect(association.inverse_type).to be_nil
661
592
  end
662
593
  end
663
594
 
664
595
  describe '#bindable?' do
665
-
666
596
  it 'returns false' do
667
597
  expect(association.bindable?(Person.new)).to be(false)
668
598
  end
669
599
  end
670
600
 
671
601
  describe '#inverses' do
672
-
673
602
  context 'when polymorphic' do
674
-
675
603
  before do
676
604
  BelongingObject.belongs_to :containable, polymorphic: true
677
605
  end
678
606
 
679
607
  let(:options) do
680
608
  {
681
- as: :containable
609
+ as: :containable
682
610
  }
683
611
  end
684
612
 
685
613
  context 'when another object is passed to the method' do
686
-
687
614
  let(:instance_of_other_class) do
688
615
  BelongingObject.new
689
616
  end
690
617
 
691
618
  context 'when the relation class has only one relation whose class matches the owning class' do
692
-
693
619
  it 'returns the :as attribute of this association' do
694
- expect(association.inverses(instance_of_other_class)).to match_array([ :containable ])
620
+ expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
695
621
  end
696
622
  end
697
623
 
698
624
  context 'when :inverse_of is specified' do
699
-
700
625
  before do
701
626
  options.merge!(inverse_of: :inverse_name)
702
627
  end
@@ -707,17 +632,14 @@ describe Mongoid::Association::Referenced::HasOne do
707
632
  end
708
633
 
709
634
  context 'when inverse_of is not specified' do
710
-
711
635
  it 'returns the :as attribute of this association' do
712
- expect(association.inverses(instance_of_other_class)).to match_array([ :containable ])
636
+ expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
713
637
  end
714
638
  end
715
639
  end
716
640
 
717
641
  context 'when another object is not passed to the method' do
718
-
719
642
  context 'when inverse_of is specified' do
720
-
721
643
  before do
722
644
  options.merge!(inverse_of: :inverse_name)
723
645
  end
@@ -728,7 +650,6 @@ describe Mongoid::Association::Referenced::HasOne do
728
650
  end
729
651
 
730
652
  context 'when inverse_of is not specified' do
731
-
732
653
  it 'returns the :as attribute' do
733
654
  expect(association.inverses).to eq([ :containable ])
734
655
  end
@@ -737,13 +658,11 @@ describe Mongoid::Association::Referenced::HasOne do
737
658
  end
738
659
 
739
660
  context 'when not polymorphic' do
740
-
741
661
  before do
742
662
  BelongingObject.belongs_to :owner_object
743
663
  end
744
664
 
745
665
  context 'when inverse_of is specified' do
746
-
747
666
  before do
748
667
  options.merge!(inverse_of: :inverse_name)
749
668
  end
@@ -754,50 +673,42 @@ describe Mongoid::Association::Referenced::HasOne do
754
673
  end
755
674
 
756
675
  context 'when inverse_of is not specified' do
757
-
758
676
  it 'uses the inverse class to find the inverse name' do
759
677
  expect(association.inverses).to eq([ :owner_object ])
760
678
  end
761
679
  end
762
680
 
763
681
  context 'when :cyclic is specified' do
764
-
765
682
  it 'returns the cyclic inverse name' do
766
-
767
683
  end
768
684
  end
769
685
  end
770
686
  end
771
687
 
772
688
  describe '#inverse' do
773
-
774
689
  context 'when polymorphic' do
775
-
776
690
  before do
777
691
  BelongingObject.belongs_to :containable, polymorphic: true
778
692
  end
779
693
 
780
694
  let(:options) do
781
695
  {
782
- as: :containable
696
+ as: :containable
783
697
  }
784
698
  end
785
699
 
786
700
  context 'when another object is passed to the method' do
787
-
788
701
  let(:instance_of_other_class) do
789
702
  BelongingObject.new
790
703
  end
791
704
 
792
705
  context 'when the relation class has only one relation whose class matches the owning class' do
793
-
794
706
  it 'returns the :as attribute of this association' do
795
707
  expect(association.inverse(instance_of_other_class)).to eq(:containable)
796
708
  end
797
709
  end
798
710
 
799
711
  context 'when :inverse_of is specified' do
800
-
801
712
  before do
802
713
  options.merge!(inverse_of: :inverse_name)
803
714
  end
@@ -808,7 +719,6 @@ describe Mongoid::Association::Referenced::HasOne do
808
719
  end
809
720
 
810
721
  context 'when inverse_of is not specified' do
811
-
812
722
  it 'returns the :as attribute of this association' do
813
723
  expect(association.inverse(instance_of_other_class)).to eq(:containable)
814
724
  end
@@ -816,9 +726,7 @@ describe Mongoid::Association::Referenced::HasOne do
816
726
  end
817
727
 
818
728
  context 'when another object is not passed to the method' do
819
-
820
729
  context 'when inverse_of is specified' do
821
-
822
730
  before do
823
731
  options.merge!(inverse_of: :inverse_name)
824
732
  end
@@ -829,7 +737,6 @@ describe Mongoid::Association::Referenced::HasOne do
829
737
  end
830
738
 
831
739
  context 'when inverse_of is not specified' do
832
-
833
740
  it 'returns the :as attribute' do
834
741
  expect(association.inverse).to eq(:containable)
835
742
  end
@@ -838,13 +745,11 @@ describe Mongoid::Association::Referenced::HasOne do
838
745
  end
839
746
 
840
747
  context 'when not polymorphic' do
841
-
842
748
  before do
843
749
  BelongingObject.belongs_to :owner_object
844
750
  end
845
751
 
846
752
  context 'when inverse_of is specified' do
847
-
848
753
  before do
849
754
  options.merge!(inverse_of: :inverse_name)
850
755
  end
@@ -855,31 +760,24 @@ describe Mongoid::Association::Referenced::HasOne do
855
760
  end
856
761
 
857
762
  context 'when inverse_of is not specified' do
858
-
859
763
  it 'uses the inverse class to find the inverse name' do
860
764
  expect(association.inverse).to eq(:owner_object)
861
765
  end
862
766
  end
863
767
 
864
768
  context 'when :cyclic is specified' do
865
-
866
769
  it 'returns the cyclic inverse name' do
867
-
868
770
  end
869
771
  end
870
772
  end
871
773
  end
872
774
 
873
775
  describe '#inverse_association' do
874
-
875
776
  end
876
777
 
877
778
  describe '#autosave' do
878
-
879
779
  context 'when the autosave option is specified' do
880
-
881
780
  context 'when the autosave option is true' do
882
-
883
781
  let(:options) do
884
782
  {
885
783
  autosave: true
@@ -892,10 +790,9 @@ describe Mongoid::Association::Referenced::HasOne do
892
790
  end
893
791
 
894
792
  context 'when the autosave option is false' do
895
-
896
793
  let(:options) do
897
794
  {
898
- autosave: false
795
+ autosave: false
899
796
  }
900
797
  end
901
798
 
@@ -906,7 +803,6 @@ describe Mongoid::Association::Referenced::HasOne do
906
803
  end
907
804
 
908
805
  context 'when the autosave option is not specified' do
909
-
910
806
  it 'returns false' do
911
807
  expect(association.autosave).to be(false)
912
808
  end
@@ -914,9 +810,7 @@ describe Mongoid::Association::Referenced::HasOne do
914
810
  end
915
811
 
916
812
  describe '#relation_class_name' do
917
-
918
813
  context 'when the classes are defined in a module' do
919
-
920
814
  let(:define_classes) do
921
815
  module HasOneAssociationClassName
922
816
  class OwnedClass
@@ -937,13 +831,12 @@ describe Mongoid::Association::Referenced::HasOne do
937
831
  define_classes
938
832
 
939
833
  expect(
940
- HasOneAssociationClassName::OwnedClass.relations['owner_class'].relation_class_name
834
+ HasOneAssociationClassName::OwnedClass.relations['owner_class'].relation_class_name
941
835
  ).to eq('OwnerClass')
942
836
  end
943
837
  end
944
838
 
945
839
  context 'when the :class_name option is specified' do
946
-
947
840
  let(:options) do
948
841
  { class_name: 'OtherBelongingObject' }
949
842
  end
@@ -964,13 +857,12 @@ describe Mongoid::Association::Referenced::HasOne do
964
857
  end
965
858
 
966
859
  context 'when the class_name option is not specified' do
967
-
968
860
  it 'uses the name of the relation to deduce the class name' do
969
861
  expect(association.relation_class_name).to eq('BelongingObject')
970
862
  end
971
863
  end
972
864
 
973
- context "when the class is not defined" do
865
+ context 'when the class is not defined' do
974
866
  let(:name) do
975
867
  :undefined_class
976
868
  end
@@ -982,9 +874,7 @@ describe Mongoid::Association::Referenced::HasOne do
982
874
  end
983
875
 
984
876
  describe '#relation_class' do
985
-
986
877
  context 'when the :class_name option is specified' do
987
-
988
878
  let!(:_class) do
989
879
  class OtherBelongingObject; end
990
880
  OtherBelongingObject
@@ -1010,7 +900,6 @@ describe Mongoid::Association::Referenced::HasOne do
1010
900
  end
1011
901
 
1012
902
  context 'when the class_name option is not specified' do
1013
-
1014
903
  it 'uses the name of the relation to deduce the class name' do
1015
904
  expect(association.relation_class).to eq(BelongingObject)
1016
905
  end
@@ -1024,7 +913,6 @@ describe Mongoid::Association::Referenced::HasOne do
1024
913
  end
1025
914
 
1026
915
  describe '#inverse_class_name' do
1027
-
1028
916
  it 'returns the name of the owner class' do
1029
917
  expect(association.inverse_class_name).to eq('OwnerObject')
1030
918
  end
@@ -1041,7 +929,6 @@ describe Mongoid::Association::Referenced::HasOne do
1041
929
  end
1042
930
 
1043
931
  describe '#inverse_class' do
1044
-
1045
932
  it 'returns the owner class' do
1046
933
  expect(association.inverse_class).to be(OwnerObject)
1047
934
  end
@@ -1058,9 +945,7 @@ describe Mongoid::Association::Referenced::HasOne do
1058
945
  end
1059
946
 
1060
947
  describe '#inverse_of' do
1061
-
1062
948
  context 'when :inverse_of is specified in the options' do
1063
-
1064
949
  let(:options) do
1065
950
  { inverse_of: :a_belonging_object }
1066
951
  end
@@ -1071,7 +956,6 @@ describe Mongoid::Association::Referenced::HasOne do
1071
956
  end
1072
957
 
1073
958
  context 'when :inverse_of is not specified in the options' do
1074
-
1075
959
  it 'returns nil' do
1076
960
  expect(association.inverse_of).to be_nil
1077
961
  end
@@ -1079,25 +963,20 @@ describe Mongoid::Association::Referenced::HasOne do
1079
963
  end
1080
964
 
1081
965
  describe '#key' do
1082
-
1083
966
  it 'returns the primary key' do
1084
967
  expect(association.key).to eq(association.primary_key)
1085
968
  end
1086
969
  end
1087
970
 
1088
971
  describe '#setter' do
1089
-
1090
972
  it 'returns a string of the name followed by =' do
1091
973
  expect(association.setter).to eq("#{name}=")
1092
974
  end
1093
975
  end
1094
976
 
1095
977
  describe '#validate?' do
1096
-
1097
978
  context 'when :validate is specified in the options' do
1098
-
1099
979
  context 'when validate is true' do
1100
-
1101
980
  let(:options) do
1102
981
  { validate: true }
1103
982
  end
@@ -1108,7 +987,6 @@ describe Mongoid::Association::Referenced::HasOne do
1108
987
  end
1109
988
 
1110
989
  context 'when validate is false' do
1111
-
1112
990
  let(:options) do
1113
991
  { validate: false }
1114
992
  end
@@ -1120,7 +998,6 @@ describe Mongoid::Association::Referenced::HasOne do
1120
998
  end
1121
999
 
1122
1000
  context 'when :validate is not specified in the options' do
1123
-
1124
1001
  it 'returns the validation_default' do
1125
1002
  expect(association.send(:validate?)).to eq(association.validation_default)
1126
1003
  end
@@ -1128,11 +1005,8 @@ describe Mongoid::Association::Referenced::HasOne do
1128
1005
  end
1129
1006
 
1130
1007
  describe '#autobuilding?' do
1131
-
1132
1008
  context 'when :autobuild is specified in the options' do
1133
-
1134
1009
  context 'when autobuild is true' do
1135
-
1136
1010
  let(:options) do
1137
1011
  { autobuild: true }
1138
1012
  end
@@ -1143,7 +1017,6 @@ describe Mongoid::Association::Referenced::HasOne do
1143
1017
  end
1144
1018
 
1145
1019
  context 'when autobuild is false' do
1146
-
1147
1020
  let(:options) do
1148
1021
  { autobuild: false }
1149
1022
  end
@@ -1155,7 +1028,6 @@ describe Mongoid::Association::Referenced::HasOne do
1155
1028
  end
1156
1029
 
1157
1030
  context 'when :validate is not specified in the options' do
1158
-
1159
1031
  it 'returns false' do
1160
1032
  expect(association.autobuilding?).to be(false)
1161
1033
  end
@@ -1163,23 +1035,19 @@ describe Mongoid::Association::Referenced::HasOne do
1163
1035
  end
1164
1036
 
1165
1037
  describe '#forced_nil_inverse?' do
1166
-
1167
1038
  it 'returns false' do
1168
1039
  expect(association.forced_nil_inverse?).to be(false)
1169
1040
  end
1170
1041
  end
1171
1042
 
1172
1043
  describe '#stores_foreign_key?' do
1173
-
1174
1044
  it 'returns false' do
1175
1045
  expect(association.stores_foreign_key?).to be(false)
1176
1046
  end
1177
1047
  end
1178
1048
 
1179
1049
  describe '#inverse_setter' do
1180
-
1181
1050
  context 'when an inverse can be determined' do
1182
-
1183
1051
  before do
1184
1052
  BelongingObject.belongs_to :owner_object
1185
1053
  end
@@ -1190,7 +1058,6 @@ describe Mongoid::Association::Referenced::HasOne do
1190
1058
  end
1191
1059
 
1192
1060
  context 'when an inverse cannot be determined' do
1193
-
1194
1061
  it 'returns nil' do
1195
1062
  expect(association.inverse_setter).to be_nil
1196
1063
  end
@@ -1198,11 +1065,10 @@ describe Mongoid::Association::Referenced::HasOne do
1198
1065
  end
1199
1066
 
1200
1067
  describe '#extension' do
1201
-
1202
1068
  context 'when a block is passed' do
1203
-
1204
1069
  let(:association) do
1205
- has_one_class.embeds_one name, options do; end
1070
+ has_one_class.embeds_one name, options do
1071
+ end
1206
1072
  end
1207
1073
 
1208
1074
  it 'defines an extension module' do
@@ -1211,12 +1077,12 @@ describe Mongoid::Association::Referenced::HasOne do
1211
1077
 
1212
1078
  it 'returns the extension' do
1213
1079
  expect(association.extension).to eq(
1214
- "#{has_one_class.name}::#{has_one_class.name}#{name.to_s.camelize}RelationExtension".constantize)
1080
+ "#{has_one_class.name}::#{has_one_class.name}#{name.to_s.camelize}RelationExtension".constantize
1081
+ )
1215
1082
  end
1216
1083
  end
1217
1084
 
1218
1085
  context 'when an :extension is not specified in the options' do
1219
-
1220
1086
  it 'returns false' do
1221
1087
  expect(association.extension).to be_nil
1222
1088
  end
@@ -1224,21 +1090,17 @@ describe Mongoid::Association::Referenced::HasOne do
1224
1090
  end
1225
1091
 
1226
1092
  describe '#foreign_key_setter' do
1227
-
1228
1093
  it 'returns the foreign key followed by "="' do
1229
1094
  expect(association.foreign_key_setter).to eq("#{association.foreign_key}=")
1230
1095
  end
1231
1096
  end
1232
1097
 
1233
1098
  describe '#destructive?' do
1234
-
1235
1099
  context 'when the dependent option is provided' do
1236
-
1237
1100
  context 'when the dependent option is :delete_all' do
1238
-
1239
1101
  let(:options) do
1240
1102
  {
1241
- dependent: :delete_all
1103
+ dependent: :delete_all
1242
1104
  }
1243
1105
  end
1244
1106
 
@@ -1248,10 +1110,9 @@ describe Mongoid::Association::Referenced::HasOne do
1248
1110
  end
1249
1111
 
1250
1112
  context 'when the dependent option is :destroy' do
1251
-
1252
1113
  let(:options) do
1253
1114
  {
1254
- dependent: :destroy
1115
+ dependent: :destroy
1255
1116
  }
1256
1117
  end
1257
1118
 
@@ -1261,10 +1122,9 @@ describe Mongoid::Association::Referenced::HasOne do
1261
1122
  end
1262
1123
 
1263
1124
  context 'when the dependent option is :nullify' do
1264
-
1265
1125
  let(:options) do
1266
1126
  {
1267
- dependent: :nullify
1127
+ dependent: :nullify
1268
1128
  }
1269
1129
  end
1270
1130
 
@@ -1274,10 +1134,9 @@ describe Mongoid::Association::Referenced::HasOne do
1274
1134
  end
1275
1135
 
1276
1136
  context 'when the dependent option is :restrict_with_exception' do
1277
-
1278
1137
  let(:options) do
1279
1138
  {
1280
- dependent: :restrict_with_exception
1139
+ dependent: :restrict_with_exception
1281
1140
  }
1282
1141
  end
1283
1142
 
@@ -1287,10 +1146,9 @@ describe Mongoid::Association::Referenced::HasOne do
1287
1146
  end
1288
1147
 
1289
1148
  context 'when the dependent option is :restrict_with_error' do
1290
-
1291
1149
  let(:options) do
1292
1150
  {
1293
- dependent: :restrict_with_error
1151
+ dependent: :restrict_with_error
1294
1152
  }
1295
1153
  end
1296
1154
 
@@ -1301,7 +1159,6 @@ describe Mongoid::Association::Referenced::HasOne do
1301
1159
  end
1302
1160
 
1303
1161
  context 'when the dependent option is not provided' do
1304
-
1305
1162
  it 'returns false' do
1306
1163
  expect(association.destructive?).to be(false)
1307
1164
  end
@@ -1309,7 +1166,6 @@ describe Mongoid::Association::Referenced::HasOne do
1309
1166
  end
1310
1167
 
1311
1168
  context 'when the classes are defined in a module' do
1312
-
1313
1169
  let(:define_classes) do
1314
1170
  module HasOneAssociationModuleDefinitions
1315
1171
  class OwnedClass
@@ -1341,28 +1197,24 @@ describe Mongoid::Association::Referenced::HasOne do
1341
1197
  end
1342
1198
 
1343
1199
  describe '#nested_builder' do
1344
-
1345
1200
  it 'returns an instance of Association::Nested::One' do
1346
1201
  expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::One)
1347
1202
  end
1348
1203
  end
1349
1204
 
1350
1205
  describe '#path' do
1351
-
1352
1206
  it 'returns an instance of Mongoid::Atomic::Paths::Root' do
1353
- expect(association.path(double( :_parent => true))).to be_a(Mongoid::Atomic::Paths::Root)
1207
+ expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Root)
1354
1208
  end
1355
1209
  end
1356
1210
 
1357
1211
  describe '#foreign_key_check' do
1358
-
1359
1212
  it 'returns the nil' do
1360
1213
  expect(association.foreign_key_check).to be_nil
1361
1214
  end
1362
1215
  end
1363
1216
 
1364
1217
  describe '#create_relation' do
1365
-
1366
1218
  let(:owner) do
1367
1219
  OwnerObject.new
1368
1220
  end