mongoid 7.5.4 → 8.1.9

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 (446) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -3
  3. data/README.md +6 -6
  4. data/Rakefile +44 -46
  5. data/lib/config/locales/en.yml +92 -43
  6. data/lib/mongoid/association/accessors.rb +44 -11
  7. data/lib/mongoid/association/bindable.rb +50 -2
  8. data/lib/mongoid/association/builders.rb +5 -3
  9. data/lib/mongoid/association/constrainable.rb +0 -1
  10. data/lib/mongoid/association/eager_loadable.rb +32 -7
  11. data/lib/mongoid/association/embedded/batchable.rb +34 -11
  12. data/lib/mongoid/association/embedded/cyclic.rb +1 -1
  13. data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
  14. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
  15. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +4 -3
  16. data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
  17. data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
  18. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +4 -3
  19. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +85 -46
  20. data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
  21. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +19 -5
  22. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +24 -5
  23. data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
  24. data/lib/mongoid/association/macros.rb +8 -1
  25. data/lib/mongoid/association/many.rb +11 -7
  26. data/lib/mongoid/association/nested/many.rb +5 -4
  27. data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
  28. data/lib/mongoid/association/nested/one.rb +45 -7
  29. data/lib/mongoid/association/one.rb +2 -2
  30. data/lib/mongoid/association/options.rb +9 -9
  31. data/lib/mongoid/association/proxy.rb +15 -4
  32. data/lib/mongoid/association/referenced/auto_save.rb +4 -3
  33. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
  34. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  35. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
  36. data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
  37. data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
  38. data/lib/mongoid/association/referenced/eager.rb +2 -2
  39. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +70 -13
  40. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
  41. data/lib/mongoid/association/referenced/has_many/enumerable.rb +22 -30
  42. data/lib/mongoid/association/referenced/has_many/proxy.rb +40 -21
  43. data/lib/mongoid/association/referenced/has_many.rb +3 -3
  44. data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
  45. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
  46. data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
  47. data/lib/mongoid/association/referenced/has_one.rb +3 -3
  48. data/lib/mongoid/association/referenced/syncable.rb +4 -4
  49. data/lib/mongoid/association/reflections.rb +4 -4
  50. data/lib/mongoid/association/relatable.rb +44 -10
  51. data/lib/mongoid/association.rb +5 -5
  52. data/lib/mongoid/atomic/modifiers.rb +2 -2
  53. data/lib/mongoid/atomic.rb +16 -7
  54. data/lib/mongoid/attributes/dynamic.rb +4 -4
  55. data/lib/mongoid/attributes/nested.rb +6 -6
  56. data/lib/mongoid/attributes/processing.rb +37 -6
  57. data/lib/mongoid/attributes/projector.rb +2 -2
  58. data/lib/mongoid/attributes/readonly.rb +11 -6
  59. data/lib/mongoid/attributes.rb +51 -42
  60. data/lib/mongoid/changeable.rb +147 -14
  61. data/lib/mongoid/clients/options.rb +5 -1
  62. data/lib/mongoid/clients/sessions.rb +2 -14
  63. data/lib/mongoid/clients/storage_options.rb +2 -5
  64. data/lib/mongoid/clients/validators/storage.rb +3 -15
  65. data/lib/mongoid/collection_configurable.rb +58 -0
  66. data/lib/mongoid/composable.rb +2 -0
  67. data/lib/mongoid/config/defaults.rb +60 -0
  68. data/lib/mongoid/config/options.rb +3 -0
  69. data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
  70. data/lib/mongoid/config/validators/client.rb +6 -6
  71. data/lib/mongoid/config/validators.rb +1 -0
  72. data/lib/mongoid/config.rb +153 -18
  73. data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
  74. data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
  75. data/lib/mongoid/contextual/aggregable/none.rb +1 -1
  76. data/lib/mongoid/contextual/atomic.rb +1 -1
  77. data/lib/mongoid/contextual/geo_near.rb +7 -7
  78. data/lib/mongoid/contextual/map_reduce.rb +2 -2
  79. data/lib/mongoid/contextual/memory.rb +285 -58
  80. data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
  81. data/lib/mongoid/contextual/mongo.rb +540 -346
  82. data/lib/mongoid/contextual/none.rb +193 -20
  83. data/lib/mongoid/contextual/queryable.rb +1 -1
  84. data/lib/mongoid/contextual.rb +14 -2
  85. data/lib/mongoid/copyable.rb +32 -8
  86. data/lib/mongoid/criteria/findable.rb +8 -5
  87. data/lib/mongoid/criteria/includable.rb +27 -22
  88. data/lib/mongoid/criteria/marshalable.rb +10 -2
  89. data/lib/mongoid/criteria/permission.rb +1 -1
  90. data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
  91. data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -16
  92. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
  93. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
  94. data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
  95. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
  96. data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -17
  97. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -9
  98. data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
  99. data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
  100. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
  101. data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
  102. data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -14
  103. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
  104. data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
  105. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
  106. data/lib/mongoid/criteria/queryable/key.rb +4 -4
  107. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
  108. data/lib/mongoid/criteria/queryable/optional.rb +11 -17
  109. data/lib/mongoid/criteria/queryable/options.rb +2 -2
  110. data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
  111. data/lib/mongoid/criteria/queryable/selectable.rb +48 -39
  112. data/lib/mongoid/criteria/queryable/selector.rb +92 -7
  113. data/lib/mongoid/criteria/queryable/smash.rb +40 -7
  114. data/lib/mongoid/criteria/queryable.rb +12 -7
  115. data/lib/mongoid/criteria/scopable.rb +2 -2
  116. data/lib/mongoid/criteria/translator.rb +45 -0
  117. data/lib/mongoid/criteria.rb +20 -40
  118. data/lib/mongoid/deprecable.rb +37 -0
  119. data/lib/mongoid/deprecation.rb +25 -0
  120. data/lib/mongoid/document.rb +135 -36
  121. data/lib/mongoid/equality.rb +9 -8
  122. data/lib/mongoid/errors/create_collection_failure.rb +33 -0
  123. data/lib/mongoid/errors/document_not_found.rb +10 -6
  124. data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
  125. data/lib/mongoid/errors/immutable_attribute.rb +26 -0
  126. data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
  127. data/lib/mongoid/errors/invalid_config_option.rb +1 -1
  128. data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
  129. data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
  130. data/lib/mongoid/errors/invalid_field.rb +6 -2
  131. data/lib/mongoid/errors/invalid_field_type.rb +26 -0
  132. data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
  133. data/lib/mongoid/errors/invalid_relation.rb +1 -1
  134. data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
  135. data/lib/mongoid/errors/invalid_session_use.rb +1 -1
  136. data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
  137. data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
  138. data/lib/mongoid/errors/mongoid_error.rb +3 -3
  139. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
  140. data/lib/mongoid/errors/no_client_database.rb +1 -1
  141. data/lib/mongoid/errors/no_client_hosts.rb +1 -1
  142. data/lib/mongoid/errors/readonly_attribute.rb +1 -1
  143. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
  144. data/lib/mongoid/errors/unknown_attribute.rb +1 -1
  145. data/lib/mongoid/errors.rb +6 -3
  146. data/lib/mongoid/extensions/array.rb +9 -7
  147. data/lib/mongoid/extensions/big_decimal.rb +33 -10
  148. data/lib/mongoid/extensions/binary.rb +42 -0
  149. data/lib/mongoid/extensions/boolean.rb +8 -2
  150. data/lib/mongoid/extensions/date.rb +26 -20
  151. data/lib/mongoid/extensions/date_time.rb +1 -1
  152. data/lib/mongoid/extensions/false_class.rb +1 -1
  153. data/lib/mongoid/extensions/float.rb +7 -4
  154. data/lib/mongoid/extensions/hash.rb +38 -9
  155. data/lib/mongoid/extensions/integer.rb +7 -4
  156. data/lib/mongoid/extensions/module.rb +1 -1
  157. data/lib/mongoid/extensions/object.rb +10 -8
  158. data/lib/mongoid/extensions/range.rb +41 -10
  159. data/lib/mongoid/extensions/regexp.rb +11 -4
  160. data/lib/mongoid/extensions/set.rb +11 -4
  161. data/lib/mongoid/extensions/string.rb +11 -22
  162. data/lib/mongoid/extensions/symbol.rb +4 -15
  163. data/lib/mongoid/extensions/time.rb +29 -16
  164. data/lib/mongoid/extensions/time_with_zone.rb +1 -2
  165. data/lib/mongoid/extensions/true_class.rb +1 -1
  166. data/lib/mongoid/extensions.rb +1 -0
  167. data/lib/mongoid/factory.rb +55 -7
  168. data/lib/mongoid/fields/foreign_key.rb +11 -4
  169. data/lib/mongoid/fields/localized.rb +19 -4
  170. data/lib/mongoid/fields/standard.rb +17 -7
  171. data/lib/mongoid/fields/validators/macro.rb +3 -9
  172. data/lib/mongoid/fields.rb +142 -28
  173. data/lib/mongoid/findable.rb +54 -24
  174. data/lib/mongoid/indexable/specification.rb +2 -2
  175. data/lib/mongoid/indexable/validators/options.rb +6 -2
  176. data/lib/mongoid/interceptable.rb +187 -16
  177. data/lib/mongoid/matchable.rb +1 -1
  178. data/lib/mongoid/matcher/eq_impl.rb +1 -1
  179. data/lib/mongoid/matcher/type.rb +1 -1
  180. data/lib/mongoid/matcher.rb +48 -14
  181. data/lib/mongoid/persistable/creatable.rb +19 -9
  182. data/lib/mongoid/persistable/deletable.rb +2 -2
  183. data/lib/mongoid/persistable/destroyable.rb +1 -1
  184. data/lib/mongoid/persistable/savable.rb +14 -2
  185. data/lib/mongoid/persistable/unsettable.rb +2 -2
  186. data/lib/mongoid/persistable/updatable.rb +69 -12
  187. data/lib/mongoid/persistable/upsertable.rb +21 -2
  188. data/lib/mongoid/persistable.rb +6 -3
  189. data/lib/mongoid/persistence_context.rb +6 -4
  190. data/lib/mongoid/query_cache.rb +13 -261
  191. data/lib/mongoid/railties/controller_runtime.rb +1 -1
  192. data/lib/mongoid/railties/database.rake +7 -2
  193. data/lib/mongoid/reloadable.rb +10 -8
  194. data/lib/mongoid/scopable.rb +15 -13
  195. data/lib/mongoid/selectable.rb +1 -2
  196. data/lib/mongoid/serializable.rb +17 -13
  197. data/lib/mongoid/stateful.rb +57 -10
  198. data/lib/mongoid/tasks/database.rake +12 -0
  199. data/lib/mongoid/tasks/database.rb +20 -2
  200. data/lib/mongoid/threaded/lifecycle.rb +5 -5
  201. data/lib/mongoid/threaded.rb +42 -12
  202. data/lib/mongoid/timestamps/created.rb +9 -2
  203. data/lib/mongoid/timestamps/updated.rb +2 -2
  204. data/lib/mongoid/touchable.rb +3 -4
  205. data/lib/mongoid/traversable.rb +41 -5
  206. data/lib/mongoid/utils.rb +22 -0
  207. data/lib/mongoid/validatable/associated.rb +98 -17
  208. data/lib/mongoid/validatable/localizable.rb +1 -1
  209. data/lib/mongoid/validatable/macros.rb +5 -7
  210. data/lib/mongoid/validatable/presence.rb +2 -2
  211. data/lib/mongoid/validatable/uniqueness.rb +9 -8
  212. data/lib/mongoid/validatable.rb +17 -6
  213. data/lib/mongoid/version.rb +1 -1
  214. data/lib/mongoid/warnings.rb +19 -4
  215. data/lib/mongoid.rb +17 -3
  216. data/spec/config/mongoid.yml +16 -0
  217. data/spec/integration/app_spec.rb +24 -19
  218. data/spec/integration/associations/belongs_to_spec.rb +18 -0
  219. data/spec/integration/associations/embedded_spec.rb +15 -0
  220. data/spec/integration/associations/embeds_many_spec.rb +15 -2
  221. data/spec/integration/associations/embeds_one_spec.rb +18 -0
  222. data/spec/integration/associations/foreign_key_spec.rb +9 -0
  223. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +61 -0
  224. data/spec/integration/associations/has_one_spec.rb +97 -1
  225. data/spec/integration/associations/scope_option_spec.rb +1 -1
  226. data/spec/integration/callbacks_models.rb +132 -1
  227. data/spec/integration/callbacks_spec.rb +381 -4
  228. data/spec/integration/criteria/range_spec.rb +95 -1
  229. data/spec/integration/discriminator_key_spec.rb +118 -80
  230. data/spec/integration/dots_and_dollars_spec.rb +277 -0
  231. data/spec/integration/i18n_fallbacks_spec.rb +3 -32
  232. data/spec/integration/matcher_examples_spec.rb +20 -13
  233. data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
  234. data/spec/integration/matcher_operator_spec.rb +3 -5
  235. data/spec/integration/persistence/range_field_spec.rb +350 -0
  236. data/spec/mongoid/association/counter_cache_spec.rb +1 -1
  237. data/spec/mongoid/association/depending_spec.rb +9 -9
  238. data/spec/mongoid/association/eager_spec.rb +26 -3
  239. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
  240. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
  241. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +96 -9
  242. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
  243. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +290 -65
  244. data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
  245. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +16 -0
  246. data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
  247. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
  248. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
  249. data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
  250. data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
  251. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
  252. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
  253. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +19 -0
  254. data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
  255. data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
  256. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +186 -229
  257. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
  258. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
  259. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
  260. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
  261. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +215 -177
  262. data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
  263. data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
  264. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
  265. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
  266. data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
  267. data/spec/mongoid/association/syncable_spec.rb +15 -1
  268. data/spec/mongoid/association_spec.rb +60 -0
  269. data/spec/mongoid/atomic/paths_spec.rb +0 -14
  270. data/spec/mongoid/attributes/nested_spec.rb +80 -11
  271. data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
  272. data/spec/mongoid/attributes/projector_spec.rb +1 -5
  273. data/spec/mongoid/attributes/readonly_spec.rb +19 -0
  274. data/spec/mongoid/attributes_spec.rb +526 -33
  275. data/spec/mongoid/changeable_spec.rb +429 -37
  276. data/spec/mongoid/clients/factory_spec.rb +23 -30
  277. data/spec/mongoid/clients/sessions_spec.rb +0 -38
  278. data/spec/mongoid/clients_spec.rb +149 -15
  279. data/spec/mongoid/collection_configurable_spec.rb +158 -0
  280. data/spec/mongoid/config/defaults_spec.rb +160 -0
  281. data/spec/mongoid/config_spec.rb +214 -31
  282. data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
  283. data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
  284. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
  285. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
  286. data/spec/mongoid/contextual/memory_spec.rb +850 -88
  287. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
  288. data/spec/mongoid/contextual/mongo_spec.rb +2256 -1005
  289. data/spec/mongoid/contextual/none_spec.rb +60 -21
  290. data/spec/mongoid/copyable_spec.rb +453 -11
  291. data/spec/mongoid/criteria/findable_spec.rb +86 -210
  292. data/spec/mongoid/criteria/includable_spec.rb +1492 -0
  293. data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
  294. data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
  295. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
  296. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
  297. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
  298. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
  299. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
  300. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
  301. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -69
  302. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
  303. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
  304. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
  305. data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
  306. data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
  307. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
  308. data/spec/mongoid/criteria/queryable/selectable_spec.rb +107 -86
  309. data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
  310. data/spec/mongoid/criteria/translator_spec.rb +132 -0
  311. data/spec/mongoid/criteria_projection_spec.rb +1 -5
  312. data/spec/mongoid/criteria_spec.rb +469 -1205
  313. data/spec/mongoid/document_fields_spec.rb +173 -24
  314. data/spec/mongoid/document_spec.rb +59 -41
  315. data/spec/mongoid/equality_spec.rb +6 -0
  316. data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
  317. data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
  318. data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
  319. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
  320. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  321. data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
  322. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
  323. data/spec/mongoid/extensions/array_spec.rb +16 -2
  324. data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
  325. data/spec/mongoid/extensions/binary_spec.rb +44 -9
  326. data/spec/mongoid/extensions/boolean_spec.rb +68 -82
  327. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
  328. data/spec/mongoid/extensions/date_spec.rb +71 -1
  329. data/spec/mongoid/extensions/date_time_spec.rb +15 -9
  330. data/spec/mongoid/extensions/float_spec.rb +53 -74
  331. data/spec/mongoid/extensions/hash_spec.rb +33 -3
  332. data/spec/mongoid/extensions/integer_spec.rb +50 -64
  333. data/spec/mongoid/extensions/range_spec.rb +255 -54
  334. data/spec/mongoid/extensions/regexp_spec.rb +58 -33
  335. data/spec/mongoid/extensions/set_spec.rb +106 -0
  336. data/spec/mongoid/extensions/string_spec.rb +53 -25
  337. data/spec/mongoid/extensions/symbol_spec.rb +18 -25
  338. data/spec/mongoid/extensions/time_spec.rb +639 -106
  339. data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
  340. data/spec/mongoid/factory_spec.rb +61 -1
  341. data/spec/mongoid/fields/localized_spec.rb +80 -37
  342. data/spec/mongoid/fields_spec.rb +503 -87
  343. data/spec/mongoid/findable_spec.rb +450 -58
  344. data/spec/mongoid/indexable/specification_spec.rb +2 -2
  345. data/spec/mongoid/indexable_spec.rb +55 -30
  346. data/spec/mongoid/interceptable_spec.rb +904 -22
  347. data/spec/mongoid/interceptable_spec_models.rb +189 -22
  348. data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
  349. data/spec/mongoid/mongoizable_spec.rb +285 -0
  350. data/spec/mongoid/persistable/creatable_spec.rb +2 -2
  351. data/spec/mongoid/persistable/deletable_spec.rb +28 -8
  352. data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
  353. data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
  354. data/spec/mongoid/persistable/logical_spec.rb +37 -0
  355. data/spec/mongoid/persistable/poppable_spec.rb +36 -0
  356. data/spec/mongoid/persistable/pullable_spec.rb +72 -0
  357. data/spec/mongoid/persistable/pushable_spec.rb +72 -0
  358. data/spec/mongoid/persistable/renamable_spec.rb +36 -0
  359. data/spec/mongoid/persistable/savable_spec.rb +96 -0
  360. data/spec/mongoid/persistable/settable_spec.rb +37 -0
  361. data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
  362. data/spec/mongoid/persistable/updatable_spec.rb +20 -28
  363. data/spec/mongoid/persistable/upsertable_spec.rb +89 -1
  364. data/spec/mongoid/persistence_context_spec.rb +31 -57
  365. data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
  366. data/spec/mongoid/query_cache_spec.rb +56 -215
  367. data/spec/mongoid/reloadable_spec.rb +83 -6
  368. data/spec/mongoid/scopable_spec.rb +91 -1
  369. data/spec/mongoid/serializable_spec.rb +25 -39
  370. data/spec/mongoid/shardable_spec.rb +4 -4
  371. data/spec/mongoid/stateful_spec.rb +150 -8
  372. data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
  373. data/spec/mongoid/tasks/database_spec.rb +127 -0
  374. data/spec/mongoid/timestamps/created_spec.rb +23 -0
  375. data/spec/mongoid/timestamps_spec.rb +392 -4
  376. data/spec/mongoid/timestamps_spec_models.rb +67 -0
  377. data/spec/mongoid/touchable_spec.rb +390 -2
  378. data/spec/mongoid/touchable_spec_models.rb +14 -8
  379. data/spec/mongoid/traversable_spec.rb +13 -35
  380. data/spec/mongoid/validatable/associated_spec.rb +27 -34
  381. data/spec/mongoid/validatable/presence_spec.rb +1 -1
  382. data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
  383. data/spec/mongoid/warnings_spec.rb +35 -0
  384. data/spec/mongoid_spec.rb +34 -16
  385. data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
  386. data/spec/rails/mongoid_spec.rb +4 -16
  387. data/spec/spec_helper.rb +5 -0
  388. data/spec/support/constraints.rb +24 -0
  389. data/spec/support/immutable_ids.rb +118 -0
  390. data/spec/support/macros.rb +78 -0
  391. data/spec/support/models/artist.rb +0 -1
  392. data/spec/support/models/augmentation.rb +12 -0
  393. data/spec/support/models/band.rb +5 -0
  394. data/spec/support/models/book.rb +1 -0
  395. data/spec/support/models/building.rb +2 -0
  396. data/spec/support/models/catalog.rb +24 -0
  397. data/spec/support/models/circus.rb +3 -0
  398. data/spec/support/models/cover.rb +10 -0
  399. data/spec/support/models/fanatic.rb +8 -0
  400. data/spec/support/models/implant.rb +9 -0
  401. data/spec/support/models/label.rb +2 -0
  402. data/spec/support/models/lat_lng.rb +6 -0
  403. data/spec/support/models/name.rb +10 -0
  404. data/spec/support/models/passport.rb +9 -0
  405. data/spec/support/models/person.rb +2 -0
  406. data/spec/support/models/player.rb +2 -0
  407. data/spec/support/models/powerup.rb +12 -0
  408. data/spec/support/models/product.rb +1 -0
  409. data/spec/support/models/purse.rb +9 -0
  410. data/spec/support/models/registry.rb +1 -0
  411. data/spec/support/models/school.rb +14 -0
  412. data/spec/support/models/shield.rb +18 -0
  413. data/spec/support/models/student.rb +14 -0
  414. data/spec/support/models/weapon.rb +12 -0
  415. metadata +98 -96
  416. checksums.yaml.gz.sig +0 -0
  417. data/lib/mongoid/errors/eager_load.rb +0 -23
  418. data/lib/mongoid/errors/invalid_value.rb +0 -17
  419. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
  420. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
  421. data/spec/mongoid/errors/eager_load_spec.rb +0 -31
  422. data/spec/shared/LICENSE +0 -20
  423. data/spec/shared/bin/get-mongodb-download-url +0 -17
  424. data/spec/shared/bin/s3-copy +0 -45
  425. data/spec/shared/bin/s3-upload +0 -69
  426. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  427. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  428. data/spec/shared/lib/mrss/constraints.rb +0 -378
  429. data/spec/shared/lib/mrss/docker_runner.rb +0 -291
  430. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  431. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  432. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  433. data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
  434. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  435. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  436. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  437. data/spec/shared/lib/mrss/utils.rb +0 -15
  438. data/spec/shared/share/Dockerfile.erb +0 -325
  439. data/spec/shared/share/haproxy-1.conf +0 -16
  440. data/spec/shared/share/haproxy-2.conf +0 -17
  441. data/spec/shared/shlib/config.sh +0 -27
  442. data/spec/shared/shlib/distro.sh +0 -74
  443. data/spec/shared/shlib/server.sh +0 -392
  444. data/spec/shared/shlib/set_env.sh +0 -169
  445. data.tar.gz.sig +0 -0
  446. metadata.gz.sig +0 -3
