mongoid 7.3.4 → 7.4.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 (884) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -17
  4. data/README.md +2 -2
  5. data/lib/config/locales/en.yml +21 -20
  6. data/lib/mongoid/association/accessors.rb +0 -27
  7. data/lib/mongoid/association/bindable.rb +0 -21
  8. data/lib/mongoid/association/builders.rb +0 -9
  9. data/lib/mongoid/association/constrainable.rb +0 -3
  10. data/lib/mongoid/association/depending.rb +0 -7
  11. data/lib/mongoid/association/eager_loadable.rb +0 -3
  12. data/lib/mongoid/association/embedded/batchable.rb +9 -39
  13. data/lib/mongoid/association/embedded/cyclic.rb +2 -11
  14. data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
  15. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
  16. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
  17. data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
  18. data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
  19. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
  20. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
  21. data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
  22. data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
  23. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
  24. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
  25. data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
  26. data/lib/mongoid/association/embedded.rb +0 -1
  27. data/lib/mongoid/association/macros.rb +6 -5
  28. data/lib/mongoid/association/many.rb +0 -17
  29. data/lib/mongoid/association/marshalable.rb +0 -5
  30. data/lib/mongoid/association/nested/many.rb +0 -11
  31. data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
  32. data/lib/mongoid/association/nested/one.rb +1 -16
  33. data/lib/mongoid/association/nested.rb +0 -3
  34. data/lib/mongoid/association/one.rb +1 -10
  35. data/lib/mongoid/association/options.rb +0 -33
  36. data/lib/mongoid/association/proxy.rb +0 -21
  37. data/lib/mongoid/association/referenced/auto_save.rb +0 -9
  38. data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
  39. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
  40. data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
  41. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
  42. data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
  43. data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
  44. data/lib/mongoid/association/referenced/eager.rb +3 -24
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
  50. data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
  51. data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
  52. data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
  53. data/lib/mongoid/association/referenced/has_many/enumerable.rb +8 -56
  54. data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
  55. data/lib/mongoid/association/referenced/has_many.rb +12 -39
  56. data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
  57. data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
  58. data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
  59. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
  60. data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
  61. data/lib/mongoid/association/referenced/has_one.rb +9 -32
  62. data/lib/mongoid/association/referenced/syncable.rb +0 -17
  63. data/lib/mongoid/association/referenced.rb +0 -1
  64. data/lib/mongoid/association/reflections.rb +0 -1
  65. data/lib/mongoid/association/relatable.rb +0 -61
  66. data/lib/mongoid/association.rb +0 -17
  67. data/lib/mongoid/atomic/modifiers.rb +4 -51
  68. data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
  69. data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
  70. data/lib/mongoid/atomic/paths/embedded.rb +0 -3
  71. data/lib/mongoid/atomic/paths/root.rb +0 -5
  72. data/lib/mongoid/atomic/paths.rb +0 -1
  73. data/lib/mongoid/atomic.rb +1 -42
  74. data/lib/mongoid/attributes/dynamic.rb +0 -17
  75. data/lib/mongoid/attributes/nested.rb +0 -5
  76. data/lib/mongoid/attributes/processing.rb +1 -18
  77. data/lib/mongoid/attributes/projector.rb +0 -1
  78. data/lib/mongoid/attributes/readonly.rb +0 -5
  79. data/lib/mongoid/attributes.rb +0 -33
  80. data/lib/mongoid/cacheable.rb +1 -6
  81. data/lib/mongoid/changeable.rb +3 -59
  82. data/lib/mongoid/clients/factory.rb +0 -7
  83. data/lib/mongoid/clients/options.rb +0 -5
  84. data/lib/mongoid/clients/sessions.rb +0 -7
  85. data/lib/mongoid/clients/storage_options.rb +0 -7
  86. data/lib/mongoid/clients/validators/storage.rb +0 -9
  87. data/lib/mongoid/clients/validators.rb +0 -1
  88. data/lib/mongoid/clients.rb +0 -9
  89. data/lib/mongoid/composable.rb +0 -7
  90. data/lib/mongoid/config/environment.rb +5 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +0 -25
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +39 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +20 -67
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +7 -3
  146. data/lib/mongoid/criteria/queryable.rb +0 -7
  147. data/lib/mongoid/criteria/scopable.rb +25 -19
  148. data/lib/mongoid/criteria.rb +0 -57
  149. data/lib/mongoid/document.rb +0 -51
  150. data/lib/mongoid/equality.rb +26 -10
  151. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  152. data/lib/mongoid/errors/callback.rb +0 -3
  153. data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
  154. data/lib/mongoid/errors/delete_restriction.rb +0 -3
  155. data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
  156. data/lib/mongoid/errors/document_not_found.rb +0 -9
  157. data/lib/mongoid/errors/eager_load.rb +0 -3
  158. data/lib/mongoid/errors/empty_config_file.rb +0 -1
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
  160. data/lib/mongoid/errors/invalid_collection.rb +0 -1
  161. data/lib/mongoid/errors/invalid_config_file.rb +0 -1
  162. data/lib/mongoid/errors/invalid_config_option.rb +0 -3
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
  164. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
  165. data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
  166. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
  167. data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
  168. data/lib/mongoid/errors/invalid_field.rb +0 -5
  169. data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
  170. data/lib/mongoid/errors/invalid_field_option.rb +0 -3
  171. data/lib/mongoid/errors/invalid_find.rb +0 -3
  172. data/lib/mongoid/errors/invalid_includes.rb +0 -3
  173. data/lib/mongoid/errors/invalid_index.rb +0 -3
  174. data/lib/mongoid/errors/invalid_options.rb +0 -3
  175. data/lib/mongoid/errors/invalid_path.rb +0 -3
  176. data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
  177. data/lib/mongoid/errors/invalid_query.rb +0 -1
  178. data/lib/mongoid/errors/invalid_relation.rb +0 -7
  179. data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
  180. data/lib/mongoid/errors/invalid_scope.rb +0 -3
  181. data/lib/mongoid/errors/invalid_session_use.rb +1 -6
  182. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
  183. data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
  184. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
  185. data/lib/mongoid/errors/invalid_time.rb +0 -3
  186. data/lib/mongoid/errors/invalid_value.rb +0 -1
  187. data/lib/mongoid/errors/inverse_not_found.rb +0 -3
  188. data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
  189. data/lib/mongoid/errors/mixed_relations.rb +0 -3
  190. data/lib/mongoid/errors/mongoid_error.rb +0 -9
  191. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
  192. data/lib/mongoid/errors/no_client_config.rb +0 -3
  193. data/lib/mongoid/errors/no_client_database.rb +0 -3
  194. data/lib/mongoid/errors/no_client_hosts.rb +0 -3
  195. data/lib/mongoid/errors/no_clients_config.rb +0 -3
  196. data/lib/mongoid/errors/no_default_client.rb +0 -3
  197. data/lib/mongoid/errors/no_environment.rb +0 -3
  198. data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
  199. data/lib/mongoid/errors/no_metadata.rb +0 -3
  200. data/lib/mongoid/errors/no_parent.rb +0 -3
  201. data/lib/mongoid/errors/readonly_attribute.rb +0 -3
  202. data/lib/mongoid/errors/readonly_document.rb +1 -6
  203. data/lib/mongoid/errors/scope_overwrite.rb +0 -1
  204. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
  205. data/lib/mongoid/errors/unknown_attribute.rb +0 -3
  206. data/lib/mongoid/errors/unknown_model.rb +0 -3
  207. data/lib/mongoid/errors/unsaved_document.rb +1 -2
  208. data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
  209. data/lib/mongoid/errors/validations.rb +0 -1
  210. data/lib/mongoid/errors.rb +0 -1
  211. data/lib/mongoid/evolvable.rb +0 -3
  212. data/lib/mongoid/extensions/array.rb +3 -29
  213. data/lib/mongoid/extensions/big_decimal.rb +0 -11
  214. data/lib/mongoid/extensions/boolean.rb +0 -3
  215. data/lib/mongoid/extensions/date.rb +0 -9
  216. data/lib/mongoid/extensions/date_time.rb +0 -9
  217. data/lib/mongoid/extensions/decimal128.rb +0 -5
  218. data/lib/mongoid/extensions/false_class.rb +1 -6
  219. data/lib/mongoid/extensions/float.rb +0 -7
  220. data/lib/mongoid/extensions/hash.rb +0 -27
  221. data/lib/mongoid/extensions/integer.rb +0 -9
  222. data/lib/mongoid/extensions/module.rb +0 -3
  223. data/lib/mongoid/extensions/nil_class.rb +0 -5
  224. data/lib/mongoid/extensions/object.rb +1 -40
  225. data/lib/mongoid/extensions/object_id.rb +0 -7
  226. data/lib/mongoid/extensions/range.rb +0 -11
  227. data/lib/mongoid/extensions/regexp.rb +0 -3
  228. data/lib/mongoid/extensions/set.rb +0 -7
  229. data/lib/mongoid/extensions/string.rb +1 -30
  230. data/lib/mongoid/extensions/symbol.rb +0 -7
  231. data/lib/mongoid/extensions/time.rb +0 -11
  232. data/lib/mongoid/extensions/time_with_zone.rb +13 -9
  233. data/lib/mongoid/extensions/true_class.rb +1 -6
  234. data/lib/mongoid/extensions.rb +15 -3
  235. data/lib/mongoid/factory.rb +1 -2
  236. data/lib/mongoid/fields/foreign_key.rb +0 -21
  237. data/lib/mongoid/fields/localized.rb +0 -11
  238. data/lib/mongoid/fields/standard.rb +0 -33
  239. data/lib/mongoid/fields/validators/macro.rb +0 -9
  240. data/lib/mongoid/fields/validators.rb +0 -1
  241. data/lib/mongoid/fields.rb +64 -57
  242. data/lib/mongoid/findable.rb +0 -5
  243. data/lib/mongoid/indexable/specification.rb +0 -15
  244. data/lib/mongoid/indexable/validators/options.rb +0 -7
  245. data/lib/mongoid/indexable.rb +1 -18
  246. data/lib/mongoid/inspectable.rb +1 -10
  247. data/lib/mongoid/interceptable.rb +0 -25
  248. data/lib/mongoid/loggable.rb +0 -9
  249. data/lib/mongoid/matchable.rb +0 -5
  250. data/lib/mongoid/matcher/eq_impl.rb +37 -2
  251. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
  252. data/lib/mongoid/persistable/creatable.rb +1 -20
  253. data/lib/mongoid/persistable/deletable.rb +0 -17
  254. data/lib/mongoid/persistable/destroyable.rb +0 -7
  255. data/lib/mongoid/persistable/incrementable.rb +0 -5
  256. data/lib/mongoid/persistable/logical.rb +0 -5
  257. data/lib/mongoid/persistable/poppable.rb +0 -5
  258. data/lib/mongoid/persistable/pullable.rb +0 -7
  259. data/lib/mongoid/persistable/pushable.rb +0 -7
  260. data/lib/mongoid/persistable/renamable.rb +0 -5
  261. data/lib/mongoid/persistable/savable.rb +0 -7
  262. data/lib/mongoid/persistable/settable.rb +0 -5
  263. data/lib/mongoid/persistable/unsettable.rb +0 -5
  264. data/lib/mongoid/persistable/updatable.rb +2 -17
  265. data/lib/mongoid/persistable/upsertable.rb +0 -7
  266. data/lib/mongoid/persistable.rb +0 -23
  267. data/lib/mongoid/persistence_context.rb +0 -27
  268. data/lib/mongoid/positional.rb +0 -5
  269. data/lib/mongoid/query_cache.rb +0 -33
  270. data/lib/mongoid/railtie.rb +0 -15
  271. data/lib/mongoid/railties/controller_runtime.rb +0 -1
  272. data/lib/mongoid/reloadable.rb +4 -16
  273. data/lib/mongoid/scopable.rb +6 -34
  274. data/lib/mongoid/selectable.rb +0 -9
  275. data/lib/mongoid/serializable.rb +0 -15
  276. data/lib/mongoid/shardable.rb +0 -7
  277. data/lib/mongoid/stateful.rb +0 -9
  278. data/lib/mongoid/stringified_symbol.rb +2 -3
  279. data/lib/mongoid/tasks/database.rb +0 -5
  280. data/lib/mongoid/threaded/lifecycle.rb +0 -21
  281. data/lib/mongoid/threaded.rb +0 -55
  282. data/lib/mongoid/timestamps/created/short.rb +0 -1
  283. data/lib/mongoid/timestamps/created.rb +0 -1
  284. data/lib/mongoid/timestamps/short.rb +0 -1
  285. data/lib/mongoid/timestamps/timeless.rb +0 -7
  286. data/lib/mongoid/timestamps/updated/short.rb +0 -1
  287. data/lib/mongoid/timestamps/updated.rb +0 -3
  288. data/lib/mongoid/timestamps.rb +0 -1
  289. data/lib/mongoid/touchable.rb +0 -7
  290. data/lib/mongoid/traversable.rb +64 -53
  291. data/lib/mongoid/validatable/associated.rb +0 -3
  292. data/lib/mongoid/validatable/format.rb +0 -1
  293. data/lib/mongoid/validatable/length.rb +0 -1
  294. data/lib/mongoid/validatable/localizable.rb +0 -3
  295. data/lib/mongoid/validatable/macros.rb +0 -7
  296. data/lib/mongoid/validatable/presence.rb +1 -8
  297. data/lib/mongoid/validatable/queryable.rb +0 -3
  298. data/lib/mongoid/validatable/uniqueness.rb +15 -30
  299. data/lib/mongoid/validatable.rb +1 -22
  300. data/lib/mongoid/version.rb +1 -2
  301. data/lib/mongoid.rb +0 -15
  302. data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
  303. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  304. data/lib/rails/generators/mongoid_generator.rb +0 -1
  305. data/lib/rails/mongoid.rb +0 -3
  306. data/spec/integration/app_spec.rb +0 -1
  307. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  308. data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
  309. data/spec/integration/associations/embedded_spec.rb +0 -1
  310. data/spec/integration/associations/embeds_many_spec.rb +0 -1
  311. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  312. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  314. data/spec/integration/associations/has_many_spec.rb +0 -1
  315. data/spec/integration/associations/has_one_spec.rb +0 -1
  316. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  317. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  319. data/spec/integration/associations/scope_option_spec.rb +101 -0
  320. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  321. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  322. data/spec/integration/callbacks_models.rb +12 -0
  323. data/spec/integration/callbacks_spec.rb +18 -6
  324. data/spec/integration/contextual/empty_spec.rb +0 -1
  325. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  326. data/spec/integration/criteria/date_field_spec.rb +0 -1
  327. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  328. data/spec/integration/criteria/logical_spec.rb +30 -0
  329. data/spec/integration/criteria/range_spec.rb +265 -0
  330. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  331. data/spec/integration/discriminator_key_spec.rb +0 -1
  332. data/spec/integration/discriminator_value_spec.rb +0 -1
  333. data/spec/integration/document_spec.rb +0 -1
  334. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  335. data/spec/integration/matcher_examples_spec.rb +0 -1
  336. data/spec/integration/matcher_operator_spec.rb +27 -3
  337. data/spec/integration/matcher_spec.rb +95 -1
  338. data/spec/integration/server_query_spec.rb +0 -1
  339. data/spec/integration/shardable_spec.rb +0 -1
  340. data/spec/integration/stringified_symbol_field_spec.rb +14 -1
  341. data/spec/lite_spec_helper.rb +8 -2
  342. data/spec/mongoid/association/accessors_spec.rb +44 -15
  343. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  344. data/spec/mongoid/association/builders_spec.rb +1 -2
  345. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  346. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  347. data/spec/mongoid/association/depending_spec.rb +12 -13
  348. data/spec/mongoid/association/eager_spec.rb +4 -5
  349. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  350. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  352. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  354. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  355. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
  358. data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
  359. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  360. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  364. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  365. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  368. data/spec/mongoid/association/macros_spec.rb +9 -10
  369. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  370. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  371. data/spec/mongoid/association/options_spec.rb +0 -1
  372. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  373. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  375. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  376. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  377. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -1
  378. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  379. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  387. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  388. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  389. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  390. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +59 -33
  391. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  392. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +221 -158
  393. data/spec/mongoid/association/referenced/has_many_models.rb +18 -1
  394. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  395. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  396. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  397. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  398. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  399. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  400. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  401. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  402. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  403. data/spec/mongoid/association/reflections_spec.rb +0 -1
  404. data/spec/mongoid/association/syncable_spec.rb +31 -32
  405. data/spec/mongoid/association_spec.rb +0 -1
  406. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  407. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  411. data/spec/mongoid/atomic_spec.rb +6 -7
  412. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  413. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  414. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  415. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  416. data/spec/mongoid/attributes_spec.rb +32 -33
  417. data/spec/mongoid/cacheable_spec.rb +1 -2
  418. data/spec/mongoid/changeable_spec.rb +35 -36
  419. data/spec/mongoid/clients/factory_spec.rb +0 -1
  420. data/spec/mongoid/clients/options_spec.rb +4 -5
  421. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  422. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  423. data/spec/mongoid/clients_spec.rb +6 -7
  424. data/spec/mongoid/composable_spec.rb +0 -1
  425. data/spec/mongoid/config/environment_spec.rb +0 -1
  426. data/spec/mongoid/config/options_spec.rb +0 -1
  427. data/spec/mongoid/config_spec.rb +105 -1
  428. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  429. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  430. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  431. data/spec/mongoid/contextual/atomic_spec.rb +46 -47
  432. data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
  433. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  434. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  435. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  436. data/spec/mongoid/contextual/none_spec.rb +7 -82
  437. data/spec/mongoid/copyable_spec.rb +12 -13
  438. data/spec/mongoid/copyable_spec_models.rb +0 -1
  439. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  440. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  441. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  443. data/spec/mongoid/criteria/options_spec.rb +0 -1
  444. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  445. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  446. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  460. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  470. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  471. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  473. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  474. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  476. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  477. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  480. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  481. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  482. data/spec/mongoid/criteria_spec.rb +546 -186
  483. data/spec/mongoid/document_fields_spec.rb +0 -1
  484. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  485. data/spec/mongoid/document_query_spec.rb +0 -1
  486. data/spec/mongoid/document_spec.rb +11 -33
  487. data/spec/mongoid/equality_spec.rb +142 -41
  488. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  489. data/spec/mongoid/errors/callback_spec.rb +0 -1
  490. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  491. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  493. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  494. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -1
  496. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  506. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  507. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  509. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  510. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  512. data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
  513. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  514. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  522. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  524. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  525. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  526. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  527. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  528. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  529. data/spec/mongoid/errors/validations_spec.rb +0 -1
  530. data/spec/mongoid/extensions/array_spec.rb +0 -1
  531. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  532. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  533. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  534. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  537. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  538. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  539. data/spec/mongoid/extensions/float_spec.rb +0 -1
  540. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  541. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  542. data/spec/mongoid/extensions/module_spec.rb +0 -1
  543. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  544. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_spec.rb +0 -1
  546. data/spec/mongoid/extensions/range_spec.rb +0 -1
  547. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  548. data/spec/mongoid/extensions/set_spec.rb +0 -1
  549. data/spec/mongoid/extensions/string_spec.rb +2 -3
  550. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  551. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/time_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  554. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  555. data/spec/mongoid/extensions_spec.rb +14 -3
  556. data/spec/mongoid/factory_spec.rb +1 -1
  557. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  558. data/spec/mongoid/fields/localized_spec.rb +0 -1
  559. data/spec/mongoid/fields/standard_spec.rb +0 -1
  560. data/spec/mongoid/fields_spec.rb +326 -31
  561. data/spec/mongoid/findable_spec.rb +21 -22
  562. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  563. data/spec/mongoid/indexable_spec.rb +0 -1
  564. data/spec/mongoid/inspectable_spec.rb +0 -1
  565. data/spec/mongoid/interceptable_spec.rb +102 -95
  566. data/spec/mongoid/loggable_spec.rb +0 -1
  567. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  568. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  569. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  570. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  571. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  573. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  574. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  575. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  577. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  578. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  579. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  580. data/spec/mongoid/persistable/updatable_spec.rb +41 -24
  581. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  582. data/spec/mongoid/persistable_spec.rb +1 -2
  583. data/spec/mongoid/persistence_context_spec.rb +0 -1
  584. data/spec/mongoid/positional_spec.rb +0 -1
  585. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  586. data/spec/mongoid/query_cache_spec.rb +32 -10
  587. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  588. data/spec/mongoid/reloadable_spec.rb +209 -23
  589. data/spec/mongoid/scopable_spec.rb +65 -22
  590. data/spec/mongoid/selectable_spec.rb +6 -7
  591. data/spec/mongoid/serializable_spec.rb +9 -10
  592. data/spec/mongoid/shardable_spec.rb +2 -3
  593. data/spec/mongoid/stateful_spec.rb +1 -2
  594. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  595. data/spec/mongoid/tasks/database_spec.rb +0 -1
  596. data/spec/mongoid/threaded_spec.rb +2 -3
  597. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  598. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  600. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  601. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  602. data/spec/mongoid/timestamps_spec.rb +6 -7
  603. data/spec/mongoid/touchable_spec.rb +15 -20
  604. data/spec/mongoid/touchable_spec_models.rb +0 -1
  605. data/spec/mongoid/traversable_spec.rb +65 -2
  606. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  607. data/spec/mongoid/validatable/format_spec.rb +0 -1
  608. data/spec/mongoid/validatable/length_spec.rb +0 -1
  609. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  610. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  611. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  612. data/spec/mongoid/validatable_spec.rb +2 -3
  613. data/spec/mongoid_spec.rb +0 -1
  614. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  615. data/spec/rails/mongoid_spec.rb +0 -1
  616. data/spec/shared/lib/mrss/cluster_config.rb +6 -1
  617. data/spec/shared/lib/mrss/constraints.rb +2 -1
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  620. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  621. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  622. data/spec/shared/share/Dockerfile.erb +22 -6
  623. data/spec/shared/shlib/distro.sh +2 -1
  624. data/spec/shared/shlib/server.sh +15 -3
  625. data/spec/shared/shlib/set_env.sh +6 -5
  626. data/spec/spec_helper.rb +12 -22
  627. data/spec/support/authorization.rb +0 -1
  628. data/spec/support/constraints.rb +0 -1
  629. data/spec/support/expectations.rb +0 -1
  630. data/spec/support/macros.rb +22 -1
  631. data/spec/support/models/account.rb +1 -2
  632. data/spec/support/models/acolyte.rb +0 -1
  633. data/spec/support/models/actor.rb +0 -1
  634. data/spec/support/models/actress.rb +0 -1
  635. data/spec/support/models/address.rb +0 -1
  636. data/spec/support/models/address_component.rb +0 -1
  637. data/spec/support/models/address_number.rb +0 -1
  638. data/spec/support/models/agency.rb +0 -1
  639. data/spec/support/models/agent.rb +0 -1
  640. data/spec/support/models/album.rb +0 -1
  641. data/spec/support/models/alert.rb +0 -1
  642. data/spec/support/models/animal.rb +0 -1
  643. data/spec/support/models/answer.rb +0 -1
  644. data/spec/support/models/appointment.rb +0 -1
  645. data/spec/support/models/armrest.rb +0 -1
  646. data/spec/support/models/array_field.rb +0 -1
  647. data/spec/support/models/article.rb +0 -1
  648. data/spec/support/models/artist.rb +2 -1
  649. data/spec/support/models/artwork.rb +0 -1
  650. data/spec/support/models/audible_sound.rb +3 -0
  651. data/spec/support/models/audio.rb +0 -1
  652. data/spec/support/models/augmentation.rb +0 -1
  653. data/spec/support/models/author.rb +0 -1
  654. data/spec/support/models/baby.rb +0 -1
  655. data/spec/support/models/band.rb +4 -1
  656. data/spec/support/models/bar.rb +0 -1
  657. data/spec/support/models/basic.rb +0 -1
  658. data/spec/support/models/bed.rb +0 -1
  659. data/spec/support/models/big_palette.rb +0 -1
  660. data/spec/support/models/birthday.rb +0 -1
  661. data/spec/support/models/bolt.rb +0 -1
  662. data/spec/support/models/bomb.rb +0 -1
  663. data/spec/support/models/book.rb +0 -1
  664. data/spec/support/models/breed.rb +0 -1
  665. data/spec/support/models/browser.rb +0 -1
  666. data/spec/support/models/building.rb +0 -1
  667. data/spec/support/models/building_address.rb +0 -1
  668. data/spec/support/models/bus.rb +0 -1
  669. data/spec/support/models/business.rb +0 -1
  670. data/spec/support/models/callback_test.rb +0 -1
  671. data/spec/support/models/canvas.rb +0 -1
  672. data/spec/support/models/car.rb +0 -1
  673. data/spec/support/models/cat.rb +0 -1
  674. data/spec/support/models/category.rb +0 -1
  675. data/spec/support/models/child.rb +0 -1
  676. data/spec/support/models/child_doc.rb +3 -4
  677. data/spec/support/models/church.rb +0 -1
  678. data/spec/support/models/circle.rb +0 -1
  679. data/spec/support/models/circuit.rb +0 -1
  680. data/spec/support/models/circus.rb +0 -1
  681. data/spec/support/models/code.rb +0 -1
  682. data/spec/support/models/coding/pull_request.rb +0 -1
  683. data/spec/support/models/coding.rb +0 -1
  684. data/spec/support/models/comment.rb +0 -1
  685. data/spec/support/models/company.rb +0 -1
  686. data/spec/support/models/consumption_period.rb +0 -1
  687. data/spec/support/models/contextable_item.rb +0 -1
  688. data/spec/support/models/contractor.rb +0 -1
  689. data/spec/support/models/cookie.rb +0 -1
  690. data/spec/support/models/country_code.rb +2 -1
  691. data/spec/support/models/courier_job.rb +0 -1
  692. data/spec/support/models/crate.rb +0 -1
  693. data/spec/support/models/customer.rb +0 -1
  694. data/spec/support/models/customer_address.rb +0 -1
  695. data/spec/support/models/deed.rb +0 -1
  696. data/spec/support/models/definition.rb +0 -1
  697. data/spec/support/models/delegating_patient.rb +0 -1
  698. data/spec/support/models/description.rb +0 -1
  699. data/spec/support/models/dictionary.rb +0 -1
  700. data/spec/support/models/division.rb +0 -1
  701. data/spec/support/models/doctor.rb +0 -1
  702. data/spec/support/models/dog.rb +0 -1
  703. data/spec/support/models/dokument.rb +0 -1
  704. data/spec/support/models/draft.rb +0 -1
  705. data/spec/support/models/dragon.rb +0 -1
  706. data/spec/support/models/driver.rb +0 -1
  707. data/spec/support/models/drug.rb +0 -1
  708. data/spec/support/models/dungeon.rb +0 -1
  709. data/spec/support/models/edit.rb +0 -1
  710. data/spec/support/models/email.rb +0 -1
  711. data/spec/support/models/employer.rb +0 -1
  712. data/spec/support/models/entry.rb +0 -1
  713. data/spec/support/models/eraser.rb +0 -1
  714. data/spec/support/models/even.rb +0 -1
  715. data/spec/support/models/event.rb +0 -1
  716. data/spec/support/models/exhibition.rb +0 -1
  717. data/spec/support/models/exhibitor.rb +0 -1
  718. data/spec/support/models/explosion.rb +0 -1
  719. data/spec/support/models/eye.rb +0 -1
  720. data/spec/support/models/eye_bowl.rb +0 -1
  721. data/spec/support/models/face.rb +0 -1
  722. data/spec/support/models/favorite.rb +0 -1
  723. data/spec/support/models/filesystem.rb +0 -1
  724. data/spec/support/models/fire_hydrant.rb +0 -1
  725. data/spec/support/models/firefox.rb +0 -1
  726. data/spec/support/models/fish.rb +0 -1
  727. data/spec/support/models/folder.rb +0 -1
  728. data/spec/support/models/folder_item.rb +0 -1
  729. data/spec/support/models/fruits.rb +0 -1
  730. data/spec/support/models/game.rb +0 -1
  731. data/spec/support/models/ghost.rb +0 -1
  732. data/spec/support/models/guitar.rb +0 -1
  733. data/spec/support/models/hole.rb +0 -1
  734. data/spec/support/models/home.rb +0 -1
  735. data/spec/support/models/house.rb +0 -1
  736. data/spec/support/models/html_writer.rb +0 -1
  737. data/spec/support/models/id_key.rb +0 -1
  738. data/spec/support/models/idnodef.rb +0 -1
  739. data/spec/support/models/image.rb +0 -1
  740. data/spec/support/models/implant.rb +0 -1
  741. data/spec/support/models/instrument.rb +0 -1
  742. data/spec/support/models/item.rb +0 -1
  743. data/spec/support/models/jar.rb +0 -1
  744. data/spec/support/models/kaleidoscope.rb +0 -1
  745. data/spec/support/models/kangaroo.rb +0 -1
  746. data/spec/support/models/label.rb +2 -2
  747. data/spec/support/models/language.rb +0 -1
  748. data/spec/support/models/lat_lng.rb +0 -1
  749. data/spec/support/models/league.rb +0 -1
  750. data/spec/support/models/learner.rb +0 -1
  751. data/spec/support/models/line_item.rb +0 -1
  752. data/spec/support/models/location.rb +0 -1
  753. data/spec/support/models/login.rb +0 -1
  754. data/spec/support/models/manufacturer.rb +0 -1
  755. data/spec/support/models/meat.rb +0 -1
  756. data/spec/support/models/membership.rb +0 -1
  757. data/spec/support/models/message.rb +0 -1
  758. data/spec/support/models/minim.rb +0 -1
  759. data/spec/support/models/mixed_drink.rb +0 -1
  760. data/spec/support/models/mop.rb +0 -1
  761. data/spec/support/models/movie.rb +0 -1
  762. data/spec/support/models/my_hash.rb +0 -1
  763. data/spec/support/models/name.rb +0 -1
  764. data/spec/support/models/name_only.rb +0 -1
  765. data/spec/support/models/node.rb +0 -1
  766. data/spec/support/models/note.rb +0 -1
  767. data/spec/support/models/nut.rb +0 -1
  768. data/spec/support/models/odd.rb +0 -1
  769. data/spec/support/models/order.rb +2 -1
  770. data/spec/support/models/ordered_post.rb +1 -2
  771. data/spec/support/models/ordered_preference.rb +0 -1
  772. data/spec/support/models/oscar.rb +0 -1
  773. data/spec/support/models/other_owner_object.rb +0 -1
  774. data/spec/support/models/override.rb +0 -1
  775. data/spec/support/models/ownable.rb +0 -1
  776. data/spec/support/models/owner.rb +0 -1
  777. data/spec/support/models/pack.rb +0 -1
  778. data/spec/support/models/page.rb +0 -1
  779. data/spec/support/models/page_question.rb +0 -1
  780. data/spec/support/models/palette.rb +0 -1
  781. data/spec/support/models/parent.rb +0 -1
  782. data/spec/support/models/parent_doc.rb +0 -1
  783. data/spec/support/models/passport.rb +5 -1
  784. data/spec/support/models/patient.rb +0 -1
  785. data/spec/support/models/pdf_writer.rb +0 -1
  786. data/spec/support/models/pencil.rb +0 -1
  787. data/spec/support/models/person.rb +1 -1
  788. data/spec/support/models/pet.rb +0 -1
  789. data/spec/support/models/pet_owner.rb +0 -1
  790. data/spec/support/models/phone.rb +2 -2
  791. data/spec/support/models/piano.rb +0 -1
  792. data/spec/support/models/pizza.rb +0 -1
  793. data/spec/support/models/player.rb +0 -1
  794. data/spec/support/models/post.rb +0 -1
  795. data/spec/support/models/post_genre.rb +0 -1
  796. data/spec/support/models/powerup.rb +0 -1
  797. data/spec/support/models/preference.rb +0 -1
  798. data/spec/support/models/princess.rb +0 -1
  799. data/spec/support/models/product.rb +0 -1
  800. data/spec/support/models/profile.rb +0 -1
  801. data/spec/support/models/pronunciation.rb +0 -1
  802. data/spec/support/models/pub.rb +0 -1
  803. data/spec/support/models/publication/encyclopedia.rb +0 -1
  804. data/spec/support/models/publication/review.rb +0 -1
  805. data/spec/support/models/publication.rb +0 -1
  806. data/spec/support/models/purchase.rb +0 -1
  807. data/spec/support/models/purchased_item.rb +10 -0
  808. data/spec/support/models/question.rb +0 -1
  809. data/spec/support/models/quiz.rb +0 -1
  810. data/spec/support/models/rating.rb +0 -1
  811. data/spec/support/models/record.rb +0 -1
  812. data/spec/support/models/registry.rb +0 -1
  813. data/spec/support/models/role.rb +0 -1
  814. data/spec/support/models/root_category.rb +0 -1
  815. data/spec/support/models/sandwich.rb +0 -1
  816. data/spec/support/models/scheduler.rb +0 -1
  817. data/spec/support/models/scribe.rb +0 -1
  818. data/spec/support/models/sealer.rb +0 -1
  819. data/spec/support/models/seat.rb +0 -1
  820. data/spec/support/models/seo.rb +0 -1
  821. data/spec/support/models/series.rb +0 -1
  822. data/spec/support/models/server.rb +0 -1
  823. data/spec/support/models/service.rb +0 -1
  824. data/spec/support/models/shape.rb +0 -1
  825. data/spec/support/models/shelf.rb +0 -1
  826. data/spec/support/models/shipment_address.rb +0 -1
  827. data/spec/support/models/shipping_container.rb +0 -1
  828. data/spec/support/models/shipping_pack.rb +0 -1
  829. data/spec/support/models/shirt.rb +0 -1
  830. data/spec/support/models/shop.rb +0 -1
  831. data/spec/support/models/short_agent.rb +0 -1
  832. data/spec/support/models/short_quiz.rb +0 -1
  833. data/spec/support/models/simple.rb +0 -1
  834. data/spec/support/models/slave.rb +0 -1
  835. data/spec/support/models/song.rb +0 -1
  836. data/spec/support/models/sound.rb +0 -1
  837. data/spec/support/models/spacer.rb +0 -1
  838. data/spec/support/models/square.rb +0 -1
  839. data/spec/support/models/staff.rb +0 -1
  840. data/spec/support/models/store_as_dup_test1.rb +0 -1
  841. data/spec/support/models/store_as_dup_test2.rb +0 -1
  842. data/spec/support/models/store_as_dup_test3.rb +0 -1
  843. data/spec/support/models/store_as_dup_test4.rb +0 -1
  844. data/spec/support/models/strategy.rb +0 -1
  845. data/spec/support/models/sub_item.rb +0 -1
  846. data/spec/support/models/subscription.rb +0 -1
  847. data/spec/support/models/survey.rb +0 -1
  848. data/spec/support/models/symptom.rb +0 -1
  849. data/spec/support/models/tag.rb +0 -1
  850. data/spec/support/models/target.rb +0 -1
  851. data/spec/support/models/template.rb +0 -1
  852. data/spec/support/models/thing.rb +0 -1
  853. data/spec/support/models/threadlocker.rb +0 -1
  854. data/spec/support/models/title.rb +0 -1
  855. data/spec/support/models/tool.rb +0 -1
  856. data/spec/support/models/topping.rb +0 -1
  857. data/spec/support/models/toy.rb +0 -1
  858. data/spec/support/models/track.rb +0 -1
  859. data/spec/support/models/translation.rb +0 -1
  860. data/spec/support/models/tree.rb +0 -1
  861. data/spec/support/models/truck.rb +0 -1
  862. data/spec/support/models/updatable.rb +0 -1
  863. data/spec/support/models/user.rb +0 -1
  864. data/spec/support/models/user_account.rb +0 -1
  865. data/spec/support/models/validation_callback.rb +0 -1
  866. data/spec/support/models/vehicle.rb +0 -1
  867. data/spec/support/models/version.rb +0 -1
  868. data/spec/support/models/vertex.rb +0 -1
  869. data/spec/support/models/vet_visit.rb +0 -1
  870. data/spec/support/models/video.rb +0 -1
  871. data/spec/support/models/video_game.rb +0 -1
  872. data/spec/support/models/washer.rb +0 -1
  873. data/spec/support/models/weapon.rb +0 -1
  874. data/spec/support/models/wiki_page.rb +0 -1
  875. data/spec/support/models/word.rb +0 -1
  876. data/spec/support/models/word_origin.rb +0 -1
  877. data/spec/support/models/writer.rb +0 -1
  878. data/spec/support/shared/time.rb +0 -1
  879. data/spec/support/spec_config.rb +3 -1
  880. data.tar.gz.sig +0 -0
  881. metadata +604 -587
  882. metadata.gz.sig +0 -0
  883. data/lib/support/ruby_version.rb +0 -29
  884. data/spec/support/session_registry.rb +0 -50
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -10,11 +9,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
10
9
  context "when provided a single field" do
