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,46 +1,39 @@
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::Extensions::ObjectId do
7
-
8
6
  let(:object_id) do
9
7
  BSON::ObjectId.new
10
8
  end
11
9
 
12
10
  let(:composite_key) do
13
- "21-jump-street"
11
+ '21-jump-street'
14
12
  end
15
13
 
16
- describe "#__evolve_object_id__" do
17
-
18
- it "returns self" do
14
+ describe '#__evolve_object_id__' do
15
+ it 'returns self' do
19
16
  expect(object_id.__evolve_object_id__).to eq(object_id)
20
17
  end
21
18
 
22
- it "returns the same instance" do
19
+ it 'returns the same instance' do
23
20
  expect(object_id.__evolve_object_id__).to equal(object_id)
24
21
  end
25
22
  end
26
23
 
27
- describe ".evolve" do
28
-
29
- context "when the class is using object ids" do
30
-
31
- context "when provided a single object id" do
32
-
24
+ describe '.evolve' do
25
+ context 'when the class is using object ids' do
26
+ context 'when provided a single object id' do
33
27
  let(:evolved) do
34
28
  BSON::ObjectId.evolve(object_id)
35
29
  end
36
30
 
37
- it "returns the object id" do
31
+ it 'returns the object id' do
38
32
  expect(evolved).to eq(object_id)
39
33
  end
40
34
  end
41
35
 
42
- context "when provided an array of object ids" do
43
-
36
+ context 'when provided an array of object ids' do
44
37
  let(:other_id) do
45
38
  BSON::ObjectId.new
46
39
  end
@@ -49,73 +42,64 @@ describe Mongoid::Extensions::ObjectId do
49
42
  BSON::ObjectId.evolve([ object_id, other_id ])
50
43
  end
51
44
 
52
- it "returns the array of object ids" do
45
+ it 'returns the array of object ids' do
53
46
  expect(evolved).to eq([ object_id, other_id ])
54
47
  end
55
48
  end
56
49
 
57
- context "when provided a single string" do
58
-
59
- context "when the string is a valid object id" do
60
-
50
+ context 'when provided a single string' do
51
+ context 'when the string is a valid object id' do
61
52
  let(:evolved) do
62
53
  BSON::ObjectId.evolve(object_id.to_s)
63
54
  end
64
55
 
65
- it "evolves to an object id" do
56
+ it 'evolves to an object id' do
66
57
  expect(evolved).to eq(object_id)
67
58
  end
68
59
  end
69
60
 
70
- context "when the string is not a valid object id" do
71
-
72
- it "returns the key" do
61
+ context 'when the string is not a valid object id' do
62
+ it 'returns the key' do
73
63
  expect(BSON::ObjectId.evolve(composite_key)).to eq(
74
64
  composite_key
75
65
  )
76
66
  end
77
67
  end
78
68
 
79
- context "when the string is empty" do
80
-
69
+ context 'when the string is empty' do
81
70
  let(:evolved) do
82
- BSON::ObjectId.evolve("")
71
+ BSON::ObjectId.evolve('')
83
72
  end
84
73
 
85
- it "evolves to an empty string" do
74
+ it 'evolves to an empty string' do
86
75
  expect(evolved).to be_empty
87
76
  end
88
77
  end
89
78
  end
90
79
 
91
- context "when provided an array" do
92
-
93
- context "when array key of nils" do
94
-
80
+ context 'when provided an array' do
81
+ context 'when array key of nils' do
95
82
  let(:evolved) do
96
83
  BSON::ObjectId.evolve([ nil, nil ])
97
84
  end
98
85
 
99
- it "returns the array with nils" do
86
+ it 'returns the array with nils' do
100
87
  expect(evolved).to eq([ nil, nil ])
101
88
  end
102
89
  end
103
90
 
104
- context "when the array key is empty strings" do
105
-
91
+ context 'when the array key is empty strings' do
106
92
  let(:evolved) do
107
- BSON::ObjectId.evolve([ "", "" ])
93
+ BSON::ObjectId.evolve([ '', '' ])
108
94
  end
109
95
 
110
- it "returns the array with empty strings" do
111
- expect(evolved).to eq([ "", "" ])
96
+ it 'returns the array with empty strings' do
97
+ expect(evolved).to eq([ '', '' ])
112
98
  end
113
99
  end
114
100
 
