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,12 +1,9 @@
1
1
  # frozen_string_literal: true
2
- # rubocop:todo all
3
2
 
4
- require "spec_helper"
3
+ require 'spec_helper'
5
4
 
6
5
  describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
7
-
8
- describe "#===" do
9
-
6
+ describe '#===' do
10
7
  let(:base) do
11
8
  Person.new
12
9
  end
@@ -16,27 +13,23 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
16
13
  end
17
14
 
18
15
  let(:association) do
19
- Person.relations["name"]
16
+ Person.relations['name']
20
17
  end
21
18
 
22
19
  let(:relation) do
23
20
  described_class.new(base, target, association)
24
21
  end
25
22
 
26
- context "when the proxied document is same class" do
27
-
28
- it "returns true" do
29
- expect((relation === Name.new)).to be true
23
+ context 'when the proxied document is same class' do
24
+ it 'returns true' do
25
+ expect(relation === Name.new).to be true
30
26
  end
31
27
  end
32
28
  end
33
29
 
34
- describe "#=" do
35
-
36
- context "when the relation is not cyclic" do
37
-
38
- context "when the parent is a new record" do
39
-
30
+ describe '#=' do
31
+ context 'when the relation is not cyclic' do
32
+ context 'when the parent is a new record' do
40
33
  let(:person) do
41
34
  Person.new
42
35
  end
@@ -49,24 +42,23 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
49
42
  person.name = name
50
43
  end
51
44
 
52
- it "sets the target of the relation" do
45
+ it 'sets the target of the relation' do
53
46
  expect(person.name).to eq(name)
54
47
  end
55
48
 
56
- it "sets the base on the inverse relation" do
49
+ it 'sets the base on the inverse relation' do
57
50
  expect(name.namable).to eq(person)
58
51
  end
59
52
 
60
- it "sets the same instance on the inverse relation" do
53
+ it 'sets the same instance on the inverse relation' do
61
54
  expect(name.namable).to eql(person)
62
55
  end
63
56
 
64
- it "does not save the target" do
65
- expect(name).to_not be_persisted
57
+ it 'does not save the target' do
58
+ expect(name).not_to be_persisted
66
59
  end
67
60
 
68
- context "with overwritten getter" do
69
-
61
+ context 'with overwritten getter' do
70
62
  before do
71
63
  person.name = nil
72
64
  def person.name_with_default
@@ -78,15 +70,14 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
78
70
  end
79
71
  end
80
72
 
81
- it "sets the target without an invinite recursion" do
73
+ it 'sets the target without an infinite recursion' do
82
74
  person.name = name
83
75
  expect(person.name).to be_present
84
76
  end
85
77
  end
86
78
  end
87
79
 
88
- context "when the parent is not a new record" do
89
-
80
+ context 'when the parent is not a new record' do
90
81
  let(:person) do
91
82
  Person.create!
92
83
  end
@@ -95,8 +86,7 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
95
86
  Name.new
96
87
  end
97
88
 
98
- context "when setting with a hash" do
99
-
89
+ context 'when setting with a hash' do
100
90
  before do
101
91
  person.name = {}
102
92
  end
@@ -105,74 +95,70 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
105
95
  person.name
106
96
  end
107
97
 
108
- it "sets the target of the relation" do
98
+ it 'sets the target of the relation' do
109
99
  expect(person.name).to eq(child_name)
110
100
  end
111
101
 
112
- it "sets the base on the inverse relation" do
102
+ it 'sets the base on the inverse relation' do
113
103
  expect(child_name.namable).to eq(person)
114
104
  end
115
105
 
116
- it "sets the same instance on the inverse relation" do
106
+ it 'sets the same instance on the inverse relation' do
117
107
  expect(child_name.namable).to eql(person)
118
108
  end
119
109
 
120
- it "saves the target" do
110
+ it 'saves the target' do
121
111
  expect(child_name).to be_persisted
122
112
  end
123
113
 
124
- context "when replacing a relation with a hash" do
125
-
114
+ context 'when replacing a relation with a hash' do
126
115
  before do
127
116
  person.name = {}
128
117
  end
129
118
 
130
- it "sets the relation with the proper object" do
119
+ it 'sets the relation with the proper object' do
131
120
  expect(person.name).to be_a(Name)
132
121
  end
133
122
  end
134
123
  end
135
124
 
136
- context "when setting to the same document" do
137
-
125
+ context 'when setting to the same document' do
138
126
  before do
139
127
  person.name = name
140
128
  person.name = person.name
141
129
  end
142
130
 