11
10
 
12
11
  let!(:depeche) do
13
- Band.create(name: "Depeche Mode", likes: 1000, years: 1000)
12
+ Band.create!(name: "Depeche Mode", likes: 1000, years: 1000)
14
13
  end
15
14
 
16
15
  let!(:tool) do
17
- Band.create(name: "Tool", likes: 500, years: 800)
16
+ Band.create!(name: "Tool", likes: 500, years: 800)
18
17
  end
19
18
 
20
19
  let(:criteria) do
@@ -142,7 +141,6 @@ describe Mongoid::Contextual::Aggregable::Mongo do
142
141
  expect(aggregates["sum"]).to eq(1000)
143
142
  end
144
143
  end
145
-
146
144
  end
147
145
 
148
146
  context "when the field does not exist" do
@@ -167,18 +165,31 @@ describe Mongoid::Contextual::Aggregable::Mongo do
167
165
  expect(aggregates["min"]).to be_nil
168
166
  end
169
167
 
170
- it "returns a sum" do
171
- expect(aggregates["sum"]).to be_nil
168
+ context "when broken_aggregables feature flag is not set" do
169
+ config_override :broken_aggregables, false
170
+
171
+ it "returns a sum" do
172
+ expect(aggregates["sum"]).to eq 0
173
+ end
174
+ end
175
+
176
+ context "when broken_aggregables feature flag is set" do
177
+ config_override :broken_aggregables, true
178
+
179
+ it "returns nil" do
180
+ expect(aggregates["sum"]).to be_nil
181
+ end
172
182
  end