115
- context "when the array key is full of strings" do
116
-
117
- context "when the strings are valid object ids" do
118
-
101
+ context 'when the array key is full of strings' do
102
+ context 'when the strings are valid object ids' do
119
103
  let(:other_id) do
120
104
  BSON::ObjectId.new
121
105
  end
@@ -124,22 +108,21 @@ describe Mongoid::Extensions::ObjectId do
124
108
  BSON::ObjectId.evolve([ object_id.to_s, other_id.to_s ])
125
109
  end
126
110
 
127
- it "evolves to an array of object ids" do
111
+ it 'evolves to an array of object ids' do
128
112
  expect(evolved).to eq([ object_id, other_id ])
129
113
  end
130
114
  end
131
115
 
132
- context "when the strings are not valid object ids" do
133
-
116
+ context 'when the strings are not valid object ids' do
134
117
  let(:other_key) do
135
- "hawaii-five-o"
118
+ 'hawaii-five-o'
136
119
  end
137
120
 
138
121
  let(:evolved) do
139
122
  BSON::ObjectId.evolve([ composite_key, other_key ])
140
123
  end
141
124
 
142
- it "returns the key" do
125
+ it 'returns the key' do
143
126
  expect(BSON::ObjectId.evolve(composite_key)).to eq(
144
127
  composite_key
145
128
  )
@@ -148,12 +131,9 @@ describe Mongoid::Extensions::ObjectId do
148
131
  end
149
132
  end
150
133
 
151
- context "when provided a hash" do
152
-
153
- context "when the hash key is _id" do
154
-
155
- context "when the value is an object id" do
156
-
134
+ context 'when provided a hash' do
135
+ context 'when the hash key is _id' do
136
+ context 'when the value is an object id' do
157
137
  let(:hash) do
158
138
  { _id: object_id }
159
139
  end
@@ -162,13 +142,12 @@ describe Mongoid::Extensions::ObjectId do
162
142
  BSON::ObjectId.evolve(hash)
163
143
  end
164
144
 
165
- it "returns the hash" do
145
+ it 'returns the hash' do
166
146
  expect(evolved).to eq(hash)
167
147
  end
168
148
  end
169
149
 
170
- context "when the value is an array of object ids" do
171
-
150
+ context 'when the value is an array of object ids' do
172
151
  let(:other_id) do
173
152
  BSON::ObjectId.new
174
153
  end
@@ -181,13 +160,12 @@ describe Mongoid::Extensions::ObjectId do
181
160
  BSON::ObjectId.evolve(hash)
182
161
  end
183
162
 
184
- it "returns the hash" do
163
+ it 'returns the hash' do
185
164
  expect(evolved).to eq(hash)
186
165
  end
187
166
  end
188
167
 
189
- context "when the value is a string" do
190
-
168
+ context 'when the value is a string' do
191
169
  let(:hash) do
192
170
  { _id: object_id.to_s }
193
171
  end
@@ -196,13 +174,12 @@ describe Mongoid::Extensions::ObjectId do
196
174
  BSON::ObjectId.evolve(hash)
197
175
  end
198
176
 
199
- it "returns the hash with evolved value" do
177
+ it 'returns the hash with evolved value' do
200
178
  expect(evolved).to eq({ _id: object_id })
201
179
  end
202
180
  end
203
181
 
204
- context "when the value is an array of strings" do
205
-
182
+ context 'when the value is an array of strings' do
206
183
  let(:other_id) do
207
184
  BSON::ObjectId.new
208
185
  end
@@ -215,16 +192,14 @@ describe Mongoid::Extensions::ObjectId do
215
192
  BSON::ObjectId.evolve(hash)
216
193
  end
217
194
 
218
- it "returns the hash with evolved values" do
195
+ it 'returns the hash with evolved values' do
219
196
  expect(evolved).to eq({ _id: [ object_id, other_id ] })
220
197
  end
221
198
  end
222
199
  end
223
200
 
224
- context "when the hash key is id" do
225
-
226
- context "when the value is an object id" do
227
-
201
+ context 'when the hash key is id' do
202
+ context 'when the value is an object id' do
228
203
  let(:hash) do
229
204
  { id: object_id }
230
205
  end
@@ -233,13 +208,12 @@ describe Mongoid::Extensions::ObjectId do
233
208
  BSON::ObjectId.evolve(hash)