143
- it "does not change the relation" do
131
+ it 'does not change the relation' do
144
132
  expect(person.name).to eq(name)
145
133
  end
146
134
 
147
- it "does not persist any change" do
135
+ it 'does not persist any change' do
148
136
  expect(person.reload.name).to eq(name)
149
137
  end
150
138
  end
151
139
 
152
- context "when setting directly" do
153
-
140
+ context 'when setting directly' do
154
141
  before do
155
142
  person.name = name
156
143
  end
157
144
 
158
- it "sets the target of the relation" do
145
+ it 'sets the target of the relation' do
159
146
  expect(person.name).to eq(name)
160
147
  end
161
148
 
162
- it "sets the base on the inverse relation" do
149
+ it 'sets the base on the inverse relation' do
163
150
  expect(name.namable).to eq(person)
164
151
  end
165
152
 
166
- it "sets the same instance on the inverse relation" do
153
+ it 'sets the same instance on the inverse relation' do
167
154
  expect(name.namable).to eql(person)
168
155
  end
169
156
 
170
- it "saves the target" do
157
+ it 'saves the target' do
171
158
  expect(name).to be_persisted
172
159
  end
173
160
 
174
- context "when replacing an existing document" do
175
-
161
+ context 'when replacing an existing document' do
176
162
  let(:pet_owner) do
177
163
  PetOwner.create!
178
164
  end
@@ -190,22 +176,21 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
190
176
  pet_owner.pet = pet_two
191
177
  end
192
178
 
193
- it "runs the destroy callbacks on the old document" do
179
+ it 'runs the destroy callbacks on the old document' do
194
180
  expect(pet_one.destroy_flag).to be true
195
181
  end
196
182
 
197
- it "keeps the name of the destroyed" do
198
- expect(pet_one.name).to eq("kika")
183
+ it 'keeps the name of the destroyed' do
184
+ expect(pet_one.name).to eq('kika')
199
185
  end
200
186
 
201
- it "saves the new name" do
202
- expect(pet_owner.pet.name).to eq("tiksy")
187
+ it 'saves the new name' do
188
+ expect(pet_owner.pet.name).to eq('tiksy')
203
189
  end
204
190
  end
205
191
  end
206
192
 
207
193
  context 'when the original document does not need to be unset because it will be replaced by the $set' do
208
-
209
194
  let!(:pet_owner) do
210
195
  PetOwner.create!(pet: pet_one)
211
196
  end
@@ -219,7 +204,7 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
219
204
  end
220
205
 
221
206
  before do
222
- expect(Mongo::Logger.logger).to receive(:debug?).exactly(2).times
207
+ expect(Mongo::Logger.logger).to receive(:debug?).twice
223
208
  end
224
209
 
225
210
  it 'does not execute an unnecessary unset for the relation' do
@@ -227,27 +212,24 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
227
212
  end
228
213
  end
229
214
 
230
- context "when setting via the parent attributes" do
231
-
215
+ context 'when setting via the parent attributes' do
232
216
  before do
233
217
  person.attributes = { name: name }
234
218
  end
235
219
 
236
- it "sets the target of the relation" do
220
+ it 'sets the target of the relation' do
237
221
  expect(person.name).to eq(name)
238
222
  end
239
223
 
240
- it "does not save the target" do
241
- expect(name).to_not be_persisted
224
+ it 'does not save the target' do
225
+ expect(name).not_to be_persisted
242
226
  end
243
227
  end
244
228
  end
245
229
  end
246
230
 
247
- context "when the relation is cyclic" do
248
-
249
- context "when the parent is a new record" do
250
-
231
+ context 'when the relation is cyclic' do
232
+ context 'when the parent is a new record' do
251
233
  let(:parent_shelf) do
252
234
  Shelf.new
253
235
  end
@@ -260,25 +242,24 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
260
242
  parent_shelf.child_shelf = child_shelf
261
243
  end
262
244
 
263
- it "sets the target of the relation" do
245
+ it 'sets the target of the relation' do
264
246
  expect(parent_shelf.child_shelf).to eq(child_shelf)
265
247
  end
266
248
 
267
- it "sets the base on the inverse relation" do
249
+ it 'sets the base on the inverse relation' do
268
250
  expect(child_shelf.parent_shelf).to eq(parent_shelf)
269
251
  end
270
252
 
271
- it "sets the same instance on the inverse relation" do
253
+ it 'sets the same instance on the inverse relation' do
272
254
  expect(child_shelf.parent_shelf).to eql(parent_shelf)
273
255
  end
274
256
 
275
- it "does not save the target" do
276
- expect(child_shelf).to_not be_persisted
257
+ it 'does not save the target' do
258
+ expect(child_shelf).not_to be_persisted
277
259
  end