@@ -142,107 +142,6 @@ describe Mongoid::Criteria::Queryable::Optional do
142
142
  it_behaves_like "a cloning option"
143
143
  end
144
144
  end
145
-
146
- context "when using the mongo-1.x driver syntax" do
147
-
148
- let(:query) do
149
- Mongoid::Query.new({}, {}, :mongo1x)
150
- end
151
-
152
- context "when provided symbols" do
153
-
154
- let(:selection) do
155
- query.send(method, :field_one, :field_two)
156
- end
157
-
158
- it "adds the sorting criteria" do
159
- expect(selection.options).to eq(
160
- { sort: [[ :field_one, 1 ], [ :field_two, 1 ]]}
161
- )
162
- end
163
-
164
- it_behaves_like "a cloning option"
165
- end
166
-
167
- context "when provided an array of symbols" do
168
-
169
- let(:selection) do
170
- query.send(method, [ :field_one, :field_two ])
171
- end
172
-
173
- it "adds the sorting criteria" do
174
- expect(selection.options).to eq(
175
- { sort: [[ :field_one, 1 ], [ :field_two, 1 ]]}
176
- )
177
- end
178
-
179
- it_behaves_like "a cloning option"
180
- end
181
-
182
- context "when provided strings" do
183
-
184
- let(:selection) do
185
- query.send(method, "field_one", "field_two")
186
- end
187
-
188
- it "adds the sorting criteria" do
189
- expect(selection.options).to eq(
190
- { sort: [[ "field_one", 1 ], [ "field_two", 1 ]]}
191
- )
192
- end
193
-
194
- it_behaves_like "a cloning option"
195
- end
196
-
197
- context "when provided an array of strings" do
198
-
199
- let(:selection) do
200
- query.send(method, [ "field_one", "field_two" ])
201
- end
202
-
203
- it "adds the sorting criteria" do
204
- expect(selection.options).to eq(
205
- { sort: [[ "field_one", 1 ], [ "field_two", 1 ]]}
206
- )
207
- end
208
-
209
- it_behaves_like "a cloning option"
210
- end
211
-
212
- context "when provided no options" do
213
-
214
- let(:selection) do
215
- query.send(method)
216
- end
217
-
218
- it "does not add any sorting criteria" do
219
- expect(selection.options).to be_empty
220
- end
221
-
222
- it "returns the query" do
223
- expect(selection).to eq(query)
224
- end
225
-
226
- it_behaves_like "a cloning option"
227
- end
228
-
229
- context "when provided nil" do
230
-
231
- let(:selection) do
232
- query.send(method, nil)
233
- end
234
-
235
- it "does not add any sorting criteria" do
236
- expect(selection.options).to be_empty
237
- end
238
-
239
- it "returns the query" do
240
- expect(selection).to eq(query)
241
- end
242
-
243
- it_behaves_like "a cloning option"
244
- end
245
- end
246
145
  end