234
209
  end
235
210
 
236
- it "returns the hash" do
211
+ it 'returns the hash' do
237
212
  expect(evolved).to eq(hash)
238
213
  end
239
214
  end
240
215
 
241
- context "when the value is an array of object ids" do
242
-
216
+ context 'when the value is an array of object ids' do
243
217
  let(:other_id) do
244
218
  BSON::ObjectId.new
245
219
  end
@@ -252,13 +226,12 @@ describe Mongoid::Extensions::ObjectId do
252
226
  BSON::ObjectId.evolve(hash)
253
227
  end
254
228
 
255
- it "returns the hash" do
229
+ it 'returns the hash' do
256
230
  expect(evolved).to eq(hash)
257
231
  end
258
232
  end
259
233
 
260
- context "when the value is a string" do
261
-
234
+ context 'when the value is a string' do
262
235
  let(:hash) do
263
236
  { id: object_id.to_s }
264
237
  end
@@ -267,13 +240,12 @@ describe Mongoid::Extensions::ObjectId do
267
240
  BSON::ObjectId.evolve(hash)
268
241
  end
269
242
 
270
- it "returns the hash with evolved value" do
243
+ it 'returns the hash with evolved value' do
271
244
  expect(evolved).to eq({ id: object_id })
272
245
  end
273
246
  end
274
247
 
275
- context "when the value is an array of strings" do
276
-
248
+ context 'when the value is an array of strings' do
277
249
  let(:other_id) do
278
250
  BSON::ObjectId.new
279
251
  end
@@ -286,16 +258,14 @@ describe Mongoid::Extensions::ObjectId do
286
258
  BSON::ObjectId.evolve(hash)
287
259
  end
288
260
 
289
- it "returns the hash with evolved values" do
261
+ it 'returns the hash with evolved values' do
290
262
  expect(evolved).to eq({ id: [ object_id, other_id ] })
291
263
  end
292
264
  end
293
265
  end
294
266
 
295
- context "when the hash key is not an id" do
296
-
297
- context "when the value is a string" do
298
-
267
+ context 'when the hash key is not an id' do
268
+ context 'when the value is a string' do
299
269
  let(:hash) do
300
270
  { key: composite_key }
301
271
  end
@@ -304,13 +274,12 @@ describe Mongoid::Extensions::ObjectId do
304
274
  BSON::ObjectId.evolve(hash)
305
275
  end
306
276
 
307
- it "returns the hash" do
277
+ it 'returns the hash' do
308
278
  expect(evolved).to eq(hash)
309
279
  end
310
280
  end
311
281
 
312
- context "when the value is an array of strings" do
313
-
282
+ context 'when the value is an array of strings' do
314
283
  let(:hash) do
315
284
  { key: [ composite_key ] }
316
285
  end
@@ -319,7 +288,7 @@ describe Mongoid::Extensions::ObjectId do
319
288
  BSON::ObjectId.evolve(hash)
320
289
  end
321
290
 
322
- it "returns the hash" do
291
+ it 'returns the hash' do
323
292
  expect(evolved).to eq(hash)
324
293
  end
325
294
  end
@@ -328,23 +297,19 @@ describe Mongoid::Extensions::ObjectId do
328
297
  end
329
298
  end
330
299
 
331
- describe ".mongoize" do
332
-
333
- context "when the class is using object ids" do
334
-
335
- context "when provided a single object id" do
336
-
300
+ describe '.mongoize' do
301
+ context 'when the class is using object ids' do
302
+ context 'when provided a single object id' do
337
303
  let(:mongoized) do
338
304
  BSON::ObjectId.mongoize(object_id)
339
305
  end
340
306
 
341
- it "returns the object id" do
307
+ it 'returns the object id' do
342
308
  expect(mongoized).to eq(object_id)
343
309
  end
344
310
  end
345
311
 
346
- context "when provided an array of object ids" do
347
-
312
+ context 'when provided an array of object ids' do
348
313
  let(:other_id) do
349
314
  BSON::ObjectId.new
350
315
  end
@@ -353,73 +318,64 @@ describe Mongoid::Extensions::ObjectId do
353
318
  BSON::ObjectId.mongoize([ object_id, other_id ])
354
319
  end
355
320
 