278
260
  end
279
261
 
280
- context "when the parent is not a new record" do
281
-
262
+ context 'when the parent is not a new record' do
282
263
  let(:parent_shelf) do
283
264
  Shelf.create!
284
265
  end
@@ -291,26 +272,25 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
291
272
  parent_shelf.child_shelf = child_shelf
292
273
  end
293
274
 
294
- it "sets the target of the relation" do
275
+ it 'sets the target of the relation' do
295
276
  expect(parent_shelf.child_shelf).to eq(child_shelf)
296
277
  end
297
278
 
298
- it "sets the base on the inverse relation" do
279
+ it 'sets the base on the inverse relation' do
299
280
  expect(child_shelf.parent_shelf).to eq(parent_shelf)
300
281
  end
301
282
 
302
- it "sets the same instance on the inverse relation" do
283
+ it 'sets the same instance on the inverse relation' do
303
284
  expect(child_shelf.parent_shelf).to eql(parent_shelf)
304
285
  end
305
286
 
306
- it "saves the target" do
287
+ it 'saves the target' do
307
288
  expect(child_shelf).to be_persisted
308
289
  end
309
290
  end
310
291
  end
311
292
 
312
- context "when setting a new document multiple times in a row" do
313
-
293
+ context 'when setting a new document multiple times in a row' do
314
294
  let(:parent) do
315
295
  Parent.create!
316
296
  end
@@ -321,18 +301,15 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
321
301
  parent.first_child = Child.new
322
302
  end
323
303
 
324
- it "saves the child document" do
304
+ it 'saves the child document' do
325
305
  expect(parent.first_child).to be_a(Child)
326
306
  end
327
307
  end
328
308
  end
329
309
 
330
- describe "#= nil" do
331
-
332
- context "when the relation is not cyclic" do
333
-
334
- context "when the parent is a new record" do
335
-
310
+ describe '#= nil' do
311
+ context 'when the relation is not cyclic' do
312
+ context 'when the parent is a new record' do
336
313
  let(:person) do
337
314
  Person.new
338
315
  end
@@ -346,17 +323,16 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
346
323
  person.name = nil
347
324
  end
348
325
 
349
- it "sets the relation to nil" do
326
+ it 'sets the relation to nil' do
350
327
  expect(person.name).to be_nil
351
328
  end
352
329
 
353
- it "removes the inverse relation" do
330
+ it 'removes the inverse relation' do
354
331
  expect(name.namable).to be_nil
355
332
  end
356
333
  end
357
334
 
358
- context "when the inverse is already nil" do
359
-
335
+ context 'when the inverse is already nil' do
360
336
  let(:person) do
361
337
  Person.new
362
338
  end
@@ -365,13 +341,12 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
365
341
  person.name = nil
366
342
  end
367
343
 
368
- it "sets the relation to nil" do
344
+ it 'sets the relation to nil' do
369
345
  expect(person.name).to be_nil
370
346
  end
371
347
  end
372
348
 
373
- context "when the parent is persisted" do
374
-
349
+ context 'when the parent is persisted' do
375
350
  let(:person) do
376
351
  Person.create!
377
352
  end
@@ -380,48 +355,44 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
380
355
  Name.new
381
356
  end
382
357
 
383
- context "when setting directly" do
384
-
358
+ context 'when setting directly' do
385
359
  before do
386
360
  person.name = name
387
361
  person.name = nil
388
362
  end
389
363
 
390
- it "sets the relation to nil" do
364
+ it 'sets the relation to nil' do
391
365
  expect(person.name).to be_nil
392
366
  end
393
367
 
394
- it "removed the inverse relation" do
368
+ it 'removed the inverse relation' do
395
369
  expect(name.namable).to be_nil
396
370
  end
397
371
 
398
- it "deletes the child document" do
372
+ it 'deletes the child document' do
399
373
  expect(name).to be_destroyed
400
374
  end
401
375
  end
402
376
 
403
- context "when setting via parent attributes" do
404
-
377
+ context 'when setting via parent attributes' do
405
378
  before do
406
379
  person.name = name
407
380
  person.attributes = { name: nil }
408
381
  end
409
382
 
410
- it "sets the relation to nil" do
383
+ it 'sets the relation to nil' do
411
384
  expect(person.name).to be_nil
412
385
  end
413
386
 
414
- it "does not delete the child document" do
415
- expect(name).to_not be_destroyed
387
+ it 'does not delete the child document' do
388
+ expect(name).not_to be_destroyed
416
389
  end