247
146
  end
248
147
 
@@ -415,107 +314,6 @@ describe Mongoid::Criteria::Queryable::Optional do
415
314
  it_behaves_like "a cloning option"
416
315
  end
417
316
  end
418
-
419
- context "when using the mongo-1.x driver syntax" do
420
-
421
- let(:query) do
422
- Mongoid::Query.new({}, {}, :mongo1x)
423
- end
424
-
425
- context "when provided symbols" do
426
-
427
- let(:selection) do
428
- query.send(method, :field_one, :field_two)
429
- end
430
-
431
- it "adds the sorting criteria" do
432
- expect(selection.options).to eq(
433
- { sort: [[ :field_one, -1 ], [ :field_two, -1 ]]}
434
- )
435
- end
436
-
437
- it_behaves_like "a cloning option"
438
- end
439
-
440
- context "when provided an array of symbols" do
441
-
442
- let(:selection) do
443
- query.send(method, [ :field_one, :field_two ])
444
- end
445
-
446
- it "adds the sorting criteria" do
447
- expect(selection.options).to eq(
448
- { sort: [[ :field_one, -1 ], [ :field_two, -1 ]]}
449
- )
450
- end
451
-
452
- it_behaves_like "a cloning option"
453
- end
454
-
455
- context "when provided strings" do
456
-
457
- let(:selection) do
458
- query.send(method, "field_one", "field_two")
459
- end
460
-
461
- it "adds the sorting criteria" do
462
- expect(selection.options).to eq(
463
- { sort: [[ "field_one", -1 ], [ "field_two", -1 ]]}
464
- )
465
- end
466
-
467
- it_behaves_like "a cloning option"
468
- end
469
-
470
- context "when provided an array of strings" do
471
-
472
- let(:selection) do
473
- query.send(method, [ "field_one", "field_two" ])
474
- end
475
-
476
- it "adds the sorting criteria" do
477
- expect(selection.options).to eq(
478
- { sort: [[ "field_one", -1 ], [ "field_two", -1 ]]}
479
- )
480
- end
481
-
482
- it_behaves_like "a cloning option"
483
- end
484
-
485
- context "when provided no options" do
486
-
487
- let(:selection) do
488
- query.send(method)
489
- end
490
-
491
- it "does not add any sorting criteria" do
492
- expect(selection.options).to be_empty
493
- end
494
-
495
- it "returns the query" do
496
- expect(selection).to eq(query)
497
- end
498
-
499
- it_behaves_like "a cloning option"
500
- end
501
-
502
- context "when provided nil" do
503
-
504
- let(:selection) do
505
- query.send(method, nil)
506
- end
507
-
508
- it "does not add any sorting criteria" do
509
- expect(selection.options).to be_empty
510
- end
511
-
512
- it "returns the query" do
513
- expect(selection).to eq(query)
514
- end
515
-
516
- it_behaves_like "a cloning option"
517
- end
518
- end
519
317
  end