183
+
173
184
  end
174
185
 
175
186
  context "when the field sometimes exists" do
176
187
  let!(:oasis) do
177
- Band.create(name: "Oasis", likes: 50)
188
+ Band.create!(name: "Oasis", likes: 50)
178
189
  end
179
190
 
180
191
  let!(:radiohead) do
181
- Band.create(name: "Radiohead")
192
+ Band.create!(name: "Radiohead")
182
193
  end
183
194
 
184
195
  context "and the field doesn't exist on the last document" do
@@ -205,7 +216,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
205
216
 
206
217
  context "and the field doesn't exist on the before-last document" do
207
218
  let!(:u2) do
208
- Band.create(name: "U2", likes: 100)
219
+ Band.create!(name: "U2", likes: 100)
209
220
  end
210
221
 
211
222
  let(:criteria) do
@@ -240,8 +251,20 @@ describe Mongoid::Contextual::Aggregable::Mongo do
240
251
  context.aggregates(:non_existent)
241
252
  end
242
253
 
243
- it "returns nil" do
244
- expect(aggregates).to eq({ "count" => 0, "sum" => nil, "avg" => nil, "min" => nil, "max" => nil })
254
+ context "when broken_aggregables feature flag is not set" do
255
+ config_override :broken_aggregables, false
256
+
257
+ it "returns empty result" do
258
+ expect(aggregates).to eq({ "count" => 0, "sum" => 0, "avg" => nil, "min" => nil, "max" => nil })
259
+ end
260
+ end
261
+
262
+ context "when broken_aggregables feature flag is set" do
263
+ config_override :broken_aggregables, true
264
+
265
+ it "returns empty result" do
266
+ expect(aggregates).to eq({ "count" => 0, "sum" => nil, "avg" => nil, "min" => nil, "max" => nil })
267
+ end
245
268
  end