417
390
  end
418
391
  end
419
392
  end
420
393
 
421
- context "when the relation is cyclic" do
422
-
423
- context "when the parent is a new record" do
424
-
394
+ context 'when the relation is cyclic' do
395
+ context 'when the parent is a new record' do
425
396
  let(:parent_shelf) do
426
397
  Shelf.new
427
398
  end
@@ -435,17 +406,16 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
435
406
  parent_shelf.child_shelf = nil
436
407
  end
437
408
 
438
- it "sets the relation to nil" do
409
+ it 'sets the relation to nil' do
439
410
  expect(parent_shelf.child_shelf).to be_nil
440
411
  end
441
412
 
442
- it "removes the inverse relation" do
413
+ it 'removes the inverse relation' do
443
414
  expect(child_shelf.parent_shelf).to be_nil
444
415
  end
445
416
  end
446
417
 
447
- context "when the inverse is already nil" do
448
-
418
+ context 'when the inverse is already nil' do
449
419
  let(:parent_shelf) do
450
420
  Shelf.new
451
421
  end
@@ -454,13 +424,12 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
454
424
  parent_shelf.child_shelf = nil
455
425
  end
456
426
 
457
- it "sets the relation to nil" do
427
+ it 'sets the relation to nil' do
458
428
  expect(parent_shelf.child_shelf).to be_nil
459
429
  end
460
430
  end
461
431
 
462
- context "when the documents are not new records" do
463
-
432
+ context 'when the documents are not new records' do
464
433
  let(:parent_shelf) do
465
434
  Shelf.create!
466
435
  end
@@ -474,15 +443,15 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
474
443
  parent_shelf.child_shelf = nil
475
444
  end
476
445
 
477
- it "sets the relation to nil" do
446
+ it 'sets the relation to nil' do
478
447
  expect(parent_shelf.child_shelf).to be_nil
479
448
  end
480
449
 
481
- it "removed the inverse relation" do
450
+ it 'removed the inverse relation' do
482
451
  expect(child_shelf.parent_shelf).to be_nil
483
452
  end
484
453
 
485
- it "deletes the child document" do
454
+ it 'deletes the child document' do
486
455
  expect(child_shelf).to be_destroyed
487
456
  end
488
457
  end
@@ -490,15 +459,10 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
490
459
  end
491
460
 
492
461
  describe "#build_#\{name}" do
493
-
494
- context "when the relation is not cyclic" do
495
-
496
- context "when the parent is a new record" do
497
-
498
- context "when not providing any attributes" do
499
-
500
- context "when building once" do
501
-
462
+ context 'when the relation is not cyclic' do
463
+ context 'when the parent is a new record' do
464
+ context 'when not providing any attributes' do
465
+ context 'when building once' do
502
466
  let(:person) do
503
467
  Person.new
504
468
  end
@@ -507,25 +471,24 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
507
471
  person.build_name
508
472
  end
509
473
 
510
- it "sets the target of the relation" do
474
+ it 'sets the target of the relation' do
511
475
  expect(person.name).to eq(name)
512
476
  end
513
477
 
514
- it "sets the base on the inverse relation" do
478
+ it 'sets the base on the inverse relation' do
515
479
  expect(name.namable).to eq(person)
516
480
  end
517
481
 
518
- it "sets no attributes" do
482
+ it 'sets no attributes' do
519
483
  expect(name.first_name).to be_nil
520
484
  end
521
485
 
522
- it "does not save the target" do
523
- expect(name).to_not be_persisted
486
+ it 'does not save the target' do
487
+ expect(name).not_to be_persisted
524
488
  end
525
489
  end
526
490
 
527
- context "when building twice" do
528
-
491
+ context 'when building twice' do
529
492
  let(:person) do
530
493
  Person.new
531
494
  end
@@ -535,26 +498,25 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
535
498
  person.build_name
536
499
  end
537
500
 
538
- it "sets the target of the relation" do
501
+ it 'sets the target of the relation' do
539
502
  expect(person.name).to eq(name)
540
503
  end
541
504
 
542
- it "sets the base on the inverse relation" do
505
+ it 'sets the base on the inverse relation' do
543
506
  expect(name.namable).to eq(person)
544
507
  end
545
508
 
546
- it "sets no attributes" do
509
+ it 'sets no attributes' do
547
510
  expect(name.first_name).to be_nil
548
511
  end
549
512
 
550
- it "does not save the target" do
551
- expect(name).to_not be_persisted
513
+ it 'does not save the target' do
514
+ expect(name).not_to be_persisted
552
515
  end
553
516
  end
554
517
  end