520
318
  end
521
319
 
@@ -943,283 +741,16 @@ describe Mongoid::Criteria::Queryable::Optional do
943
741
 
944
742
  it_behaves_like "a cloning option"
945
743
  end
946
- end
947
-
948
- context "when provided an array" do
949
-
950
- context "when the array is multi-dimensional" do
951
-
952
- context "when the arrays have integer values" do
953
-
954
- let(:selection) do
955
- query.send("#{method}", [[ :field_one, 1 ],[ :field_two, -1 ]])
956
- end
957
-
958
- it "adds the sorting criteria" do
959
- expect(selection.options).to eq(
960
- { sort: { "field_one" => 1, "field_two" => -1 }}
961
- )
962
- end
963
-
964
- it_behaves_like "a cloning option"
965
- end
966
-
967
- context "when the arrays have symbol values" do
968
-
969
- let(:selection) do
970
- query.send("#{method}", [[ :field_one, :asc ],[ :field_two, :desc ]])
971
- end
972
-
973
- it "adds the sorting criteria" do
974
- expect(selection.options).to eq(
975
- { sort: { "field_one" => 1, "field_two" => -1 }}
976
- )
977
- end
978
-
979
- it_behaves_like "a cloning option"
980
- end
981
-
982
- context "when the arrays have string values" do
983
-
984
- let(:selection) do
985
- query.send("#{method}", [[ :field_one, "asc" ],[ :field_two, "desc" ]])
986
- end
987
-
988
- it "adds the sorting criteria" do
989
- expect(selection.options).to eq(
990
- { sort: { "field_one" => 1, "field_two" => -1 }}
991
- )
992
- end
993
-
994
- it_behaves_like "a cloning option"
995
- end
996
- end
997
-
998
- context "when the array is selectable keys" do
999
-
1000
- let(:selection) do
1001
- query.send("#{method}", [ :field_one.asc, :field_two.desc ])
1002
- end
1003
-
1004
- it "adds the sorting criteria" do
1005
- expect(selection.options).to eq(
1006
- { sort: { "field_one" => 1, "field_two" => -1 }}
1007
- )
1008
- end
1009
-
1010
- it_behaves_like "a cloning option"
1011
- end
1012
- end
1013
-
1014
- context "when provided values" do
1015
-
1016
- context "when the values are arrays" do
1017
-
1018
- context "when the values have integer directions" do
1019
-
1020
- let(:selection) do
1021
- query.send("#{method}", [ :field_one, 1 ],[ :field_two, -1 ])
1022
- end
1023
-
1024
- it "adds the sorting criteria" do
1025
- expect(selection.options).to eq(
1026
- { sort: { "field_one" => 1, "field_two" => -1 }}
1027
- )
1028
- end
1029
-
1030
- it_behaves_like "a cloning option"
1031
- end
1032
-
1033
- context "when the values have symbol directions" do
1034
-
1035
- let(:selection) do
1036
- query.send("#{method}", [ :field_one, :asc ],[ :field_two, :desc ])
1037
- end
1038
-
1039
- it "adds the sorting criteria" do
1040
- expect(selection.options).to eq(
1041
- { sort: { "field_one" => 1, "field_two" => -1 }}
1042
- )
1043
- end
1044
-
1045
- it_behaves_like "a cloning option"
1046
- end
1047
-
1048
- context "when the values have string directions" do
1049
-
1050
- let(:selection) do
1051
- query.send("#{method}", [ :field_one, "asc" ],[ :field_two, "desc" ])
1052
- end
1053
-
1054
- it "adds the sorting criteria" do
1055
- expect(selection.options).to eq(
1056
- { sort: { "field_one" => 1, "field_two" => -1 }}
1057
- )
1058
- end
1059
-
1060
- it_behaves_like "a cloning option"
1061
- end
1062
- end
1063
-
1064
- context "when the values are selectable keys" do
1065
-
1066
- let(:selection) do
1067
- query.send("#{method}", :field_one.asc, :field_two.desc)
1068
- end
1069
-
1070
- it "adds the sorting criteria" do
1071
- expect(selection.options).to eq(
1072
- { sort: { "field_one" => 1, "field_two" => -1 }}
1073
- )
1074
- end
1075
-
1076
- it_behaves_like "a cloning option"
1077
- end
1078
- end
1079
-
1080
- context "when provided a string" do
1081
-
1082
- context "when the direction is lowercase" do
1083
-
1084
- context "when abbreviated" do
1085
-
1086
- let(:selection) do
1087
- query.send("#{method}", "field_one asc, field_two desc")
1088
- end
1089
-
1090
- it "adds the sorting criteria" do
1091
- expect(selection.options).to eq(
1092
- { sort: { "field_one" => 1, "field_two" => -1 }}
1093
- )
1094
- end
1095
-
1096
- it_behaves_like "a cloning option"
1097
- end
1098
-
1099
- context "when spelled out" do
1100
-
1101
- let(:selection) do
1102
- query.send("#{method}", "field_one ascending, field_two descending")
1103
- end
1104
-
1105
- it "adds the sorting criteria" do
1106
- expect(selection.options).to eq(
1107
- { sort: { "field_one" => 1, "field_two" => -1 }}
1108
- )
1109
- end
1110
-
1111
- it_behaves_like "a cloning option"
1112
- end
1113
- end
1114
-
1115
- context "when the direction is uppercase" do
1116
-
1117
- context "when abbreviated" do
1118
-
1119
- let(:selection) do
1120
- query.send("#{method}", "field_one ASC, field_two DESC")
1121
- end
1122
-
1123
- it "adds the sorting criteria" do
1124
- expect(selection.options).to eq(
1125
- { sort: { "field_one" => 1, "field_two" => -1 }}
1126
- )
1127
- end
1128
-
1129
- it_behaves_like "a cloning option"
1130
- end
1131
-
1132
- context "when spelled out" do
1133
-
1134
- let(:selection) do
1135
- query.send("#{method}", "field_one ASCENDING, field_two DESCENDING")
1136
- end
1137
-
1138
- it "adds the sorting criteria" do
1139
- expect(selection.options).to eq(
1140
- { sort: { "field_one" => 1, "field_two" => -1 }}
1141
- )
1142
- end
1143
-
1144
- it_behaves_like "a cloning option"
1145
- end
1146
- end
1147
- end
1148
-
1149
- context "when provided no options" do
1150
-
1151
- let(:selection) do
1152
- query.order_by
1153
- end
1154
-
1155
- it "returns the query" do
1156
- expect(selection).to eq(query)
1157
- end
1158
-
1159
- it_behaves_like "a cloning option"
1160
- end
1161
-
1162
- context "when provided nil" do
1163
-
1164
- let(:selection) do
1165
- query.send("#{method}", nil)
1166
- end
1167
-
1168
- it "returns the query" do
1169
- expect(selection).to eq(query)
1170
- end
1171
-
1172
- it_behaves_like "a cloning option"
1173
- end
1174
- end
1175
-
1176
- context "when using the mongo-1.x driver syntax" do
1177
-
1178
- let(:query) do
1179
- Mongoid::Query.new({}, {}, :mongo1x)
1180
- end
1181
-
1182
- context "when provided a hash" do
1183
-
1184
- context "when the hash has integer values" do
1185
-
1186
- let(:selection) do
1187
- query.send("#{method}", field_one: 1, field_two: -1)
1188
- end
1189
-
1190
- it "adds the sorting criteria" do
1191
- expect(selection.options).to eq(
1192
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
1193
- )
1194
- end
1195
-
1196
- it_behaves_like "a cloning option"
1197
- end
1198
744
 
