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