356
- it "returns the array of object ids" do
321
+ it 'returns the array of object ids' do
357
322
  expect(mongoized).to eq([ object_id, other_id ])
358
323
  end
359
324
  end
360
325
 
361
- context "when provided a single string" do
362
-
363
- context "when the string is a valid object id" do
364
-
326
+ context 'when provided a single string' do
327
+ context 'when the string is a valid object id' do
365
328
  let(:mongoized) do
366
329
  BSON::ObjectId.mongoize(object_id.to_s)
367
330
  end
368
331
 
369
- it "mongoizes to an object id" do
332
+ it 'mongoizes to an object id' do
370
333
  expect(mongoized).to eq(object_id)
371
334
  end
372
335
  end
373
336
 
374
- context "when the string is not a valid object id" do
375
-
376
- it "returns the key" do
337
+ context 'when the string is not a valid object id' do
338
+ it 'returns the key' do
377
339
  expect(BSON::ObjectId.mongoize(composite_key)).to eq(
378
340
  composite_key
379
341
  )
380
342
  end
381
343
  end
382
344
 
383
- context "when the string is empty" do
384
-
345
+ context 'when the string is empty' do
385
346
  let(:mongoized) do
386
- BSON::ObjectId.mongoize("")
347
+ BSON::ObjectId.mongoize('')
387
348
  end
388
349
 
389
- it "mongoizes to nil" do
350
+ it 'mongoizes to nil' do
390
351
  expect(mongoized).to be_nil
391
352
  end
392
353
  end
393
354
  end
394
355
 
395
- context "when provided an array" do
396
-
397
- context "when array key of nils" do
398
-
356
+ context 'when provided an array' do
357
+ context 'when array key of nils' do
399
358
  let(:mongoized) do
400
359
  BSON::ObjectId.mongoize([ nil, nil ])
401
360
  end
402
361
 
403
- it "returns an empty array" do
362
+ it 'returns an empty array' do
404
363
  expect(mongoized).to be_empty
405
364
  end
406
365
  end
407
366
 
408
- context "when the array key is empty strings" do
409
-
367
+ context 'when the array key is empty strings' do
410
368
  let(:mongoized) do
411
- BSON::ObjectId.mongoize([ "", "" ])
369
+ BSON::ObjectId.mongoize([ '', '' ])
412
370
  end
413
371
 
414
- it "returns an empty array" do
372
+ it 'returns an empty array' do
415
373
  expect(mongoized).to be_empty
416
374
  end
417
375
  end
418
376
 
419
- context "when the array key is full of strings" do
420
-
421
- context "when the strings are valid object ids" do
422
-
377
+ context 'when the array key is full of strings' do
378
+ context 'when the strings are valid object ids' do
423
379
  let(:other_id) do
424
380
  BSON::ObjectId.new
425
381
  end
@@ -428,22 +384,21 @@ describe Mongoid::Extensions::ObjectId do
428
384
  BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
429
385
  end
430
386
 
431
- it "mongoizes to an array of object ids" do
387
+ it 'mongoizes to an array of object ids' do
432
388
  expect(mongoized).to eq([ object_id, other_id ])
433
389
  end
434
390
  end
435
391
 
436
- context "when the strings are not valid object ids" do
437
-
392
+ context 'when the strings are not valid object ids' do
438
393
  let(:other_key) do
439
- "hawaii-five-o"
394
+ 'hawaii-five-o'
440
395
  end
441
396
 
442
397
  let(:mongoized) do
443
398
  BSON::ObjectId.mongoize([ composite_key, other_key ])
444
399
  end
445
400
 
446
- it "returns the key" do
401
+ it 'returns the key' do
447
402
  expect(BSON::ObjectId.mongoize(composite_key)).to eq(
448
403
  composite_key
449
404
  )
@@ -452,12 +407,9 @@ describe Mongoid::Extensions::ObjectId do
452
407
  end
453
408
  end
454
409
 
455
- context "when provided a hash" do
456
-
457
- context "when the hash key is _id" do
458
-
459
- context "when the value is an object id" do
460
-
410
+ context 'when provided a hash' do
411
+ context 'when the hash key is _id' do
412
+ context 'when the value is an object id' do
461
413
  let(:hash) do
462
414
  { _id: object_id }
463
415
  end
@@ -466,13 +418,12 @@ describe Mongoid::Extensions::ObjectId do
466
418
  BSON::ObjectId.mongoize(hash)