1199
- context "when the hash has symbol values" do
745
+ context "when the hash has hash values" do
1200
746
 
1201
747
  let(:selection) do
1202
- query.send("#{method}", field_one: :asc, field_two: :desc)
748
+ query.send("#{method}", score: { "$meta" => "textScore"})
1203
749
  end
1204
750
 
1205
751
  it "adds the sorting criteria" do
1206
752
  expect(selection.options).to eq(
1207
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
1208
- )
1209
- end
1210
-
1211
- it_behaves_like "a cloning option"
1212
- end
1213
-
1214
- context "when the hash has string values" do
1215
-
1216
- let(:selection) do
1217
- query.send("#{method}", field_one: "asc", field_two: "desc")
1218
- end
1219
-
1220
- it "adds the sorting criteria" do
1221
- expect(selection.options).to eq(
1222
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
753
+ { sort: { "score" => { "$meta" => "textScore" } }}
1223
754
  )
1224
755
  end
1225
756
 
@@ -1239,7 +770,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1239
770
 
1240
771
  it "adds the sorting criteria" do
1241
772
  expect(selection.options).to eq(
1242
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
773
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1243
774
  )
1244
775
  end
1245
776
 
@@ -1254,7 +785,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1254
785
 
1255
786
  it "adds the sorting criteria" do