555
518
 
556
- context "when passing nil as the attributes" do
557
-
519
+ context 'when passing nil as the attributes' do
558
520
  let(:person) do
559
521
  Person.new
560
522
  end
@@ -563,71 +525,67 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
563
525
  person.build_name(nil)
564
526
  end
565
527
 
566
- it "sets the target of the relation" do
528
+ it 'sets the target of the relation' do
567
529
  expect(person.name).to eq(name)
568
530
  end
569
531
 
570
- it "sets the base on the inverse relation" do
532
+ it 'sets the base on the inverse relation' do
571
533
  expect(name.namable).to eq(person)
572
534
  end
573
535
 
574
- it "sets no attributes" do
536
+ it 'sets no attributes' do
575
537
  expect(name.first_name).to be_nil
576
538
  end
577
539
 
578
- it "does not save the target" do
579
- expect(name).to_not be_persisted
540
+ it 'does not save the target' do
541
+ expect(name).not_to be_persisted
580
542
  end
581
543
  end
582
544
 
583
- context "when providing attributes" do
584
-
545
+ context 'when providing attributes' do
585
546
  let(:person) do
586
547
  Person.new
587
548
  end
588
549
 
589
550
  let!(:name) do
590
- person.build_name(first_name: "James")
551
+ person.build_name(first_name: 'James')
591
552
  end
592
553
 
593
- it "sets the target of the relation" do
554
+ it 'sets the target of the relation' do
594
555
  expect(person.name).to eq(name)
595
556
  end
596
557
 
597
- it "sets the base on the inverse relation" do
558
+ it 'sets the base on the inverse relation' do
598
559
  expect(name.namable).to eq(person)
599
560
  end
600
561
 
601
- it "sets the attributes" do
602
- expect(name.first_name).to eq("James")
562
+ it 'sets the attributes' do
563
+ expect(name.first_name).to eq('James')
603
564
  end
604
565
 
605
- it "does not save the target" do
606
- expect(name).to_not be_persisted
566
+ it 'does not save the target' do
567
+ expect(name).not_to be_persisted
607
568
  end
608
569
  end
609
570
  end
610
571
 
611
- context "when the parent is not a new record" do
612
-
572
+ context 'when the parent is not a new record' do
613
573
  let(:person) do
614
574
  Person.create!
615
575
  end
616
576
 
617
577
  let!(:name) do
618
- person.build_name(first_name: "James")
578
+ person.build_name(first_name: 'James')
619
579
  end
620
580
 
621
- it "does not save the target" do
622
- expect(name).to_not be_persisted
581
+ it 'does not save the target' do
582
+ expect(name).not_to be_persisted
623
583
  end
624
584
  end
625
585
  end
626
586
 
627
- context "when the relation is cyclic" do
628
-
629
- context "when the parent is a new record" do
630
-
587
+ context 'when the relation is cyclic' do
588
+ context 'when the parent is a new record' do
631
589
  let(:parent_shelf) do
632
590
  Shelf.new
633
591
  end
@@ -636,25 +594,24 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
636
594
  parent_shelf.build_child_shelf(level: 1)
637
595
  end
638
596
 
639
- it "sets the target of the relation" do
597
+ it 'sets the target of the relation' do
640
598
  expect(parent_shelf.child_shelf).to eq(child_shelf)
641
599
  end
642
600
 
643
- it "sets the base on the inverse relation" do
601
+ it 'sets the base on the inverse relation' do
644
602
  expect(child_shelf.parent_shelf).to eq(parent_shelf)
645
603
  end
646
604
 
647
- it "sets the attributes" do
605
+ it 'sets the attributes' do
648
606
  expect(child_shelf.level).to eq(1)
649
607
  end
650
608
 
651
- it "does not save the target" do
652
- expect(child_shelf).to_not be_persisted
609
+ it 'does not save the target' do
610
+ expect(child_shelf).not_to be_persisted
653
611
  end
654
612
  end
655
613
 
656
- context "when the parent is not a new record" do
657
-
614
+ context 'when the parent is not a new record' do
658
615
  let(:parent_shelf) do
659
616
  Shelf.create!
660
617
  end
@@ -663,19 +620,16 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
663
620
  parent_shelf.build_child_shelf(level: 2)
664
621
  end
665
622
 
666
- it "does not save the target" do
667
- expect(child_shelf).to_not be_persisted
623
+ it 'does not save the target' do
624
+ expect(child_shelf).not_to be_persisted
668
625
  end
669
626
  end
670
627
  end
671
628
  end
672
629
 
673
630
  describe "#create_#\{name}" do