467
419
  end
468
420
 
469
- it "returns the hash" do
421
+ it 'returns the hash' do
470
422
  expect(mongoized).to eq(hash)
471
423
  end
472
424
  end
473
425
 
474
- context "when the value is an array of object ids" do
475
-
426
+ context 'when the value is an array of object ids' do
476
427
  let(:other_id) do
477
428
  BSON::ObjectId.new
478
429
  end
@@ -485,13 +436,12 @@ describe Mongoid::Extensions::ObjectId do
485
436
  BSON::ObjectId.mongoize(hash)
486
437
  end
487
438
 
488
- it "returns the hash" do
439
+ it 'returns the hash' do
489
440
  expect(mongoized).to eq(hash)
490
441
  end
491
442
  end
492
443
 
493
- context "when the value is a string" do
494
-
444
+ context 'when the value is a string' do
495
445
  let(:hash) do
496
446
  { _id: object_id.to_s }
497
447
  end
@@ -500,13 +450,12 @@ describe Mongoid::Extensions::ObjectId do
500
450
  BSON::ObjectId.mongoize(hash)
501
451
  end
502
452
 
503
- it "returns the hash with mongoized value" do
453
+ it 'returns the hash with mongoized value' do
504
454
  expect(mongoized).to eq({ _id: object_id })
505
455
  end
506
456
  end
507
457
 
508
- context "when the value is an array of strings" do
509
-
458
+ context 'when the value is an array of strings' do
510
459
  let(:other_id) do
511
460
  BSON::ObjectId.new
512
461
  end
@@ -519,16 +468,14 @@ describe Mongoid::Extensions::ObjectId do
519
468
  BSON::ObjectId.mongoize(hash)
520
469
  end
521
470
 
522
- it "returns the hash with mongoized values" do
471
+ it 'returns the hash with mongoized values' do
523
472
  expect(mongoized).to eq({ _id: [ object_id, other_id ] })
524
473
  end
525
474
  end
526
475
  end
527
476
 
528
- context "when the hash key is id" do
529
-
530
- context "when the value is an object id" do
531
-
477
+ context 'when the hash key is id' do
478
+ context 'when the value is an object id' do
532
479
  let(:hash) do
533
480
  { id: object_id }
534
481
  end
@@ -537,13 +484,12 @@ describe Mongoid::Extensions::ObjectId do
537
484
  BSON::ObjectId.mongoize(hash)
538
485
  end
539
486
 
540
- it "returns the hash" do
487
+ it 'returns the hash' do
541
488
  expect(mongoized).to eq(hash)
542
489
  end
543
490
  end
544
491
 
545
- context "when the value is an array of object ids" do
546
-
492
+ context 'when the value is an array of object ids' do
547
493
  let(:other_id) do
548
494
  BSON::ObjectId.new
549
495
  end
@@ -556,13 +502,12 @@ describe Mongoid::Extensions::ObjectId do
556
502
  BSON::ObjectId.mongoize(hash)
557
503
  end
558
504
 
559
- it "returns the hash" do
505
+ it 'returns the hash' do
560
506
  expect(mongoized).to eq(hash)
561
507
  end
562
508
  end
563
509
 
564
- context "when the value is a string" do
565
-
510
+ context 'when the value is a string' do
566
511
  let(:hash) do
567
512
  { id: object_id.to_s }
568
513
  end
@@ -571,13 +516,12 @@ describe Mongoid::Extensions::ObjectId do
571
516
  BSON::ObjectId.mongoize(hash)
572
517
  end
573
518
 
574
- it "returns the hash with mongoized value" do
519
+ it 'returns the hash with mongoized value' do
575
520
  expect(mongoized).to eq({ id: object_id })
576
521
  end
577
522
  end
578
523
 
579
- context "when the value is an array of strings" do
580
-
524
+ context 'when the value is an array of strings' do
581
525
  let(:other_id) do
582
526
  BSON::ObjectId.new
583
527
  end
@@ -590,16 +534,14 @@ describe Mongoid::Extensions::ObjectId do
590
534
  BSON::ObjectId.mongoize(hash)
591
535
  end
592
536
 
593
- it "returns the hash with mongoized values" do
537
+ it 'returns the hash with mongoized values' do
594
538
  expect(mongoized).to eq({ id: [ object_id, other_id ] })