1256
787
  expect(selection.options).to eq(
1257
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
788
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1258
789
  )
1259
790
  end
1260
791
 
@@ -1269,7 +800,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1269
800
 
1270
801
  it "adds the sorting criteria" do
1271
802
  expect(selection.options).to eq(
1272
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
803
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1273
804
  )
1274
805
  end
1275
806
 
@@ -1285,7 +816,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1285
816
 
1286
817
  it "adds the sorting criteria" do
1287
818
  expect(selection.options).to eq(
1288
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
819
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1289
820
  )
1290
821
  end
1291
822
 
@@ -1305,7 +836,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1305
836
 
1306
837
  it "adds the sorting criteria" do
1307
838
  expect(selection.options).to eq(
1308
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
839
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1309
840
  )
1310
841
  end
1311
842
 
@@ -1320,7 +851,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1320
851
 
1321
852
  it "adds the sorting criteria" do
1322
853
  expect(selection.options).to eq(
1323
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
854
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1324
855
  )
1325
856
  end
1326
857
 
@@ -1335,7 +866,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1335
866
 
1336
867
  it "adds the sorting criteria" do
1337
868
  expect(selection.options).to eq(
1338
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
869
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1339
870
  )
1340
871
  end
1341
872
 
@@ -1351,7 +882,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1351
882
 