674
-
675
- context "when the parent is a new record" do
676
-
677
- context "when not providing any attributes" do
678
-
631
+ context 'when the parent is a new record' do
632
+ context 'when not providing any attributes' do
679
633
  let(:person) do
680
634
  Person.new
681
635
  end
@@ -684,25 +638,24 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
684
638
  person.create_name
685
639
  end
686
640
 
687
- it "sets the target of the relation" do
641
+ it 'sets the target of the relation' do
688
642
  expect(person.name).to eq(name)
689
643
  end
690
644
 
691
- it "sets the base on the inverse relation" do
645
+ it 'sets the base on the inverse relation' do
692
646
  expect(name.namable).to eq(person)
693
647
  end
694
648
 
695
- it "sets no attributes" do
649
+ it 'sets no attributes' do
696
650
  expect(name.first_name).to be_nil
697
651
  end
698
652
 
699
- it "saves the target" do
653
+ it 'saves the target' do
700
654
  expect(name).to be_persisted
701
655
  end
702
656
  end
703
657
 
704
- context "when passing nil as the attributes" do
705
-
658
+ context 'when passing nil as the attributes' do
706
659
  let(:person) do
707
660
  Person.new
708
661
  end
@@ -711,73 +664,68 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
711
664
  person.create_name(nil)
712
665
  end
713
666
 
714
- it "sets the target of the relation" do
667
+ it 'sets the target of the relation' do
715
668
  expect(person.name).to eq(name)
716
669
  end
717
670
 
718
- it "sets the base on the inverse relation" do
671
+ it 'sets the base on the inverse relation' do
719
672
  expect(name.namable).to eq(person)
720
673
  end
721
674
 
722
- it "sets no attributes" do
675
+ it 'sets no attributes' do
723
676
  expect(name.first_name).to be_nil
724
677
  end
725
678
 
726
- it "saves the target" do
679
+ it 'saves the target' do
727
680
  expect(name).to be_persisted
728
681
  end
729
682
  end
730
683
 
731
- context "when providing attributes" do
732
-
684
+ context 'when providing attributes' do
733
685
  let(:person) do
734
686
  Person.new
735
687
  end
736
688
 
737
689
  let!(:name) do
738
- person.create_name(first_name: "James")
690
+ person.create_name(first_name: 'James')
739
691
  end
740
692
 
741
- it "sets the target of the relation" do
693
+ it 'sets the target of the relation' do
742
694
  expect(person.name).to eq(name)
743
695
  end
744
696
 
745
- it "sets the base on the inverse relation" do
697
+ it 'sets the base on the inverse relation' do
746
698
  expect(name.namable).to eq(person)
747
699
  end
748
700
 
749
- it "sets the attributes" do
750
- expect(name.first_name).to eq("James")
701
+ it 'sets the attributes' do
702
+ expect(name.first_name).to eq('James')
751
703
  end
752
704
 
753
- it "saves the target" do
705
+ it 'saves the target' do
754
706
  expect(name).to be_persisted
755
707
  end
756
708
  end
757
709
 
758
- context "when the parent is not a new record" do
759
-
710
+ context 'when the parent is not a new record' do
760
711
  let(:person) do
761
712
  Person.create!
762
713
  end
763
714
 
764
715
  let!(:name) do
765
- person.create_name(first_name: "James")
716
+ person.create_name(first_name: 'James')
766
717
  end
767
718
 
768
- it "does not save the target" do
719
+ it 'does not save the target' do
769
720
  expect(name).to be_persisted
770
721
  end
771
722
  end
772
723
  end
773
724
  end
774
725
 
775
- describe "when the relationship is polymorphic" do
776
-
777
- context "when updating an aliased embedded document" do
778
-
779
- context "when the embedded document inherits its relationship" do
780
-
726
+ describe 'when the relationship is polymorphic' do
727
+ context 'when updating an aliased embedded document' do
728
+ context 'when the embedded document inherits its relationship' do
781
729
  let(:courier_job) do
782
730
  CourierJob.create!
783
731
  end
@@ -793,7 +741,7 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
793
741
  after do
794
742
  # Note that this is necessary, otherwise all further Address objects will be
795
743
  # saved with a "_type" attributes. See Traversable#inherited for why.
796
- Address.send(:remove_defaults, "_type")
744
+ Address.send(:remove_defaults, '_type')
797
745
  end
798
746
 
799
747
  before do
@@ -802,28 +750,26 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
802
750
  courier_job.reload
803
751
  end
804
752
 
805
- it "the child is embedded correctly" do
753
+ it 'the child is embedded correctly' do
806
754
  expect(courier_job.drop_address).to eq(new_child)