246
269
  end
247
270
  end
@@ -254,11 +277,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
254
277
  context "when there are matching documents" do
255
278
 
256
279
  let!(:depeche) do
257
- Band.create(name: "Depeche Mode", likes: 1000)
280
+ Band.create!(name: "Depeche Mode", likes: 1000)
258
281
  end
259
282
 
260
283
  let!(:tool) do
261
- Band.create(name: "Tool", likes: 500)
284
+ Band.create!(name: "Tool", likes: 500)
262
285
  end
263
286
 
264
287
  let(:criteria) do
@@ -281,7 +304,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
281
304
  context "when no documents match" do
282
305
 
283
306
  let!(:depeche) do
284
- Band.create(name: "Depeche Mode", likes: 1000)
307
+ Band.create!(name: "Depeche Mode", likes: 1000)
285
308
  end
286
309
 
287
310
  let(:criteria) do
@@ -308,7 +331,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
308
331
  context 'when the field does not exist in any document' do
309
332
 
310
333
  let!(:depeche) do
311
- Band.create(name: "Depeche Mode", likes: 1000)
334
+ Band.create!(name: "Depeche Mode", likes: 1000)
312
335
  end
313
336
 
314
337
  let(:criteria) do
@@ -331,11 +354,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
331
354
  context "when provided a single field" do