595
539
  end
596
540
  end
597
541
  end
598
542
 
599
- context "when the hash key is not an id" do
600
-
601
- context "when the value is a string" do
602
-
543
+ context 'when the hash key is not an id' do
544
+ context 'when the value is a string' do
603
545
  let(:hash) do
604
546
  { key: composite_key }
605
547
  end
@@ -608,13 +550,12 @@ describe Mongoid::Extensions::ObjectId do
608
550
  BSON::ObjectId.mongoize(hash)
609
551
  end
610
552
 
611
- it "returns the hash" do
553
+ it 'returns the hash' do
612
554
  expect(mongoized).to eq(hash)
613
555
  end
614
556
  end
615
557
 
616
- context "when the value is an array of strings" do
617
-
558
+ context 'when the value is an array of strings' do
618
559
  let(:hash) do
619
560
  { key: [ composite_key ] }
620
561
  end
@@ -623,7 +564,7 @@ describe Mongoid::Extensions::ObjectId do
623
564
  BSON::ObjectId.mongoize(hash)
624
565
  end
625
566
 
626
- it "returns the hash" do
567
+ it 'returns the hash' do
627
568
  expect(mongoized).to eq(hash)
628
569
  end
629
570
  end
@@ -632,23 +573,19 @@ describe Mongoid::Extensions::ObjectId do
632
573
  end
633
574
  end
634
575
 
635
- describe ".mongoize" do
636
-
637
- context "when the class is using object ids" do
638
-
639
- context "when provided a single object id" do
640
-
576
+ describe '.mongoize' do
577
+ context 'when the class is using object ids' do
578
+ context 'when provided a single object id' do
641
579
  let(:mongoized) do
642
580
  BSON::ObjectId.mongoize(object_id)
643
581
  end
644
582
 
645
- it "returns the object id" do
583
+ it 'returns the object id' do
646
584
  expect(mongoized).to eq(object_id)
647
585
  end
648
586
  end
649
587
 
650
- context "when provided an array of object ids" do
651
-
588
+ context 'when provided an array of object ids' do
652
589
  let(:other_id) do
653
590
  BSON::ObjectId.new
654
591
  end
@@ -657,73 +594,64 @@ describe Mongoid::Extensions::ObjectId do
657
594
  BSON::ObjectId.mongoize([ object_id, other_id ])
658
595
  end
659
596
 
660
- it "returns the array of object ids" do
597
+ it 'returns the array of object ids' do
661
598
  expect(mongoized).to eq([ object_id, other_id ])
662
599
  end
663
600
  end
664
601
 
665
- context "when provided a single string" do
666
-
667
- context "when the string is a valid object id" do
668
-
602
+ context 'when provided a single string' do
603
+ context 'when the string is a valid object id' do
669
604
  let(:mongoized) do
670
605
  BSON::ObjectId.mongoize(object_id.to_s)
671
606
  end
672
607
 
673
- it "mongoizes to an object id" do
608
+ it 'mongoizes to an object id' do
674
609
  expect(mongoized).to eq(object_id)
675
610
  end
676
611
  end
677
612
 
678
- context "when the string is not a valid object id" do
679
-
680
- it "returns the key" do
613
+ context 'when the string is not a valid object id' do
614
+ it 'returns the key' do
681
615
  expect(BSON::ObjectId.mongoize(composite_key)).to eq(
682
616
  composite_key
683
617
  )
684
618
  end
685
619
  end
686
620
 
687
- context "when the string is empty" do
688
-
621
+ context 'when the string is empty' do
689
622
  let(:mongoized) do
690
- BSON::ObjectId.mongoize("")
623
+ BSON::ObjectId.mongoize('')
691
624
  end
692
625
 
693
- it "mongoizes to nil" do
626
+ it 'mongoizes to nil' do
694
627
  expect(mongoized).to be_nil
695
628
  end
696
629
  end
697
630
  end
698
631
 
699
- context "when provided an array" do
700
-
701
- context "when array key of nils" do
702
-
632
+ context 'when provided an array' do
633
+ context 'when array key of nils' do
703
634
  let(:mongoized) do
704
635
  BSON::ObjectId.mongoize([ nil, nil ])
705
636
  end
706
637
 
707
- it "returns an empty array" do
638
+ it 'returns an empty array' do
708
639
  expect(mongoized).to be_empty