807
755
  end
808
756
  end
809
757
  end
810
758
  end
811
759
 
812
- describe ".embedded?" do
813
-
814
- it "returns true" do
760
+ describe '.embedded?' do
761
+ it 'returns true' do
815
762
  expect(described_class).to be_embedded
816
763
  end
817
764
  end
818
765
 
819
- describe "#respond_to?" do
820
-
766
+ describe '#respond_to?' do
821
767
  let(:person) do
822
768
  Person.new
823
769
  end
824
770
 
825
771
  let!(:name) do
826
- person.build_name(first_name: "Tony")
772
+ person.build_name(first_name: 'Tony')
827
773
  end
828
774
 
829
775
  let(:document) do
@@ -831,57 +777,52 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
831
777
  end
832
778
 
833
779
  Mongoid::Document.public_instance_methods(true).each do |method|
834
-
835
780
  context "when checking #{method}" do
836
-
837
- it "returns true" do
781
+ it 'returns true' do
838
782
  expect(document.respond_to?(method)).to be true
839
783
  end
840
784
  end
841
785
  end
842
786
 
843
- it "responds to persisted?" do
787
+ it 'responds to persisted?' do
844
788
  expect(document).to respond_to(:persisted?)
845
789
  end
846
790
  end
847
791
 
848
- context "when the embedded document has an array field" do
849
-
792
+ context 'when the embedded document has an array field' do
850
793
  let!(:person) do
851
794
  Person.create!
852
795
  end
853
796
 
854
797
  let!(:name) do
855
798
  person.create_name(
856
- first_name: "Syd",
857
- last_name: "Vicious",
858
- aliases: nil
799
+ first_name: 'Syd',
800
+ last_name: 'Vicious',
801
+ aliases: nil
859
802
  )
860
803
  end
861
804
 
862
- context "when saving the array on a persisted document" do
863
-
805
+ context 'when saving the array on a persisted document' do
864
806
  let(:from_db) do
865
807
  Person.find(person.id).name
866
808
  end
867
809
 
868
810
  before do
869
- from_db.aliases = [ "Syd", "Sydney" ]
811
+ from_db.aliases = %w[Syd Sydney]
870
812
  from_db.save!
871
813
  end
872
814
 
873
- it "sets the values of the array" do
874
- expect(from_db.aliases).to eq([ "Syd", "Sydney" ])
815
+ it 'sets the values of the array' do
816
+ expect(from_db.aliases).to eq(%w[Syd Sydney])
875
817
  end
876
818
 
877
- it "persists the array" do
878
- expect(Person.find(person.id).name.aliases).to eq([ "Syd", "Sydney" ])
819
+ it 'persists the array' do
820
+ expect(Person.find(person.id).name.aliases).to eq(%w[Syd Sydney])
879
821
  end
880
822
  end
881
823
  end
882
824
 
883
- context "when embedding a many under a one" do
884
-
825
+ context 'when embedding a many under a one' do
885
826
  let!(:person) do
886
827
  Person.create!
887
828
  end
@@ -890,14 +831,12 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
890
831
  person.create_name
891
832
  end
892
833
 
893
- context "when the documents are reloaded from the database" do
894
-
834
+ context 'when the documents are reloaded from the database' do
895
835
  let(:from_db) do
896
836
  Person.first
897
837
  end
898
838
 
899
- context "when adding a new many" do
900
-
839
+ context 'when adding a new many' do
901
840
  let(:name) do
902
841
  from_db.name
903
842
  end
@@ -906,48 +845,44 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
906
845
  name.translations.new
907
846
  end
908
847
 
909
- context "when saving the root" do
910
-
848
+ context 'when saving the root' do
911
849
  before do
912
850
  from_db.save!
913
851
  end
914
852
 
915
- it "persists the new document on the first save" do
916
- expect(from_db.reload.name.translations).to_not be_empty
853
+ it 'persists the new document on the first save' do
854
+ expect(from_db.reload.name.translations).not_to be_empty
917
855
  end
918
856
  end
919
857
  end
920
858
  end
921
859
  end
922
860
 
923
- context "when embedding a one under a many" do
924
-
861
+ context 'when embedding a one under a many' do
925
862
  let!(:person) do
926
863
  Person.create!
927
864
  end
928
865
 
929
866
  let!(:address_one) do
930
- person.addresses.create!(street: "hobrecht")
867
+ person.addresses.create!(street: 'hobrecht')
931
868
  end
932
869
 
933
870
  let!(:address_two) do