332
355
 
333
356
  let!(:depeche) do
334
- Band.create(name: "Depeche Mode", likes: 1000)
357
+ Band.create!(name: "Depeche Mode", likes: 1000)
335
358
  end
336
359
 
337
360
  let!(:tool) do
338
- Band.create(name: "Tool", likes: 500)
361
+ Band.create!(name: "Tool", likes: 500)
339
362
  end
340
363
 
341
364
  let(:criteria) do
@@ -396,11 +419,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
396
419
  context "when provided a single field" do
397
420
 
398
421
  let!(:depeche) do
399
- Band.create(name: "Depeche Mode", likes: 1000)
422
+ Band.create!(name: "Depeche Mode", likes: 1000)
400
423
  end
401
424
 
402
425
  let!(:tool) do
403
- Band.create(name: "Tool", likes: 500)
426
+ Band.create!(name: "Tool", likes: 500)
404
427
  end
405
428
 
406
429
  let(:criteria) do
@@ -461,11 +484,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
461
484
  context "when provided a single field" do
462
485
 
463
486
  let!(:depeche) do
464
- Band.create(name: "Depeche Mode", likes: 1000)
487
+ Band.create!(name: "Depeche Mode", likes: 1000)
465
488
  end
466
489
 
467
490
  let!(:tool) do