1352
883
  it "adds the sorting criteria" do
1353
884
  expect(selection.options).to eq(
1354
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
885
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1355
886
  )
1356
887
  end
1357
888
 
@@ -1371,7 +902,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1371
902
 
1372
903
  it "adds the sorting criteria" do
1373
904
  expect(selection.options).to eq(
1374
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
905
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1375
906
  )
1376
907
  end
1377
908
 
@@ -1386,7 +917,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1386
917
 
1387
918
  it "adds the sorting criteria" do
1388
919
  expect(selection.options).to eq(
1389
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
920
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1390
921
  )
1391
922
  end
1392
923
 
@@ -1404,7 +935,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1404
935
 
1405
936
  it "adds the sorting criteria" do
1406
937
  expect(selection.options).to eq(
1407
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
938
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1408
939
  )
1409
940
  end
1410
941
 
@@ -1419,7 +950,7 @@ describe Mongoid::Criteria::Queryable::Optional do
1419
950
 
1420
951
  it "adds the sorting criteria" do
1421
952
  expect(selection.options).to eq(
1422
- { sort: [[ :field_one, 1 ], [ :field_two, -1 ]]}
953
+ { sort: { "field_one" => 1, "field_two" => -1 }}
1423
954
  )
1424
955
  end
1425
956
 
@@ -221,6 +221,7 @@ describe Mongoid::Criteria::Queryable::Options do
221
221
  end
222
222
 
223
223
  context "when the serializer is localized" do
224
+ with_default_i18n_configs
224
225
 
225
226
  before(:all) do
226
227
  class Field
@@ -232,7 +233,6 @@ describe Mongoid::Criteria::Queryable::Options do
232
233
 
233
234
  after(:all) do
234
235
  Object.send(:remove_const, :Field)
235
- ::I18n.locale = :en
236
236
  end
237
237
 
238
238
  let(:options) do