934
- person.addresses.create!(street: "kreuzberg")
871
+ person.addresses.create!(street: 'kreuzberg')
935
872
  end
936
873
 
937
- context "when a parent was removed outside of mongoid" do
938
-
874
+ context 'when a parent was removed outside of mongoid' do
939
875
  before do
940
876
  person.collection.find(_id: person.id).update_one(
941
- "$pull" => { "addresses" => { _id: address_one.id }}
877
+ '$pull' => { 'addresses' => { _id: address_one.id } }
942
878
  )
943
879
  end
944
880
 
945
- it "reloads the correct number" do
881
+ it 'reloads the correct number' do
946
882
  expect(person.reload.addresses.count).to eq(1)
947
883
  end
948
884
 
949
- context "when adding a child" do
950
-
885
+ context 'when adding a child' do
951
886
  let(:code) do
952
887
  Code.new
953
888
  end
@@ -956,27 +891,25 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
956
891
  address_two.code = code
957
892
  end
958
893
 
959
- it "reloads the correct number" do
894
+ it 'reloads the correct number' do
960
895
  expect(person.reload.addresses.count).to eq(1)
961
896
  end
962
897
  end
963
898
  end
964
899
  end
965
900
 
966
- context "when embedded documents are stored without ids" do
967
-
901
+ context 'when embedded documents are stored without ids' do
968
902
  let!(:band) do
969
- Band.create!(name: "Moderat")
903
+ Band.create!(name: 'Moderat')
970
904
  end
971
905
 
972
906
  before do
973
- band.collection.
974
- find(_id: band.id).
975
- update_one("$set" => { label: { _id: BSON::ObjectId.new, name: "Mute" }})
907
+ band.collection
908
+ .find(_id: band.id)
909
+ .update_one('$set' => { label: { _id: BSON::ObjectId.new, name: 'Mute' } })
976
910
  end
977
911
 
978
- context "when loading the documents" do
979
-
912
+ context 'when loading the documents' do
980
913
  before do
981
914
  band.reload
982
915
  end
@@ -985,33 +918,31 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
985
918
  band.label
986
919
  end
987
920
 
988
- it "creates proper documents from the db" do
989
- expect(label.name).to eq("Mute")
921
+ it 'creates proper documents from the db' do
922
+ expect(label.name).to eq('Mute')
990
923
  end
991
924
 
992
- it "assigns ids to the documents" do
993
- expect(label.id).to_not be_nil
925
+ it 'assigns ids to the documents' do
926
+ expect(label.id).not_to be_nil
994
927
  end
995
928
 
996
- context "when subsequently updating the documents" do
997
-
929
+ context 'when subsequently updating the documents' do
998
930
  before do
999
- label.update_attribute(:name, "Interscope")
931
+ label.update_attribute(:name, 'Interscope')
1000
932
  end
1001
933
 
1002
- it "updates the document" do
1003
- expect(label.name).to eq("Interscope")
934
+ it 'updates the document' do
935
+ expect(label.name).to eq('Interscope')
1004
936
  end
1005
937
 
1006
- it "persists the change" do
1007
- expect(label.reload.name).to eq("Interscope")
938
+ it 'persists the change' do
939
+ expect(label.reload.name).to eq('Interscope')
1008
940
  end
1009
941
  end
1010
942
  end
1011
943
  end
1012
944
 
1013
- context "when parent validation of child is set to false" do
1014
-
945
+ context 'when parent validation of child is set to false' do
1015
946
  let(:building) do
1016
947
  building = Building.create!
1017
948
  building.building_address = BuildingAddress.new
@@ -1019,21 +950,21 @@ describe Mongoid::Association::Embedded::EmbedsOne::Proxy do
1019
950
  building.reload
1020
951
  end
1021
952
 
1022
- it "parent successfully embeds an invalid child" do
953
+ it 'parent successfully embeds an invalid child' do
1023
954
  expect(building.building_address).to be_a(BuildingAddress)
1024
955
  end
1025
956
  end
1026
957
 
1027
- context "when assigning a hash" do
958
+ context 'when assigning a hash' do
1028
959
  let(:building) { Building.create! }
1029
960
 
1030
961
  before do
1031
- building.building_address = { city: "NYC" }
962
+ building.building_address = { city: 'NYC' }
1032
963
  end
1033
964
 
1034
- it "creates the objects correctly" do
965
+ it 'creates the objects correctly' do
1035
966
  expect(building.building_address).to be_a(BuildingAddress)
1036
- expect(building.building_address.city).to eq("NYC")
967
+ expect(building.building_address.city).to eq('NYC')
1037
968
  end
1038
969
  end
1039
970
  end