468
- Band.create(name: "Tool", likes: 500)
491
+ Band.create!(name: "Tool", likes: 500)
469
492
  end
470
493
 
471
494
  let(:criteria) do
@@ -518,4 +541,80 @@ describe Mongoid::Contextual::Aggregable::Mongo do
518
541
  end
519
542
  end
520
543
  end
544
+
545
+ describe '#pipeline' do
546
+ let(:context) { Mongoid::Contextual::Mongo.new(criteria) }
547
+ let(:pipeline) { context.send(:pipeline, :likes) }
548
+ subject(:stages) { pipeline.map {|s| s.keys.first } }
549
+
550
+ context "with sort" do
551
+
552
+ context "without limit or skip" do
553
+ let(:criteria) { Band.desc(:name) }
554
+
555
+ it 'should omit the $sort stage' do
556
+ expect(stages).to eq %w[$match $group]
557
+ end
558
+ end
559
+
560
+ context "with limit" do
561
+ let(:criteria) { Band.desc(:name).limit(1) }
562
+
563
+ it 'should include the $sort stage' do
564
+ expect(stages).to eq %w[$match $sort $limit $group]
565
+ end
566
+ end
567
+
568
+ context "with skip" do
569
+ let(:criteria) { Band.desc(:name).skip(1) }
570
+
571
+ it 'should include the $sort stage' do
572
+ expect(stages).to eq %w[$match $sort $skip $group]
573
+ end
574
+ end
575
+
576
+ context "with skip and skip" do
577
+ let(:criteria) { Band.desc(:name).limit(1).skip(1) }
578
+
579
+ it 'should include the $sort stage' do
580
+ expect(stages).to eq %w[$match $sort $skip $limit $group]
581
+ end
582
+ end
583
+ end
584
+
585
+ context "without sort" do
586
+
587
+ context "without limit or skip" do
588
+ let(:criteria) { Band.all }
589
+
590
+ it 'should omit the $sort stage' do
591
+ expect(stages).to eq %w[$match $group]
592
+ end
593
+ end
594
+
595
+ context "with limit" do
596
+ let(:criteria) { Band.limit(1) }
597
+
598
+ it 'should include the $sort stage' do
599
+ expect(stages).to eq %w[$match $limit $group]
600
+ end
601
+ end
602
+
603
+ context "with skip" do
604
+ let(:criteria) { Band.skip(1) }
605
+
606
+ it 'should include the $sort stage' do
607
+ expect(stages).to eq %w[$match $skip $group]
608
+ end
609
+ end
610
+
611
+ context "with skip and skip" do
612
+ let(:criteria) { Band.limit(1).skip(1) }
613
+
614
+ it 'should include the $sort stage' do
615
+ expect(stages).to eq %w[$match $skip $limit $group]
616
+ end
617
+ end
618
+ end
619
+ end
521
620
  end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe Mongoid::Contextual::Aggregable::None do
