mongoid 7.5.4 → 8.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (414) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +3 -3
  4. data/README.md +6 -6
  5. data/lib/config/locales/en.yml +92 -43
  6. data/lib/mongoid/association/accessors.rb +40 -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 +29 -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 +69 -45
  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 +29 -19
  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 +7 -0
  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 +3 -3
  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 +140 -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 +517 -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 +1 -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 +47 -38
  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 +36 -0
  119. data/lib/mongoid/deprecation.rb +25 -0
  120. data/lib/mongoid/document.rb +127 -35
  121. data/lib/mongoid/equality.rb +8 -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 +19 -8
  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 +129 -20
  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 +76 -15
  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 +33 -13
  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 +10 -6
  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 +1 -1
  203. data/lib/mongoid/timestamps/updated.rb +2 -2
  204. data/lib/mongoid/touchable.rb +2 -3
  205. data/lib/mongoid/traversable.rb +5 -4
  206. data/lib/mongoid/utils.rb +22 -0
  207. data/lib/mongoid/validatable/localizable.rb +1 -1
  208. data/lib/mongoid/validatable/macros.rb +5 -7
  209. data/lib/mongoid/validatable/presence.rb +2 -2
  210. data/lib/mongoid/validatable/uniqueness.rb +9 -8
  211. data/lib/mongoid/validatable.rb +9 -6
  212. data/lib/mongoid/version.rb +1 -1
  213. data/lib/mongoid/warnings.rb +19 -4
  214. data/lib/mongoid.rb +17 -3
  215. data/spec/config/mongoid.yml +16 -0
  216. data/spec/integration/app_spec.rb +10 -14
  217. data/spec/integration/associations/belongs_to_spec.rb +18 -0
  218. data/spec/integration/associations/embedded_spec.rb +15 -0
  219. data/spec/integration/associations/embeds_many_spec.rb +15 -2
  220. data/spec/integration/associations/embeds_one_spec.rb +18 -0
  221. data/spec/integration/associations/foreign_key_spec.rb +9 -0
  222. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
  223. data/spec/integration/associations/has_one_spec.rb +97 -1
  224. data/spec/integration/associations/scope_option_spec.rb +1 -1
  225. data/spec/integration/callbacks_models.rb +132 -1
  226. data/spec/integration/callbacks_spec.rb +360 -4
  227. data/spec/integration/criteria/range_spec.rb +95 -1
  228. data/spec/integration/discriminator_key_spec.rb +118 -80
  229. data/spec/integration/dots_and_dollars_spec.rb +277 -0
  230. data/spec/integration/i18n_fallbacks_spec.rb +3 -32
  231. data/spec/integration/matcher_examples_spec.rb +20 -13
  232. data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
  233. data/spec/integration/matcher_operator_spec.rb +3 -5
  234. data/spec/integration/persistence/range_field_spec.rb +350 -0
  235. data/spec/mongoid/association/counter_cache_spec.rb +1 -1
  236. data/spec/mongoid/association/depending_spec.rb +9 -9
  237. data/spec/mongoid/association/eager_spec.rb +2 -1
  238. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
  239. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
  240. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +96 -9
  241. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
  242. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +255 -65
  243. data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
  244. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
  245. data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
  246. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
  247. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
  248. data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
  249. data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
  250. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
  251. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
  252. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
  253. data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
  254. data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
  255. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +186 -229
  256. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
  257. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
  258. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
  259. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
  260. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +173 -177
  261. data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
  262. data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
  263. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
  264. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
  265. data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
  266. data/spec/mongoid/association/syncable_spec.rb +15 -1
  267. data/spec/mongoid/atomic/paths_spec.rb +0 -14
  268. data/spec/mongoid/attributes/nested_spec.rb +80 -11
  269. data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
  270. data/spec/mongoid/attributes/projector_spec.rb +1 -5
  271. data/spec/mongoid/attributes_spec.rb +510 -33
  272. data/spec/mongoid/changeable_spec.rb +429 -37
  273. data/spec/mongoid/clients/factory_spec.rb +23 -30
  274. data/spec/mongoid/clients/sessions_spec.rb +0 -38
  275. data/spec/mongoid/clients_spec.rb +149 -15
  276. data/spec/mongoid/collection_configurable_spec.rb +158 -0
  277. data/spec/mongoid/config/defaults_spec.rb +160 -0
  278. data/spec/mongoid/config_spec.rb +214 -31
  279. data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
  280. data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
  281. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
  282. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
  283. data/spec/mongoid/contextual/memory_spec.rb +850 -88
  284. data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
  285. data/spec/mongoid/contextual/mongo_spec.rb +1572 -435
  286. data/spec/mongoid/contextual/none_spec.rb +60 -21
  287. data/spec/mongoid/copyable_spec.rb +453 -11
  288. data/spec/mongoid/criteria/findable_spec.rb +86 -210
  289. data/spec/mongoid/criteria/includable_spec.rb +1492 -0
  290. data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
  291. data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
  292. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
  293. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
  294. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
  295. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
  296. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
  297. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
  298. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -69
  299. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
  300. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
  301. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
  302. data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
  303. data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
  304. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
  305. data/spec/mongoid/criteria/queryable/selectable_spec.rb +78 -86
  306. data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
  307. data/spec/mongoid/criteria/translator_spec.rb +132 -0
  308. data/spec/mongoid/criteria_projection_spec.rb +1 -5
  309. data/spec/mongoid/criteria_spec.rb +469 -1205
  310. data/spec/mongoid/document_fields_spec.rb +173 -24
  311. data/spec/mongoid/document_spec.rb +32 -41
  312. data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
  313. data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
  314. data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
  315. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
  316. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  317. data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
  318. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
  319. data/spec/mongoid/extensions/array_spec.rb +16 -2
  320. data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
  321. data/spec/mongoid/extensions/binary_spec.rb +44 -9
  322. data/spec/mongoid/extensions/boolean_spec.rb +68 -82
  323. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
  324. data/spec/mongoid/extensions/date_spec.rb +71 -1
  325. data/spec/mongoid/extensions/date_time_spec.rb +15 -9
  326. data/spec/mongoid/extensions/float_spec.rb +53 -74
  327. data/spec/mongoid/extensions/hash_spec.rb +33 -3
  328. data/spec/mongoid/extensions/integer_spec.rb +50 -64
  329. data/spec/mongoid/extensions/range_spec.rb +255 -54
  330. data/spec/mongoid/extensions/regexp_spec.rb +58 -33
  331. data/spec/mongoid/extensions/set_spec.rb +106 -0
  332. data/spec/mongoid/extensions/string_spec.rb +53 -25
  333. data/spec/mongoid/extensions/symbol_spec.rb +18 -25
  334. data/spec/mongoid/extensions/time_spec.rb +639 -106
  335. data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
  336. data/spec/mongoid/factory_spec.rb +61 -1
  337. data/spec/mongoid/fields/localized_spec.rb +80 -37
  338. data/spec/mongoid/fields_spec.rb +500 -84
  339. data/spec/mongoid/findable_spec.rb +450 -58
  340. data/spec/mongoid/indexable/specification_spec.rb +2 -2
  341. data/spec/mongoid/indexable_spec.rb +55 -30
  342. data/spec/mongoid/interceptable_spec.rb +599 -8
  343. data/spec/mongoid/interceptable_spec_models.rb +235 -4
  344. data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
  345. data/spec/mongoid/mongoizable_spec.rb +285 -0
  346. data/spec/mongoid/persistable/creatable_spec.rb +2 -2
  347. data/spec/mongoid/persistable/deletable_spec.rb +28 -8
  348. data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
  349. data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
  350. data/spec/mongoid/persistable/logical_spec.rb +37 -0
  351. data/spec/mongoid/persistable/poppable_spec.rb +36 -0
  352. data/spec/mongoid/persistable/pullable_spec.rb +72 -0
  353. data/spec/mongoid/persistable/pushable_spec.rb +72 -0
  354. data/spec/mongoid/persistable/renamable_spec.rb +36 -0
  355. data/spec/mongoid/persistable/savable_spec.rb +96 -0
  356. data/spec/mongoid/persistable/settable_spec.rb +37 -0
  357. data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
  358. data/spec/mongoid/persistable/updatable_spec.rb +20 -28
  359. data/spec/mongoid/persistable/upsertable_spec.rb +89 -1
  360. data/spec/mongoid/persistence_context_spec.rb +31 -57
  361. data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
  362. data/spec/mongoid/query_cache_spec.rb +56 -215
  363. data/spec/mongoid/reloadable_spec.rb +83 -6
  364. data/spec/mongoid/scopable_spec.rb +91 -1
  365. data/spec/mongoid/serializable_spec.rb +9 -30
  366. data/spec/mongoid/shardable_spec.rb +4 -4
  367. data/spec/mongoid/stateful_spec.rb +150 -8
  368. data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
  369. data/spec/mongoid/tasks/database_spec.rb +127 -0
  370. data/spec/mongoid/timestamps_spec.rb +392 -4
  371. data/spec/mongoid/timestamps_spec_models.rb +67 -0
  372. data/spec/mongoid/touchable_spec.rb +390 -2
  373. data/spec/mongoid/touchable_spec_models.rb +14 -8
  374. data/spec/mongoid/traversable_spec.rb +13 -35
  375. data/spec/mongoid/validatable/presence_spec.rb +1 -1
  376. data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
  377. data/spec/mongoid/warnings_spec.rb +35 -0
  378. data/spec/mongoid_spec.rb +34 -16
  379. data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
  380. data/spec/rails/mongoid_spec.rb +4 -16
  381. data/spec/spec_helper.rb +5 -0
  382. data/spec/support/constraints.rb +24 -0
  383. data/spec/support/immutable_ids.rb +118 -0
  384. data/spec/support/macros.rb +78 -0
  385. data/spec/support/models/artist.rb +0 -1
  386. data/spec/support/models/augmentation.rb +12 -0
  387. data/spec/support/models/band.rb +4 -0
  388. data/spec/support/models/book.rb +1 -0
  389. data/spec/support/models/building.rb +2 -0
  390. data/spec/support/models/catalog.rb +24 -0
  391. data/spec/support/models/circus.rb +3 -0
  392. data/spec/support/models/cover.rb +10 -0
  393. data/spec/support/models/fanatic.rb +8 -0
  394. data/spec/support/models/implant.rb +9 -0
  395. data/spec/support/models/label.rb +2 -0
  396. data/spec/support/models/passport.rb +9 -0
  397. data/spec/support/models/person.rb +2 -0
  398. data/spec/support/models/player.rb +2 -0
  399. data/spec/support/models/powerup.rb +12 -0
  400. data/spec/support/models/product.rb +1 -0
  401. data/spec/support/models/purse.rb +9 -0
  402. data/spec/support/models/registry.rb +1 -0
  403. data/spec/support/models/school.rb +14 -0
  404. data/spec/support/models/shield.rb +18 -0
  405. data/spec/support/models/student.rb +14 -0
  406. data/spec/support/models/weapon.rb +12 -0
  407. data.tar.gz.sig +0 -0
  408. metadata +93 -15
  409. metadata.gz.sig +0 -0
  410. data/lib/mongoid/errors/eager_load.rb +0 -23
  411. data/lib/mongoid/errors/invalid_value.rb +0 -17
  412. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
  413. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
  414. data/spec/mongoid/errors/eager_load_spec.rb +0 -31
@@ -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