709
640
  end
710
641
  end
711
642
 
712
- context "when the array key is empty strings" do
713
-
643
+ context 'when the array key is empty strings' do
714
644
  let(:mongoized) do
715
- BSON::ObjectId.mongoize([ "", "" ])
645
+ BSON::ObjectId.mongoize([ '', '' ])
716
646
  end
717
647
 
718
- it "returns an empty array" do
648
+ it 'returns an empty array' do
719
649
  expect(mongoized).to be_empty
720
650
  end
721
651
  end
722
652
 
723
- context "when the array key is full of strings" do
724
-
725
- context "when the strings are valid object ids" do
726
-
653
+ context 'when the array key is full of strings' do
654
+ context 'when the strings are valid object ids' do
727
655
  let(:other_id) do
728
656
  BSON::ObjectId.new
729
657
  end
@@ -732,22 +660,21 @@ describe Mongoid::Extensions::ObjectId do
732
660
  BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
733
661
  end
734
662
 
735
- it "mongoizes to an array of object ids" do
663
+ it 'mongoizes to an array of object ids' do
736
664
  expect(mongoized).to eq([ object_id, other_id ])
737
665
  end
738
666
  end
739
667
 
740
- context "when the strings are not valid object ids" do
741
-
668
+ context 'when the strings are not valid object ids' do
742
669
  let(:other_key) do
743
- "hawaii-five-o"
670
+ 'hawaii-five-o'
744
671
  end
745
672
 
746
673
  let(:mongoized) do
747
674
  BSON::ObjectId.mongoize([ composite_key, other_key ])
748
675
  end
749
676
 
750
- it "returns the key" do
677
+ it 'returns the key' do
751
678
  expect(BSON::ObjectId.mongoize(composite_key)).to eq(
752
679
  composite_key
753
680
  )
@@ -756,12 +683,9 @@ describe Mongoid::Extensions::ObjectId do
756
683
  end
757
684
  end
758
685
 
759
- context "when provided a hash" do
760
-
761
- context "when the hash key is _id" do
762
-
763
- context "when the value is an object id" do
764
-
686
+ context 'when provided a hash' do
687
+ context 'when the hash key is _id' do
688
+ context 'when the value is an object id' do
765
689
  let(:hash) do
766
690
  { _id: object_id }
767
691
  end
@@ -770,13 +694,12 @@ describe Mongoid::Extensions::ObjectId do
770
694
  BSON::ObjectId.mongoize(hash)
771
695
  end
772
696
 
773
- it "returns the hash" do
697
+ it 'returns the hash' do
774
698
  expect(mongoized).to eq(hash)
775
699
  end
776
700
  end
777
701
 
778
- context "when the value is an array of object ids" do
779
-
702
+ context 'when the value is an array of object ids' do
780
703
  let(:other_id) do
781
704
  BSON::ObjectId.new
782
705
  end
@@ -789,13 +712,12 @@ describe Mongoid::Extensions::ObjectId do
789
712
  BSON::ObjectId.mongoize(hash)
790
713
  end
791
714
 
792
- it "returns the hash" do
715
+ it 'returns the hash' do
793
716
  expect(mongoized).to eq(hash)
794
717
  end
795
718
  end
796
719
 
797
- context "when the value is a string" do
798
-
720
+ context 'when the value is a string' do
799
721
  let(:hash) do
800
722
  { _id: object_id.to_s }
801
723
  end
@@ -804,13 +726,12 @@ describe Mongoid::Extensions::ObjectId do
804
726
  BSON::ObjectId.mongoize(hash)
805
727
  end
806
728
 
807
- it "returns the hash with mongoized value" do
729
+ it 'returns the hash with mongoized value' do
808
730
  expect(mongoized).to eq({ _id: object_id })
809
731
  end
810
732
  end
811
733
 
812
- context "when the value is an array of strings" do
813
-
734
+ context 'when the value is an array of strings' do
814
735
  let(:other_id) do
815
736
  BSON::ObjectId.new
816
737
  end
@@ -823,16 +744,14 @@ describe Mongoid::Extensions::ObjectId do
823
744
  BSON::ObjectId.mongoize(hash)
824
745
  end
825
746
 
826
- it "returns the hash with mongoized values" do
747
+ it 'returns the hash with mongoized values' do
827
748
  expect(mongoized).to eq({ _id: [ object_id, other_id ] })