6
+
7
+ before do
8
+ Band.create!(name: "Depeche Mode")
9
+ end
10
+
11
+ let(:context) do
12
+ Mongoid::Contextual::None.new(Band.where(name: "Depeche Mode"))
13
+ end
14
+
15
+ describe "#aggregates" do
16
+ it "returns fixed values" do
17
+ expect(context.aggregates(:likes)).to eq("count" => 0, "avg" => nil, "max" => nil, "min" => nil, "sum" => 0)
18
+ end
19
+ end
20
+
21
+ describe "#sum" do
22
+ it "returns zero" do
23
+ expect(context.sum).to eq(0)
24
+ end
25
+
26
+ context "when broken_aggregables feature flag is not set" do
27
+ config_override :broken_aggregables, false
28
+
29
+ it "returns zero when arg given" do
30
+ expect(context.sum(:likes)).to eq(0)
31
+ end
32
+ end
33
+
34
+ context "when broken_aggregables feature flag is set" do
35
+ config_override :broken_aggregables, true
36
+
37
+ it "returns the input when arg given" do
38
+ expect(context.sum(:likes)).to eq(:likes)
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "#avg" do
44
+ it "returns nil" do
45
+ expect(context.avg(:likes)).to eq(nil)
46
+ end
47
+ end
48
+
49
+ describe "#min and #max" do
50
+ it "returns nil" do
51
+ expect(context.min).to eq(nil)
52
+ expect(context.max).to eq(nil)
53
+ end
54
+
55
+ it "returns nil when arg given" do
56
+ expect(context.min(:likes)).to eq(nil)
57
+ expect(context.max(:likes)).to eq(nil)
58
+ end
59
+ end
60
+ end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -8,15 +7,15 @@ describe Mongoid::Contextual::Atomic do
8
7
  describe "#add_to_set" do
9
8
 
10
9
  let!(:depeche_mode) do
11
- Band.create(members: [ "Dave" ])
10
+ Band.create!(members: [ "Dave" ])
12
11
  end
13
12
 
14
13
  let!(:new_order) do
15
- Band.create(members: [ "Peter" ])
14
+ Band.create!(members: [ "Peter" ])
16
15
  end
17
16
 
18
17
  let!(:smiths) do
19
- Band.create
18
+ Band.create!
20
19
  end
21
20
 
22
21
  context "when the criteria has no sorting" do
@@ -105,15 +104,15 @@ describe Mongoid::Contextual::Atomic do
105
104
  describe "#add_each_to_set" do
106
105
 
107
106
  let!(:depeche_mode) do
108
- Band.create(members: [ "Dave" ])
107
+ Band.create!(members: [ "Dave" ])
109
108
  end
110
109
 
111
110
  let!(:new_order) do
112
- Band.create(members: [ "Peter" ])
111
+ Band.create!(members: [ "Peter" ])
113
112
  end
114
113
 
115
114
  let!(:smiths) do
116
- Band.create
115
+ Band.create!
117
116
  end
118
117
 
119
118
  context "when the criteria has no sorting" do
@@ -202,7 +201,7 @@ describe Mongoid::Contextual::Atomic do
202
201
  describe "#bit" do
203
202
 
204
203
  let!(:depeche_mode) do
205
- Band.create(likes: 60)
204
+ Band.create!(likes: 60)
206
205
  end
207
206
 
208
207
  let(:criteria) do
@@ -250,7 +249,7 @@ describe Mongoid::Contextual::Atomic do
250
249
  min_server_version '3.4'
251
250
 
252
251
  let!(:depeche_mode) do
253
- Band.create(members: [ "Dave" ], likes: 60)
252
+ Band.create!(members: [ "Dave" ], likes: 60)
254
253
  end
255
254
 
256
255
  let(:criteria) do
@@ -274,15 +273,15 @@ describe Mongoid::Contextual::Atomic do
274
273
  describe "#inc" do
275
274
 
276
275
  let!(:depeche_mode) do
277
- Band.create(likes: 60)
276
+ Band.create!(likes: 60)
278
277
  end
279
278
 
280
279
  let!(:smiths) do
281
- Band.create
280
+ Band.create!
282
281
  end
283
282
 
284
283
  let!(:beatles) do
285
- Band.create(years: 2)
284
+ Band.create!(years: 2)
286
285
  end
287
286
 
288
287
  let(:criteria) do
@@ -330,7 +329,7 @@ describe Mongoid::Contextual::Atomic do
330
329
  min_server_version '3.4'
331
330
 
332
331
  let!(:depeche_mode) do
333
- Band.create(members: [ "Dave" ])
332
+ Band.create!(members: [ "Dave" ])
334
333
  end
335
334
 
336
335
  let(:criteria) do
@@ -354,11 +353,11 @@ describe Mongoid::Contextual::Atomic do
354
353
  describe "#pop" do
355
354
 
356
355
  let!(:depeche_mode) do
357
- Band.create(members: [ "Dave", "Martin" ])
356
+ Band.create!(members: [ "Dave", "Martin" ])
358
357
  end
359
358
 
360
359
  let!(:smiths) do
361
- Band.create
360
+ Band.create!
362
361
  end
363
362
 
364
363
  let(:criteria) do
@@ -403,7 +402,7 @@ describe Mongoid::Contextual::Atomic do
403
402
  min_server_version '3.4'
404
403
 
405
404
  let!(:depeche_mode) do
406
- Band.create(members: [ "Dave" ])
405
+ Band.create!(members: [ "Dave" ])
407
406
  end
408
407
 
409
408
  let(:criteria) do
@@ -427,11 +426,11 @@ describe Mongoid::Contextual::Atomic do
427
426
  describe "#pull" do
428
427
 
429
428
  let!(:depeche_mode) do
430
- Band.create(members: [ "Dave", "Alan" ])
429
+ Band.create!(members: [ "Dave", "Alan" ])
431
430
  end
432
431
 
433
432
  let!(:smiths) do
434
- Band.create
433
+ Band.create!
435
434
  end
436
435
 
437
436
  let(:criteria) do
@@ -458,7 +457,7 @@ describe Mongoid::Contextual::Atomic do
458
457
  min_server_version '3.4'
459
458
 