828
749
  end
829
750
  end
830
751
  end
831
752
 
832
- context "when the hash key is id" do
833
-
834
- context "when the value is an object id" do
835
-
753
+ context 'when the hash key is id' do
754
+ context 'when the value is an object id' do
836
755
  let(:hash) do
837
756
  { id: object_id }
838
757
  end
@@ -841,13 +760,12 @@ describe Mongoid::Extensions::ObjectId do
841
760
  BSON::ObjectId.mongoize(hash)
842
761
  end
843
762
 
844
- it "returns the hash" do
763
+ it 'returns the hash' do
845
764
  expect(mongoized).to eq(hash)
846
765
  end
847
766
  end
848
767
 
849
- context "when the value is an array of object ids" do
850
-
768
+ context 'when the value is an array of object ids' do
851
769
  let(:other_id) do
852
770
  BSON::ObjectId.new
853
771
  end
@@ -860,13 +778,12 @@ describe Mongoid::Extensions::ObjectId do
860
778
  BSON::ObjectId.mongoize(hash)
861
779
  end
862
780
 
863
- it "returns the hash" do
781
+ it 'returns the hash' do
864
782
  expect(mongoized).to eq(hash)
865
783
  end
866
784
  end
867
785
 
868
- context "when the value is a string" do
869
-
786
+ context 'when the value is a string' do
870
787
  let(:hash) do
871
788
  { id: object_id.to_s }
872
789
  end
@@ -875,13 +792,12 @@ describe Mongoid::Extensions::ObjectId do
875
792
  BSON::ObjectId.mongoize(hash)
876
793
  end
877
794
 
878
- it "returns the hash with mongoized value" do
795
+ it 'returns the hash with mongoized value' do
879
796
  expect(mongoized).to eq({ id: object_id })
880
797
  end
881
798
  end
882
799
 
883
- context "when the value is an array of strings" do
884
-
800
+ context 'when the value is an array of strings' do
885
801
  let(:other_id) do
886
802
  BSON::ObjectId.new
887
803
  end
@@ -894,16 +810,14 @@ describe Mongoid::Extensions::ObjectId do
894
810
  BSON::ObjectId.mongoize(hash)
895
811
  end
896
812
 
897
- it "returns the hash with mongoized values" do
813
+ it 'returns the hash with mongoized values' do
898
814
  expect(mongoized).to eq({ id: [ object_id, other_id ] })
899
815
  end
900
816
  end
901
817
  end
902
818
 
903
- context "when the hash key is not an id" do
904
-
905
- context "when the value is a string" do
906
-
819
+ context 'when the hash key is not an id' do
820
+ context 'when the value is a string' do
907
821
  let(:hash) do
908
822
  { key: composite_key }
909
823
  end
@@ -912,13 +826,12 @@ describe Mongoid::Extensions::ObjectId do
912
826
  BSON::ObjectId.mongoize(hash)
913
827
  end
914
828
 
915
- it "returns the hash" do
829
+ it 'returns the hash' do
916
830
  expect(mongoized).to eq(hash)
917
831
  end
918
832
  end
919
833
 
920
- context "when the value is an array of strings" do
921
-
834
+ context 'when the value is an array of strings' do
922
835
  let(:hash) do
923
836
  { key: [ composite_key ] }
924
837
  end
@@ -927,7 +840,7 @@ describe Mongoid::Extensions::ObjectId do
927
840
  BSON::ObjectId.mongoize(hash)
928
841
  end
929
842
 
930
- it "returns the hash" do
843
+ it 'returns the hash' do
931
844
  expect(mongoized).to eq(hash)
932
845
  end
933
846
  end
@@ -936,13 +849,12 @@ describe Mongoid::Extensions::ObjectId do
936
849
  end
937
850
  end
938
851
 
939
- describe "#__mongoize_object_id__" do
940
-
941
- it "returns self" do
852
+ describe '#__mongoize_object_id__' do
853
+ it 'returns self' do
942
854
  expect(object_id.__mongoize_object_id__).to eq(object_id)
943
855
  end
944
856
 
945
- it "returns the same instance" do
857
+ it 'returns the same instance' do
946
858
  expect(object_id.__mongoize_object_id__).to equal(object_id)
947
859
  end
948
860
  end