460
459
  let!(:depeche_mode) do
461
- Band.create(members: [ "Dave" ])
460
+ Band.create!(members: [ "Dave" ])
462
461
  end
463
462
 
464
463
  let(:criteria) do
@@ -484,11 +483,11 @@ describe Mongoid::Contextual::Atomic do
484
483
  context 'when the criteria does not have a collation' do
485
484
 
486
485
  let!(:depeche_mode) do
487
- Band.create(members: [ "Dave", "Alan", "Fletch" ])
486
+ Band.create!(members: [ "Dave", "Alan", "Fletch" ])
488
487
  end
489
488
 
490
489
  let!(:smiths) do
491
- Band.create
490
+ Band.create!
492
491
  end
493
492
 
494
493
  let(:criteria) do
@@ -516,7 +515,7 @@ describe Mongoid::Contextual::Atomic do
516
515
  min_server_version '3.4'
517
516
 
518
517
  let!(:depeche_mode) do
519
- Band.create(members: [ "Dave", "Alan", "Fletch" ])
518
+ Band.create!(members: [ "Dave", "Alan", "Fletch" ])
520
519
  end
521
520
 
522
521
  let(:criteria) do
@@ -542,11 +541,11 @@ describe Mongoid::Contextual::Atomic do
542
541
  context 'when the criteria does not have a collation' do
543
542
 
544
543
  let!(:depeche_mode) do
545
- Band.create(members: [ "Dave" ])
544
+ Band.create!(members: [ "Dave" ])
546
545
  end
547
546
 
548
547
  let!(:smiths) do
549
- Band.create
548
+ Band.create!
550
549
  end
551
550
 
552
551
  let(:criteria) do
@@ -574,11 +573,11 @@ describe Mongoid::Contextual::Atomic do
574
573
  min_server_version '3.4'
575
574
 
576
575
  let!(:depeche_mode) do
577
- Band.create(members: [ "Dave" ])
576
+ Band.create!(members: [ "Dave" ])
578
577
  end
579
578
 
580
579
  let!(:smiths) do
581
- Band.create
580
+ Band.create!
582
581
  end
583
582
 
584
583
  let(:criteria) do
@@ -608,11 +607,11 @@ describe Mongoid::Contextual::Atomic do
608
607
  context 'when the criteria does not have a collation' do
609
608
 
610
609
  let!(:depeche_mode) do
611
- Band.create(members: [ "Dave" ])
610
+ Band.create!(members: [ "Dave" ])
612
611
  end
613
612
 
614
613
  let!(:smiths) do
615
- Band.create
614
+ Band.create!
616
615
  end
617
616
 
618
617
  let(:criteria) do
@@ -640,11 +639,11 @@ describe Mongoid::Contextual::Atomic do
640
639
  min_server_version '3.4'
641
640
 
642
641
  let!(:depeche_mode) do
643
- Band.create(members: [ "Dave" ])
642
+ Band.create!(members: [ "Dave" ])
644
643
  end
645
644
 
646
645
  let!(:smiths) do
647
- Band.create
646
+ Band.create!
648
647
  end
649
648
 
650
649
  let(:criteria) do
@@ -670,11 +669,11 @@ describe Mongoid::Contextual::Atomic do
670
669
  context 'when the criteria does not have a collation' do
671
670
 
672
671
  let!(:depeche_mode) do
673
- Band.create(members: [ "Dave" ])
672
+ Band.create!(members: [ "Dave" ])
674
673
  end
675
674
 
676
675
  let!(:smiths) do
677
- Band.create
676
+ Band.create!
678
677
  end
679
678
 
680
679
  let(:criteria) do
@@ -686,15 +685,15 @@ describe Mongoid::Contextual::Atomic do
686
685
  end
687
686
 
688
687
  before do
689
- context.rename(members: :artists)
688
+ context.rename(members: :musicians)
690
689
  end
691
690
 
692
691
  it "renames existing fields" do
693
- expect(depeche_mode.reload.artists).to eq([ "Dave" ])
692
+ expect(depeche_mode.reload.musicians).to eq([ "Dave" ])
694
693
  end
695
694
 
696
695
  it "does not rename non existent fields" do
697
- expect(smiths.reload).to_not respond_to(:artists)
696
+ expect(smiths.reload).to_not respond_to(:musicians)
698
697
  end
699
698
  end
700
699
 
@@ -702,11 +701,11 @@ describe Mongoid::Contextual::Atomic do
702
701
  min_server_version '3.4'
703
702
 
704
703
  let!(:depeche_mode) do
705
- Band.create(members: [ "Dave" ])
704
+ Band.create!(members: [ "Dave" ])
706
705
  end
707
706
 
708
707
  let!(:smiths) do
709
- Band.create
708
+ Band.create!
710
709
  end
711
710
 
712
711
  let(:criteria) do
@@ -718,15 +717,15 @@ describe Mongoid::Contextual::Atomic do
718
717
  end
719
718
 
720
719
  before do
721
- context.rename(members: :artists)
720
+ context.rename(members: :musicians)
722
721
  end
723
722
 
724
723
  it "renames existing fields" do
725
- expect(depeche_mode.reload.artists).to eq([ "Dave" ])
724
+ expect(depeche_mode.reload.musicians).to eq([ "Dave" ])
726
725
  end
727
726
 
728
727
  it "does not rename non existent fields" do
729
- expect(smiths.reload).to_not respond_to(:artists)
728
+ expect(smiths.reload).to_not respond_to(:musicians)
730
729
  end
731
730
  end
732
731
  end
@@ -734,11 +733,11 @@ describe Mongoid::Contextual::Atomic do
734
733
  describe "#set" do
735
734
 
736
735
  let!(:depeche_mode) do
737
- Band.create(name: "Depeche Mode")
736
+ Band.create!(name: "Depeche Mode")
738
737
  end
739
738
 
740
739
  let!(:smiths) do
741
- Band.create
740
+ Band.create!
742
741
  end
743
742
 
744
743
  let(:criteria) do
@@ -780,11 +779,11 @@ describe Mongoid::Contextual::Atomic do
780
779
  context "when unsetting a single field" do
781
780
 
782
781
  let!(:depeche_mode) do
783
- Band.create(name: "Depeche Mode", years: 10)
782
+ Band.create!(name: "Depeche Mode", years: 10)
784
783
  end
785
784
 
786
785
  let!(:new_order) do
787
- Band.create(name: "New Order", years: 10)
786
+ Band.create!(name: "New Order", years: 10)
788
787
  end
789
788
 
790
789
  let(:criteria) do
@@ -830,7 +829,7 @@ describe Mongoid::Contextual::Atomic do
830
829
  context "when unsetting multiple fields" do
831
830
 
832
831
  let!(:new_order) do
833
- Band.create(name: "New Order", genres: %w[electro dub], years: 10,
832
+ Band.create!(name: "New Order", genres: %w[electro dub], years: 10,
834
833
  likes: 200, rating: 4.3, origin: 'Space')
835
834
  end
836
835
 
@@ -912,11 +911,11 @@ describe Mongoid::Contextual::Atomic do
912
911
  min_server_version '3.4'
913
912
 
914
913
  let!(:depeche_mode) do
915
- Band.create(name: "Depeche Mode", years: 10)
914
+ Band.create!(name: "Depeche Mode", years: 10)
916
915
  end
917
916
 
918
917
  let!(:new_order) do
919
- Band.create(name: "New Order", years: 10)
918
+ Band.create!(name: "New Order", years: 10)
920
919
  end
921
920
 
922
921
  let(:criteria) do