mongoid 7.3.2 → 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 (886) 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 +30 -16
  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 +11 -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 +11 -63
  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 +2 -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 +27 -44
  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 +13 -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 +7 -27
  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 +42 -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 +22 -69
  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 +11 -7
  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 +3 -53
  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 +25 -0
  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 +25 -0
  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 +2 -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 +3 -28
  268. data/lib/mongoid/positional.rb +0 -5
  269. data/lib/mongoid/query_cache.rb +11 -34
  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 +1 -6
  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 +10 -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 +139 -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 +141 -0
  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 +16 -3
  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 +20 -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 +303 -125
  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 +227 -164
  393. data/spec/mongoid/association/referenced/has_many_models.rb +35 -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 +9 -4
  420. data/spec/mongoid/clients/options_spec.rb +15 -10
  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 +86 -9
  426. data/spec/mongoid/config/options_spec.rb +0 -1
  427. data/spec/mongoid/config_spec.rb +194 -17
  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 +109 -71
  432. data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
  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 +11 -12
  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 +32 -34
  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 +31 -0
  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 +43 -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 +56 -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 +33 -20
  604. data/spec/mongoid/touchable_spec_models.rb +2 -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 +23 -5
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
  620. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  621. data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
  622. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  623. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  624. data/spec/shared/share/Dockerfile.erb +27 -10
  625. data/spec/shared/shlib/distro.sh +2 -1
  626. data/spec/shared/shlib/server.sh +85 -23
  627. data/spec/shared/shlib/set_env.sh +6 -5
  628. data/spec/spec_helper.rb +12 -22
  629. data/spec/support/authorization.rb +0 -1
  630. data/spec/support/constraints.rb +0 -1
  631. data/spec/support/expectations.rb +0 -1
  632. data/spec/support/macros.rb +22 -1
  633. data/spec/support/models/account.rb +1 -2
  634. data/spec/support/models/acolyte.rb +0 -1
  635. data/spec/support/models/actor.rb +0 -1
  636. data/spec/support/models/actress.rb +0 -1
  637. data/spec/support/models/address.rb +0 -1
  638. data/spec/support/models/address_component.rb +0 -1
  639. data/spec/support/models/address_number.rb +0 -1
  640. data/spec/support/models/agency.rb +0 -1
  641. data/spec/support/models/agent.rb +0 -1
  642. data/spec/support/models/album.rb +0 -1
  643. data/spec/support/models/alert.rb +0 -1
  644. data/spec/support/models/animal.rb +0 -1
  645. data/spec/support/models/answer.rb +0 -1
  646. data/spec/support/models/appointment.rb +0 -1
  647. data/spec/support/models/armrest.rb +0 -1
  648. data/spec/support/models/array_field.rb +0 -1
  649. data/spec/support/models/article.rb +0 -1
  650. data/spec/support/models/artist.rb +2 -1
  651. data/spec/support/models/artwork.rb +0 -1
  652. data/spec/support/models/audible_sound.rb +3 -0
  653. data/spec/support/models/audio.rb +0 -1
  654. data/spec/support/models/augmentation.rb +0 -1
  655. data/spec/support/models/author.rb +0 -1
  656. data/spec/support/models/baby.rb +0 -1
  657. data/spec/support/models/band.rb +4 -1
  658. data/spec/support/models/bar.rb +0 -1
  659. data/spec/support/models/basic.rb +0 -1
  660. data/spec/support/models/bed.rb +0 -1
  661. data/spec/support/models/big_palette.rb +0 -1
  662. data/spec/support/models/birthday.rb +0 -1
  663. data/spec/support/models/bolt.rb +0 -1
  664. data/spec/support/models/bomb.rb +0 -1
  665. data/spec/support/models/book.rb +0 -1
  666. data/spec/support/models/breed.rb +0 -1
  667. data/spec/support/models/browser.rb +0 -1
  668. data/spec/support/models/building.rb +0 -1
  669. data/spec/support/models/building_address.rb +0 -1
  670. data/spec/support/models/bus.rb +0 -1
  671. data/spec/support/models/business.rb +0 -1
  672. data/spec/support/models/callback_test.rb +0 -1
  673. data/spec/support/models/canvas.rb +0 -1
  674. data/spec/support/models/car.rb +0 -1
  675. data/spec/support/models/cat.rb +0 -1
  676. data/spec/support/models/category.rb +0 -1
  677. data/spec/support/models/child.rb +0 -1
  678. data/spec/support/models/child_doc.rb +3 -4
  679. data/spec/support/models/church.rb +0 -1
  680. data/spec/support/models/circle.rb +0 -1
  681. data/spec/support/models/circuit.rb +0 -1
  682. data/spec/support/models/circus.rb +0 -1
  683. data/spec/support/models/code.rb +0 -1
  684. data/spec/support/models/coding/pull_request.rb +0 -1
  685. data/spec/support/models/coding.rb +0 -1
  686. data/spec/support/models/comment.rb +0 -1
  687. data/spec/support/models/company.rb +0 -1
  688. data/spec/support/models/consumption_period.rb +0 -1
  689. data/spec/support/models/contextable_item.rb +0 -1
  690. data/spec/support/models/contractor.rb +0 -1
  691. data/spec/support/models/cookie.rb +0 -1
  692. data/spec/support/models/country_code.rb +2 -1
  693. data/spec/support/models/courier_job.rb +0 -1
  694. data/spec/support/models/crate.rb +0 -1
  695. data/spec/support/models/customer.rb +0 -1
  696. data/spec/support/models/customer_address.rb +0 -1
  697. data/spec/support/models/deed.rb +0 -1
  698. data/spec/support/models/definition.rb +0 -1
  699. data/spec/support/models/delegating_patient.rb +0 -1
  700. data/spec/support/models/description.rb +0 -1
  701. data/spec/support/models/dictionary.rb +0 -1
  702. data/spec/support/models/division.rb +0 -1
  703. data/spec/support/models/doctor.rb +0 -1
  704. data/spec/support/models/dog.rb +0 -1
  705. data/spec/support/models/dokument.rb +0 -1
  706. data/spec/support/models/draft.rb +0 -1
  707. data/spec/support/models/dragon.rb +0 -1
  708. data/spec/support/models/driver.rb +0 -1
  709. data/spec/support/models/drug.rb +0 -1
  710. data/spec/support/models/dungeon.rb +0 -1
  711. data/spec/support/models/edit.rb +0 -1
  712. data/spec/support/models/email.rb +0 -1
  713. data/spec/support/models/employer.rb +0 -1
  714. data/spec/support/models/entry.rb +0 -1
  715. data/spec/support/models/eraser.rb +0 -1
  716. data/spec/support/models/even.rb +0 -1
  717. data/spec/support/models/event.rb +0 -1
  718. data/spec/support/models/exhibition.rb +0 -1
  719. data/spec/support/models/exhibitor.rb +0 -1
  720. data/spec/support/models/explosion.rb +0 -1
  721. data/spec/support/models/eye.rb +0 -1
  722. data/spec/support/models/eye_bowl.rb +0 -1
  723. data/spec/support/models/face.rb +0 -1
  724. data/spec/support/models/favorite.rb +0 -1
  725. data/spec/support/models/filesystem.rb +0 -1
  726. data/spec/support/models/fire_hydrant.rb +0 -1
  727. data/spec/support/models/firefox.rb +0 -1
  728. data/spec/support/models/fish.rb +0 -1
  729. data/spec/support/models/folder.rb +0 -1
  730. data/spec/support/models/folder_item.rb +0 -1
  731. data/spec/support/models/fruits.rb +0 -1
  732. data/spec/support/models/game.rb +0 -1
  733. data/spec/support/models/ghost.rb +0 -1
  734. data/spec/support/models/guitar.rb +0 -1
  735. data/spec/support/models/hole.rb +0 -1
  736. data/spec/support/models/home.rb +0 -1
  737. data/spec/support/models/house.rb +0 -1
  738. data/spec/support/models/html_writer.rb +0 -1
  739. data/spec/support/models/id_key.rb +0 -1
  740. data/spec/support/models/idnodef.rb +0 -1
  741. data/spec/support/models/image.rb +0 -1
  742. data/spec/support/models/implant.rb +0 -1
  743. data/spec/support/models/instrument.rb +0 -1
  744. data/spec/support/models/item.rb +0 -1
  745. data/spec/support/models/jar.rb +0 -1
  746. data/spec/support/models/kaleidoscope.rb +0 -1
  747. data/spec/support/models/kangaroo.rb +0 -1
  748. data/spec/support/models/label.rb +2 -2
  749. data/spec/support/models/language.rb +0 -1
  750. data/spec/support/models/lat_lng.rb +0 -1
  751. data/spec/support/models/league.rb +0 -1
  752. data/spec/support/models/learner.rb +0 -1
  753. data/spec/support/models/line_item.rb +0 -1
  754. data/spec/support/models/location.rb +0 -1
  755. data/spec/support/models/login.rb +0 -1
  756. data/spec/support/models/manufacturer.rb +0 -1
  757. data/spec/support/models/meat.rb +0 -1
  758. data/spec/support/models/membership.rb +0 -1
  759. data/spec/support/models/message.rb +0 -1
  760. data/spec/support/models/minim.rb +0 -1
  761. data/spec/support/models/mixed_drink.rb +0 -1
  762. data/spec/support/models/mop.rb +0 -1
  763. data/spec/support/models/movie.rb +0 -1
  764. data/spec/support/models/my_hash.rb +0 -1
  765. data/spec/support/models/name.rb +0 -1
  766. data/spec/support/models/name_only.rb +0 -1
  767. data/spec/support/models/node.rb +0 -1
  768. data/spec/support/models/note.rb +0 -1
  769. data/spec/support/models/nut.rb +0 -1
  770. data/spec/support/models/odd.rb +0 -1
  771. data/spec/support/models/order.rb +2 -1
  772. data/spec/support/models/ordered_post.rb +1 -2
  773. data/spec/support/models/ordered_preference.rb +0 -1
  774. data/spec/support/models/oscar.rb +0 -1
  775. data/spec/support/models/other_owner_object.rb +0 -1
  776. data/spec/support/models/override.rb +0 -1
  777. data/spec/support/models/ownable.rb +0 -1
  778. data/spec/support/models/owner.rb +0 -1
  779. data/spec/support/models/pack.rb +0 -1
  780. data/spec/support/models/page.rb +0 -1
  781. data/spec/support/models/page_question.rb +0 -1
  782. data/spec/support/models/palette.rb +0 -1
  783. data/spec/support/models/parent.rb +0 -1
  784. data/spec/support/models/parent_doc.rb +0 -1
  785. data/spec/support/models/passport.rb +5 -1
  786. data/spec/support/models/patient.rb +0 -1
  787. data/spec/support/models/pdf_writer.rb +0 -1
  788. data/spec/support/models/pencil.rb +0 -1
  789. data/spec/support/models/person.rb +1 -1
  790. data/spec/support/models/pet.rb +0 -1
  791. data/spec/support/models/pet_owner.rb +0 -1
  792. data/spec/support/models/phone.rb +2 -2
  793. data/spec/support/models/piano.rb +0 -1
  794. data/spec/support/models/pizza.rb +0 -1
  795. data/spec/support/models/player.rb +0 -1
  796. data/spec/support/models/post.rb +0 -1
  797. data/spec/support/models/post_genre.rb +0 -1
  798. data/spec/support/models/powerup.rb +0 -1
  799. data/spec/support/models/preference.rb +0 -1
  800. data/spec/support/models/princess.rb +0 -1
  801. data/spec/support/models/product.rb +0 -1
  802. data/spec/support/models/profile.rb +0 -1
  803. data/spec/support/models/pronunciation.rb +0 -1
  804. data/spec/support/models/pub.rb +0 -1
  805. data/spec/support/models/publication/encyclopedia.rb +0 -1
  806. data/spec/support/models/publication/review.rb +0 -1
  807. data/spec/support/models/publication.rb +0 -1
  808. data/spec/support/models/purchase.rb +0 -1
  809. data/spec/support/models/purchased_item.rb +10 -0
  810. data/spec/support/models/question.rb +0 -1
  811. data/spec/support/models/quiz.rb +0 -1
  812. data/spec/support/models/rating.rb +0 -1
  813. data/spec/support/models/record.rb +0 -1
  814. data/spec/support/models/registry.rb +0 -1
  815. data/spec/support/models/role.rb +0 -1
  816. data/spec/support/models/root_category.rb +0 -1
  817. data/spec/support/models/sandwich.rb +0 -1
  818. data/spec/support/models/scheduler.rb +0 -1
  819. data/spec/support/models/scribe.rb +0 -1
  820. data/spec/support/models/sealer.rb +0 -1
  821. data/spec/support/models/seat.rb +0 -1
  822. data/spec/support/models/seo.rb +0 -1
  823. data/spec/support/models/series.rb +0 -1
  824. data/spec/support/models/server.rb +0 -1
  825. data/spec/support/models/service.rb +0 -1
  826. data/spec/support/models/shape.rb +0 -1
  827. data/spec/support/models/shelf.rb +0 -1
  828. data/spec/support/models/shipment_address.rb +0 -1
  829. data/spec/support/models/shipping_container.rb +0 -1
  830. data/spec/support/models/shipping_pack.rb +0 -1
  831. data/spec/support/models/shirt.rb +0 -1
  832. data/spec/support/models/shop.rb +0 -1
  833. data/spec/support/models/short_agent.rb +0 -1
  834. data/spec/support/models/short_quiz.rb +0 -1
  835. data/spec/support/models/simple.rb +0 -1
  836. data/spec/support/models/slave.rb +0 -1
  837. data/spec/support/models/song.rb +0 -1
  838. data/spec/support/models/sound.rb +0 -1
  839. data/spec/support/models/spacer.rb +0 -1
  840. data/spec/support/models/square.rb +0 -1
  841. data/spec/support/models/staff.rb +0 -1
  842. data/spec/support/models/store_as_dup_test1.rb +0 -1
  843. data/spec/support/models/store_as_dup_test2.rb +0 -1
  844. data/spec/support/models/store_as_dup_test3.rb +0 -1
  845. data/spec/support/models/store_as_dup_test4.rb +0 -1
  846. data/spec/support/models/strategy.rb +0 -1
  847. data/spec/support/models/sub_item.rb +0 -1
  848. data/spec/support/models/subscription.rb +0 -1
  849. data/spec/support/models/survey.rb +0 -1
  850. data/spec/support/models/symptom.rb +0 -1
  851. data/spec/support/models/tag.rb +0 -1
  852. data/spec/support/models/target.rb +0 -1
  853. data/spec/support/models/template.rb +0 -1
  854. data/spec/support/models/thing.rb +0 -1
  855. data/spec/support/models/threadlocker.rb +0 -1
  856. data/spec/support/models/title.rb +0 -1
  857. data/spec/support/models/tool.rb +0 -1
  858. data/spec/support/models/topping.rb +0 -1
  859. data/spec/support/models/toy.rb +0 -1
  860. data/spec/support/models/track.rb +0 -1
  861. data/spec/support/models/translation.rb +0 -1
  862. data/spec/support/models/tree.rb +0 -1
  863. data/spec/support/models/truck.rb +0 -1
  864. data/spec/support/models/updatable.rb +0 -1
  865. data/spec/support/models/user.rb +0 -1
  866. data/spec/support/models/user_account.rb +0 -1
  867. data/spec/support/models/validation_callback.rb +0 -1
  868. data/spec/support/models/vehicle.rb +0 -1
  869. data/spec/support/models/version.rb +0 -1
  870. data/spec/support/models/vertex.rb +0 -1
  871. data/spec/support/models/vet_visit.rb +0 -1
  872. data/spec/support/models/video.rb +0 -1
  873. data/spec/support/models/video_game.rb +0 -1
  874. data/spec/support/models/washer.rb +0 -1
  875. data/spec/support/models/weapon.rb +0 -1
  876. data/spec/support/models/wiki_page.rb +0 -1
  877. data/spec/support/models/word.rb +0 -1
  878. data/spec/support/models/word_origin.rb +0 -1
  879. data/spec/support/models/writer.rb +0 -1
  880. data/spec/support/shared/time.rb +0 -1
  881. data/spec/support/spec_config.rb +3 -1
  882. data.tar.gz.sig +0 -0
  883. metadata +642 -610
  884. metadata.gz.sig +0 -0
  885. data/lib/support/ruby_version.rb +0 -29
  886. 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
 
@@ -21,10 +20,10 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
21
20
 
22
21
  describe "##{method}" do
23
22
 
24
- context "when providing the base class in child contructor" do
23
+ context "when providing the base class in child constructor" do
25
24
 
26
25
  let(:person) do
27
- Person.create
26
+ Person.create!
28
27
  end
29
28
 
30
29
  let!(:post) do
@@ -86,7 +85,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
86
85
  context "when the child is persisted" do
87
86
 
88
87
  let(:post) do
89
- Post.create
88
+ Post.create!
90
89
  end
91
90
 
92
91
  before do
@@ -116,8 +115,8 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
116
115
  context "when subsequently saving the parent" do
117
116
 
118
117
  before do
119
- person.save
120
- post.save
118
+ person.save!
119
+ post.save!
121
120
  end
122
121
 
123
122
  it "returns the correct count of the association" do
@@ -130,11 +129,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
130
129
  context "when appending in a parent create block" do
131
130
 
132
131
  let!(:post) do
133
- Post.create(title: "testing")
132
+ Post.create!(title: "testing")
134
133
  end
135
134
 
136
135
  let!(:person) do
137
- Person.create do |doc|
136
+ Person.create! do |doc|
138
137
  doc.posts << post
139
138
  end
140
139
  end
@@ -163,7 +162,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
163
162
  context "when the parent is not a new record" do
164
163
 
165
164
  let(:person) do
166
- Person.create
165
+ Person.create!
167
166
  end
168
167
 
169
168
  let(:post) do
@@ -206,13 +205,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
206
205
  context "when the related item has embedded associations" do
207
206
 
208
207
  let!(:user) do
209
- User.create
208
+ User.create!
210
209
  end
211
210
 
212
211
  before do
213
- p = Post.create(roles: [ Role.create ])
212
+ p = Post.create!(roles: [ Role.create! ])
214
213
  user.posts = [ p ]
215
- user.save
214
+ user.save!
216
215
  end
217
216
 
218
217
  it "add the document to the target" do
@@ -280,7 +279,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
280
279
  context "when.adding to the association" do
281
280
 
282
281
  let(:person) do
283
- Person.create
282
+ Person.create!
284
283
  end
285
284
 
286
285
  context "when the operation succeeds" do
@@ -301,7 +300,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
301
300
  context "when the operation fails" do
302
301
 
303
302
  let!(:existing) do
304
- Post.create
303
+ Post.create!
305
304
  end
306
305
 
307
306
  let(:post) do
@@ -354,7 +353,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
354
353
  context "when the parent is not a new record" do
355
354
 
356
355
  let(:movie) do
357
- Movie.create
356
+ Movie.create!
358
357
  end
359
358
 
360
359
  let(:rating) do
@@ -423,7 +422,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
423
422
  context "when the parent is not a new record" do
424
423
 
425
424
  let(:person) do
426
- Person.create
425
+ Person.create!
427
426
  end
428
427
 
429
428
  let(:post) do
@@ -490,7 +489,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
490
489
  context "when replacing the with a combination of old and new docs" do
491
490
 
492
491
  let(:new_post) do
493
- Post.create(title: "new post")
492
+ Post.create!(title: "new post")
494
493
  end
495
494
 
496
495
  context "when using the same in memory instance" do
@@ -539,7 +538,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
539
538
  context "when replacing the with a combination of only new docs" do
540
539
 
541
540
  let(:new_post) do
542
- Post.create(title: "new post")
541
+ Post.create!(title: "new post")
543
542
  end
544
543
 
545
544
  context "when using the same in memory instance" do
@@ -615,7 +614,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
615
614
  context "when the parent is not a new record" do
616
615
 
617
616
  let(:movie) do
618
- Movie.create
617
+ Movie.create!
619
618
  end
620
619
 
621
620
  let(:rating) do
@@ -650,11 +649,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
650
649
  context "when the parent is persisted" do
651
650
 
652
651
  let(:posts) do
653
- [ Post.create(title: "1"), Post.create(title: "2") ]
652
+ [ Post.create!(title: "1"), Post.create!(title: "2") ]
654
653
  end
655
654
 
656
655
  let(:person) do
657
- Person.create(posts: posts)
656
+ Person.create!(posts: posts)
658
657
  end
659
658
 
660
659
  context "when the parent has multiple children" do
@@ -709,7 +708,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
709
708
  context "when the parent is not a new record" do
710
709
 
711
710
  let(:person) do
712
- Person.create
711
+ Person.create!
713
712
  end
714
713
 
715
714
  context "when dependent is destructive" do
@@ -803,7 +802,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
803
802
  context "when the parent is not a new record" do
804
803
 
805
804
  let(:movie) do
806
- Movie.create
805
+ Movie.create!
807
806
  end
808
807
 
809
808
  let(:rating) do
@@ -844,11 +843,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
844
843
  end
845
844
 
846
845
  let(:post_one) do
847
- Post.create
846
+ Post.create!
848
847
  end
849
848
 
850
849
  let(:post_two) do
851
- Post.create
850
+ Post.create!
852
851
  end
853
852
 
854
853
  before do
@@ -863,11 +862,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
863
862
  describe "#\{name}_ids" do
864
863
 
865
864
  let(:posts) do
866
- [ Post.create, Post.create ]
865
+ [ Post.create!, Post.create! ]
867
866
  end
868
867
 
869
868
  let(:person) do
870
- Person.create(posts: posts)
869
+ Person.create!(posts: posts)
871
870
  end
872
871
 
873
872
  it "returns ids of documents that are in the association" do
@@ -923,7 +922,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
923
922
  context "when the parent is not a new record" do
924
923
 
925
924
  let(:person) do
926
- Person.create
925
+ Person.create!
927
926
  end
928
927
 
929
928
  let!(:post) do
@@ -957,7 +956,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
957
956
  context "when the parent is a subclass" do
958
957
 
959
958
  let(:video_game) do
960
- VideoGame.create
959
+ VideoGame.create!
961
960
  end
962
961
 
963
962
  let(:rating) do
@@ -1011,7 +1010,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1011
1010
  context "when the parent is not a new record" do
1012
1011
 
1013
1012
  let(:movie) do
1014
- Movie.create
1013
+ Movie.create!
1015
1014
  end
1016
1015
 
1017
1016
  let!(:rating) do
@@ -1049,13 +1048,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1049
1048
  context "when the parent has been persisted" do
1050
1049
 
1051
1050
  let!(:person) do
1052
- Person.create
1051
+ Person.create!
1053
1052
  end
1054
1053
 
1055
1054
  context "when the children are persisted" do
1056
1055
 
1057
1056
  let!(:post) do
1058
- person.posts.create(title: "Testing")
1057
+ person.posts.create!(title: "Testing")
1059
1058
  end
1060
1059
 
1061
1060
  let!(:association) do
@@ -1120,13 +1119,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1120
1119
  context "when the parent has been persisted" do
1121
1120
 
1122
1121
  let!(:movie) do
1123
- Movie.create
1122
+ Movie.create!
1124
1123
  end
1125
1124
 
1126
1125
  context "when the children are persisted" do
1127
1126
 
1128
1127
  let!(:rating) do
1129
- movie.ratings.create(value: 1)
1128
+ movie.ratings.create!(value: 1)
1130
1129
  end
1131
1130
 
1132
1131
  let!(:association) do
@@ -1229,11 +1228,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1229
1228
  context "when appending in a parent create block" do
1230
1229
 
1231
1230
  let!(:post) do
1232
- Post.create(title: "testing")
1231
+ Post.create!(title: "testing")
1233
1232
  end
1234
1233
 
1235
1234
  let!(:person) do
1236
- Person.create do |doc|
1235
+ Person.create! do |doc|
1237
1236
  doc.posts.concat([ post ])
1238
1237
  end
1239
1238
  end
@@ -1262,7 +1261,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1262
1261
  context "when the parent is not a new record" do
1263
1262
 
1264
1263
  let(:person) do
1265
- Person.create
1264
+ Person.create!
1266
1265
  end
1267
1266
 
1268
1267
  let(:post) do
@@ -1375,7 +1374,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1375
1374
  context "when the parent is not a new record" do
1376
1375
 
1377
1376
  let(:movie) do
1378
- Movie.create
1377
+ Movie.create!
1379
1378
  end
1380
1379
 
1381
1380
  let(:rating) do
@@ -1407,18 +1406,23 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1407
1406
  describe "#count" do
1408
1407
 
1409
1408
  let(:movie) do
1410
- Movie.create
1409
+ Movie.create!
1411
1410
  end
1412
1411
 
1413
1412
  context "when documents have been persisted" do
1414
1413
 
1415
1414
  let!(:rating) do
1416
- movie.ratings.create(value: 1)
1415
+ movie.ratings.create!(value: 1)
1417
1416
  end
1418
1417
 
1419
1418
  it "returns the number of persisted documents" do
1420
1419
  expect(movie.ratings.count).to eq(1)
1421
1420
  end
1421
+
1422
+ it "block form includes persisted results" do
1423
+ expect(movie.ratings.count {|r| r.value >= 1 }).to eq(1)
1424
+ expect(movie.ratings.count {|r| r.value >= 2 }).to eq(0)
1425
+ end
1422
1426
  end
1423
1427
 
1424
1428
  context "when documents have not been persisted" do
@@ -1430,6 +1434,27 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1430
1434
  it "returns 0" do
1431
1435
  expect(movie.ratings.count).to eq(0)
1432
1436
  end
1437
+
1438
+ it "block form does not include unpersisted results" do
1439
+ expect(movie.ratings.count {|r| r.value == 1 }).to eq(0)
1440
+ end
1441
+ end
1442
+
1443
+ context "when mixed persisted and unpersisted documents" do
1444
+
1445
+ before do
1446
+ movie.ratings.create(value: 1)
1447
+ movie.ratings.build(value: 2)
1448
+ end
1449
+
1450
+ it "returns 1" do
1451
+ expect(movie.ratings.count).to eq(1)
1452
+ end
1453
+
1454
+ it "block form includes only persisted results" do
1455
+ expect(movie.ratings.count {|r| r.value >= 1 }).to eq(1)
1456
+ expect(movie.ratings.count {|r| r.value == 2 }).to eq(0)
1457
+ end
1433
1458
  end
1434
1459
 
1435
1460
  context "when no document is added" do
@@ -1444,7 +1469,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1444
1469
  context "when the documents are part of the association" do
1445
1470
 
1446
1471
  before do
1447
- Rating.create(ratable: movie)
1472
+ Rating.create!(ratable: movie)
1448
1473
  end
1449
1474
 
1450
1475
  it "returns the count from the db" do
@@ -1455,7 +1480,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1455
1480
  context "when the documents are not part of the association" do
1456
1481
 
1457
1482
  before do
1458
- Rating.create
1483
+ Rating.create!
1459
1484
  end
1460
1485
 
1461
1486
  it "returns the count from the db" do
@@ -1517,7 +1542,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1517
1542
  end
1518
1543
 
1519
1544
  let(:movie) do
1520
- Movie.create
1545
+ Movie.create!
1521
1546
  end
1522
1547
 
1523
1548
  context "when nothing exists on the association" do
@@ -1568,12 +1593,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1568
1593
  end
1569
1594
 
1570
1595
  context 'when association is not loaded' do
1571
- it 'queries database on each call' do
1572
- expect_query(1) do
1573
- movie.ratings.any?.should be true
1574
- end
1596
+ before do
1597
+ movie.ratings._loaded?.should be false
1598
+ end
1575
1599
 
1576
- expect_query(1) do
1600
+ it 'does not query the database because it knows about the added models' do
1601
+ expect_no_queries do
1577
1602
  movie.ratings.any?.should be true
1578
1603
  end
1579
1604
  end
@@ -1581,7 +1606,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1581
1606
 
1582
1607
  context 'when association is loaded' do
1583
1608
  it 'does not query database' do
1584
- expect_query(1) do
1609
+ expect_no_queries do
1585
1610
  movie.ratings.any?.should be true
1586
1611
  end
1587
1612
 
@@ -1614,7 +1639,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1614
1639
  context "when documents have been persisted" do
1615
1640
 
1616
1641
  let!(:rating) do
1617
- movie.ratings.create(value: 1)
1642
+ movie.ratings.create!(value: 1)
1618
1643
  end
1619
1644
 
1620
1645
  it "returns true" do
@@ -1638,7 +1663,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1638
1663
 
1639
1664
  context "when new documents exist in the database" do
1640
1665
  before do
1641
- Rating.create(ratable: movie)
1666
+ Rating.create!(ratable: movie)
1642
1667
  end
1643
1668
 
1644
1669
  it "returns true" do
@@ -1652,11 +1677,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1652
1677
  context "when providing multiple attributes" do
1653
1678
 
1654
1679
  let(:person) do
1655
- Person.create
1680
+ Person.create!
1656
1681
  end
1657
1682
 
1658
1683
  let!(:posts) do
1659
- person.posts.create([{ text: "Test1" }, { text: "Test2" }])
1684
+ person.posts.create!([{ text: "Test1" }, { text: "Test2" }])
1660
1685
  end
1661
1686
 
1662
1687
  it "creates multiple documents" do
@@ -1685,7 +1710,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1685
1710
  end
1686
1711
 
1687
1712
  let(:post) do
1688
- person.posts.create(text: "Testing")
1713
+ person.posts.create!(text: "Testing")
1689
1714
  end
1690
1715
 
1691
1716
  it "raises an unsaved document error" do
@@ -1698,11 +1723,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1698
1723
  context "when the operation is successful" do
1699
1724
 
1700
1725
  let(:person) do
1701
- Person.create
1726
+ Person.create!
1702
1727
  end
1703
1728
 
1704
1729
  let!(:post) do
1705
- person.posts.create(text: "Testing")
1730
+ person.posts.create!(text: "Testing")
1706
1731
  end
1707
1732
 
1708
1733
  it "creates the document" do
@@ -1713,16 +1738,16 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1713
1738
  context "when the operation fails" do
1714
1739
 
1715
1740
  let(:person) do
1716
- Person.create
1741
+ Person.create!
1717
1742
  end
1718
1743
 
1719
1744
  let!(:existing) do
1720
- Post.create
1745
+ Post.create!
1721
1746
  end
1722
1747
 
1723
1748
  it "raises an error" do
1724
1749
  expect {
1725
- person.posts.create do |doc|
1750
+ person.posts.create! do |doc|
1726
1751
  doc._id = existing.id
1727
1752
  end
1728
1753
  }.to raise_error(Mongo::Error::OperationFailure)
@@ -1733,11 +1758,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1733
1758
  context "when the parent is not a new record" do
1734
1759
 
1735
1760
  let(:person) do
1736
- Person.create
1761
+ Person.create!
1737
1762
  end
1738
1763
 
1739
1764
  let!(:post) do
1740
- person.posts.create(text: "Testing") do |post|
1765
+ person.posts.create!(text: "Testing") do |post|
1741
1766
  post.content = "The Content"
1742
1767
  end
1743
1768
  end
@@ -1770,11 +1795,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1770
1795
  context "when passing a new object" do
1771
1796
 
1772
1797
  let!(:odd) do
1773
- Odd.create(name: 'one')
1798
+ Odd.create!(name: 'one')
1774
1799
  end
1775
1800
 
1776
1801
  let!(:even) do
1777
- odd.evens.create(name: 'two', odds: [Odd.new(name: 'three')])
1802
+ odd.evens.create!(name: 'two', odds: [Odd.new(name: 'three')])
1778
1803
  end
1779
1804
 
1780
1805
  it "only push one even to the list" do
@@ -1804,7 +1829,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1804
1829
  end
1805
1830
 
1806
1831
  let(:rating) do
1807
- movie.ratings.create(value: 1)
1832
+ movie.ratings.create!(value: 1)
1808
1833
  end
1809
1834
 
1810
1835
  it "raises an unsaved document error" do
@@ -1815,11 +1840,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1815
1840
  context "when the parent is not a new record" do
1816
1841
 
1817
1842
  let(:movie) do
1818
- Movie.create
1843
+ Movie.create!
1819
1844
  end
1820
1845
 
1821
1846
  let!(:rating) do
1822
- movie.ratings.create(value: 3)
1847
+ movie.ratings.create!(value: 3)
1823
1848
  end
1824
1849
 
1825
1850
  it "sets the foreign key on the association" do
@@ -1844,7 +1869,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1844
1869
  end
1845
1870
  end
1846
1871
 
1847
- context "when using a diferent primary_key" do
1872
+ context "when using a different primary_key" do
1848
1873
 
1849
1874
  let(:person) do
1850
1875
  Person.create!(username: 'arthurnn')
@@ -1865,7 +1890,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1865
1890
  context "when providing multiple attributes" do
1866
1891
 
1867
1892
  let(:person) do
1868
- Person.create
1893
+ Person.create!
1869
1894
  end
1870
1895
 
1871
1896
  let!(:posts) do
@@ -1909,7 +1934,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1909
1934
  context "when the parent is not a new record" do
1910
1935
 
1911
1936
  let(:person) do
1912
- Person.create
1937
+ Person.create!
1913
1938
  end
1914
1939
 
1915
1940
  let!(:post) do
@@ -1967,7 +1992,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
1967
1992
  context "when the parent is not a new record" do
1968
1993
 
1969
1994
  let(:movie) do
1970
- Movie.create
1995
+ Movie.create!
1971
1996
  end
1972
1997
 
1973
1998
  let!(:rating) do
@@ -2055,7 +2080,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2055
2080
  describe "#delete" do
2056
2081
 
2057
2082
  let!(:person) do
2058
- Person.create(username: 'arthurnn')
2083
+ Person.create!(username: 'arthurnn')
2059
2084
  end
2060
2085
 
2061
2086
  context "when the document is found" do
@@ -2065,7 +2090,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2065
2090
  context "when we are assigning attributes" do
2066
2091
 
2067
2092
  let!(:drug) do
2068
- person.drugs.create
2093
+ person.drugs.create!
2069
2094
  end
2070
2095
 
2071
2096
  before do
@@ -2088,7 +2113,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2088
2113
  context "when the document is loaded" do
2089
2114
 
2090
2115
  let!(:drug) do
2091
- person.drugs.create
2116
+ person.drugs.create!
2092
2117
  end
2093
2118
 
2094
2119
  let!(:deleted) do
@@ -2111,7 +2136,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2111
2136
  context "when the document is not loaded" do
2112
2137
 
2113
2138
  let!(:drug) do
2114
- Drug.create(person_id: person.username)
2139
+ Drug.create!(person_id: person.username)
2115
2140
  end
2116
2141
 
2117
2142
  let!(:deleted) do
@@ -2137,7 +2162,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2137
2162
  context "when the document is loaded" do
2138
2163
 
2139
2164
  let!(:post) do
2140
- person.posts.create(title: "test")
2165
+ person.posts.create!(title: "test")
2141
2166
  end
2142
2167
 
2143
2168
  let!(:deleted) do
@@ -2160,7 +2185,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2160
2185
  context "when the document is not loaded" do
2161
2186
 
2162
2187
  let!(:post) do
2163
- Post.create(title: "foo", person_id: person.id)
2188
+ Post.create!(title: "foo", person_id: person.id)
2164
2189
  end
2165
2190
 
2166
2191
  let!(:deleted) do
@@ -2185,7 +2210,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2185
2210
  context "when the document is not found" do
2186
2211
 
2187
2212
  let!(:post) do
2188
- Post.create(title: "foo")
2213
+ Post.create!(title: "foo")
2189
2214
  end
2190
2215
 
2191
2216
  let!(:deleted) do
@@ -2211,12 +2236,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2211
2236
  context "when conditions are provided" do
2212
2237
 
2213
2238
  let(:person) do
2214
- Person.create(username: 'durran')
2239
+ Person.create!(username: 'durran')
2215
2240
  end
2216
2241
 
2217
2242
  before do
2218
- person.posts.create(title: "Testing")
2219
- person.posts.create(title: "Test")
2243
+ person.posts.create!(title: "Testing")
2244
+ person.posts.create!(title: "Test")
2220
2245
  end
2221
2246
 
2222
2247
  it "removes the correct posts" do
@@ -2238,12 +2263,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2238
2263
  context "when conditions are not provided" do
2239
2264
 
2240
2265
  let(:person) do
2241
- Person.create
2266
+ Person.create!
2242
2267
  end
2243
2268
 
2244
2269
  before do
2245
- person.posts.create(title: "Testing")
2246
- person.posts.create(title: "Test")
2270
+ person.posts.create!(title: "Testing")
2271
+ person.posts.create!(title: "Test")
2247
2272
  end
2248
2273
 
2249
2274
  it "removes the correct posts" do
@@ -2267,12 +2292,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2267
2292
  context "when conditions are provided" do
2268
2293
 
2269
2294
  let(:movie) do
2270
- Movie.create(title: "Bladerunner")
2295
+ Movie.create!(title: "Bladerunner")
2271
2296
  end
2272
2297
 
2273
2298
  before do
2274
- movie.ratings.create(value: 1)
2275
- movie.ratings.create(value: 2)
2299
+ movie.ratings.create!(value: 1)
2300
+ movie.ratings.create!(value: 2)
2276
2301
  end
2277
2302
 
2278
2303
  it "removes the correct ratings" do
@@ -2293,12 +2318,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2293
2318
  context "when conditions are not provided" do
2294
2319
 
2295
2320
  let(:movie) do
2296
- Movie.create(title: "Bladerunner")
2321
+ Movie.create!(title: "Bladerunner")
2297
2322
  end
2298
2323
 
2299
2324
  before do
2300
- movie.ratings.create(value: 1)
2301
- movie.ratings.create(value: 2)
2325
+ movie.ratings.create!(value: 1)
2326
+ movie.ratings.create!(value: 2)
2302
2327
  end
2303
2328
 
2304
2329
  it "removes the correct ratings" do
@@ -2329,13 +2354,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2329
2354
  describe "#exists?" do
2330
2355
 
2331
2356
  let!(:person) do
2332
- Person.create
2357
+ Person.create!
2333
2358
  end
2334
2359
 
2335
2360
  context "when documents exist in the database" do
2336
2361
 
2337
2362
  before do
2338
- person.posts.create
2363
+ person.posts.create!
2339
2364
  end
2340
2365
 
2341
2366
  it "returns true" do
@@ -2466,15 +2491,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2466
2491
  context "when the association is not polymorphic" do
2467
2492
 
2468
2493
  let(:person) do
2469
- Person.create
2494
+ Person.create!
2470
2495
  end
2471
2496
 
2472
2497
  let!(:post_one) do
2473
- person.posts.create(title: "Test")
2498
+ person.posts.create!(title: "Test")
2474
2499
  end
2475
2500
 
2476
2501
  let!(:post_two) do
2477
- person.posts.create(title: "OMG I has associations")
2502
+ person.posts.create!(title: "OMG I has associations")
2478
2503
  end
2479
2504
 
2480
2505
  context "when providing an id" do
@@ -2493,7 +2518,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2493
2518
  context "when the id matches but is not scoped to the association" do
2494
2519
 
2495
2520
  let(:post) do
2496
- Post.create(title: "Unscoped")
2521
+ Post.create!(title: "Unscoped")
2497
2522
  end
2498
2523
 
2499
2524
  it "raises an error" do
@@ -2592,15 +2617,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2592
2617
  context "when the association is polymorphic" do
2593
2618
 
2594
2619
  let(:movie) do
2595
- Movie.create
2620
+ Movie.create!
2596
2621
  end
2597
2622
 
2598
2623
  let!(:rating_one) do
2599
- movie.ratings.create(value: 1)
2624
+ movie.ratings.create!(value: 1)
2600
2625
  end
2601
2626
 
2602
2627
  let!(:rating_two) do
2603
- movie.ratings.create(value: 5)
2628
+ movie.ratings.create!(value: 5)
2604
2629
  end
2605
2630
 
2606
2631
  context "when providing an id" do
@@ -2709,6 +2734,44 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2709
2734
  end
2710
2735
  end
2711
2736
  end
2737
+
2738
+ context "with block" do
2739
+ let!(:author) do
2740
+ Person.create!(title: 'Person')
2741
+ end
2742
+
2743
+ let!(:post_one) do
2744
+ author.posts.create!(title: 'post one')
2745
+ end
2746
+
2747
+ let!(:post_two) do
2748
+ author.posts.create!(title: 'post two')
2749
+ end
2750
+
2751
+ it "finds one" do
2752
+ expect(
2753
+ author.posts.find do |post|
2754
+ post.title == 'post one'
2755
+ end
2756
+ ).to be_a(Post)
2757
+ end
2758
+
2759
+ it "returns first match of multiple" do
2760
+ expect(
2761
+ author.posts.find do |post|
2762
+ ['post one', 'post two'].include?(post.title)
2763
+ end
2764
+ ).to eq(post_one)
2765
+ end
2766
+
2767
+ it "returns nil when not found" do
2768
+ expect(
2769
+ author.posts.find do |post|
2770
+ post.title == 'non exiting one'
2771
+ end
2772
+ ).to be_nil
2773
+ end
2774
+ end
2712
2775
  end
2713
2776
 
2714
2777
  describe "#find_or_create_by" do
@@ -2716,11 +2779,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2716
2779
  context "when the association is not polymorphic" do
2717
2780
 
2718
2781
  let(:person) do
2719
- Person.create
2782
+ Person.create!
2720
2783
  end
2721
2784
 
2722
2785
  let!(:post) do
2723
- person.posts.create(title: "Testing")
2786
+ person.posts.create!(title: "Testing")
2724
2787
  end
2725
2788
 
2726
2789
  context "when the document exists" do
@@ -2789,11 +2852,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2789
2852
  context "when the association is polymorphic" do
2790
2853
 
2791
2854
  let(:movie) do
2792
- Movie.create
2855
+ Movie.create!
2793
2856
  end
2794
2857
 
2795
2858
  let!(:rating) do
2796
- movie.ratings.create(value: 1)
2859
+ movie.ratings.create!(value: 1)
2797
2860
  end
2798
2861
 
2799
2862
  context "when the document exists" do
@@ -2837,11 +2900,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2837
2900
  context "when the association is not polymorphic" do
2838
2901
 
2839
2902
  let(:person) do
2840
- Person.create
2903
+ Person.create!
2841
2904
  end
2842
2905
 
2843
2906
  let!(:post) do
2844
- person.posts.create(title: "Testing")
2907
+ person.posts.create!(title: "Testing")
2845
2908
  end
2846
2909
 
2847
2910
  context "when the document exists" do
@@ -2910,11 +2973,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2910
2973
  context "when the association is polymorphic" do
2911
2974
 
2912
2975
  let(:movie) do
2913
- Movie.create
2976
+ Movie.create!
2914
2977
  end
2915
2978
 
2916
2979
  let!(:rating) do
2917
- movie.ratings.create(value: 1)
2980
+ movie.ratings.create!(value: 1)
2918
2981
  end
2919
2982
 
2920
2983
  context "when the document exists" do
@@ -2967,11 +3030,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2967
3030
  context "when the association is not polymorphic" do
2968
3031
 
2969
3032
  let(:person) do
2970
- Person.create
3033
+ Person.create!
2971
3034
  end
2972
3035
 
2973
3036
  let!(:post) do
2974
- person.posts.create(title: "Testing")
3037
+ person.posts.create!(title: "Testing")
2975
3038
  end
2976
3039
 
2977
3040
  context "when the document exists" do
@@ -3010,11 +3073,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3010
3073
  context "when the association is polymorphic" do
3011
3074
 
3012
3075
  let(:movie) do
3013
- Movie.create
3076
+ Movie.create!
3014
3077
  end
3015
3078
 
3016
3079
  let!(:rating) do
3017
- movie.ratings.create(value: 1)
3080
+ movie.ratings.create!(value: 1)
3018
3081
  end
3019
3082
 
3020
3083
  context "when the document exists" do
@@ -3104,15 +3167,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3104
3167
  describe "#max" do
3105
3168
 
3106
3169
  let(:person) do
3107
- Person.create
3170
+ Person.create!
3108
3171
  end
3109
3172
 
3110
3173
  let(:post_one) do
3111
- Post.create(rating: 5)
3174
+ Post.create!(rating: 5)
3112
3175
  end
3113
3176
 
3114
3177
  let(:post_two) do
3115
- Post.create(rating: 10)
3178
+ Post.create!(rating: 10)
3116
3179
  end
3117
3180
 
3118
3181
  before do
@@ -3133,15 +3196,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3133
3196
  describe "#max_by" do
3134
3197
 
3135
3198
  let(:person) do
3136
- Person.create
3199
+ Person.create!
3137
3200
  end
3138
3201
 
3139
3202
  let(:post_one) do
3140
- Post.create(rating: 5)
3203
+ Post.create!(rating: 5)
3141
3204
  end
3142
3205
 
3143
3206
  let(:post_two) do
3144
- Post.create(rating: 10)
3207
+ Post.create!(rating: 10)
3145
3208
  end
3146
3209
 
3147
3210
  before do
@@ -3160,15 +3223,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3160
3223
  describe "#method_missing" do
3161
3224
 
3162
3225
  let!(:person) do
3163
- Person.create
3226
+ Person.create!
3164
3227
  end
3165
3228
 
3166
3229
  let!(:post_one) do
3167
- person.posts.create(title: "First", content: "Posting")
3230
+ person.posts.create!(title: "First", content: "Posting")
3168
3231
  end
3169
3232
 
3170
3233
  let!(:post_two) do
3171
- person.posts.create(title: "Second", content: "Testing")
3234
+ person.posts.create!(title: "Second", content: "Testing")
3172
3235
  end
3173
3236
 
3174
3237
  context "when providing a single criteria" do
@@ -3235,15 +3298,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3235
3298
  describe "#min" do
3236
3299
 
3237
3300
  let(:person) do
3238
- Person.create
3301
+ Person.create!
3239
3302
  end
3240
3303
 
3241
3304
  let(:post_one) do
3242
- Post.create(rating: 5)
3305
+ Post.create!(rating: 5)
3243
3306
  end
3244
3307
 
3245
3308
  let(:post_two) do
3246
- Post.create(rating: 10)
3309
+ Post.create!(rating: 10)
3247
3310
  end
3248
3311
 
3249
3312
  before do
@@ -3264,15 +3327,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3264
3327
  describe "#min_by" do
3265
3328
 
3266
3329
  let(:person) do
3267
- Person.create
3330
+ Person.create!
3268
3331
  end
3269
3332
 
3270
3333
  let(:post_one) do
3271
- Post.create(rating: 5)
3334
+ Post.create!(rating: 5)
3272
3335
  end
3273
3336
 
3274
3337
  let(:post_two) do
3275
- Post.create(rating: 10)
3338
+ Post.create!(rating: 10)
3276
3339
  end
3277
3340
 
3278
3341
  before do
@@ -3293,15 +3356,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3293
3356
  context "when the inverse has not been loaded" do
3294
3357
 
3295
3358
  let(:person) do
3296
- Person.create
3359
+ Person.create!
3297
3360
  end
3298
3361
 
3299
3362
  let!(:post_one) do
3300
- person.posts.create(title: "One")
3363
+ person.posts.create!(title: "One")
3301
3364
  end
3302
3365
 
3303
3366
  let!(:post_two) do
3304
- person.posts.create(title: "Two")
3367
+ person.posts.create!(title: "Two")
3305
3368
  end
3306
3369
 
3307
3370
  let(:from_db) do
@@ -3330,15 +3393,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3330
3393
  context "when the association is not polymorphic" do
3331
3394
 
3332
3395
  let(:person) do
3333
- Person.create
3396
+ Person.create!
3334
3397
  end
3335
3398
 
3336
3399
  let!(:post_one) do
3337
- person.posts.create(title: "One")
3400
+ person.posts.create!(title: "One")
3338
3401
  end
3339
3402
 
3340
3403
  let!(:post_two) do
3341
- person.posts.create(title: "Two")
3404
+ person.posts.create!(title: "Two")
3342
3405
  end
3343
3406
 
3344
3407
  before do
@@ -3376,15 +3439,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3376
3439
  context "when the association is polymorphic" do
3377
3440
 
3378
3441
  let(:movie) do
3379
- Movie.create(title: "Oldboy")
3442
+ Movie.create!(title: "Oldboy")
3380
3443
  end
3381
3444
 
3382
3445
  let!(:rating_one) do
3383
- movie.ratings.create(value: 10)
3446
+ movie.ratings.create!(value: 10)
3384
3447
  end
3385
3448
 
3386
3449
  let!(:rating_two) do
3387
- movie.ratings.create(value: 9)
3450
+ movie.ratings.create!(value: 9)
3388
3451
  end
3389
3452
 
3390
3453
  before do
@@ -3470,13 +3533,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3470
3533
  describe "##{method}" do
3471
3534
 
3472
3535
  let(:movie) do
3473
- Movie.create
3536
+ Movie.create!
3474
3537
  end
3475
3538
 
3476
3539
  context "when documents have been persisted" do
3477
3540
 
3478
3541
  let!(:rating) do
3479
- movie.ratings.create(value: 1)
3542
+ movie.ratings.create!(value: 1)
3480
3543
  end
3481
3544
 
3482
3545
  it "returns 1" do
@@ -3488,7 +3551,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3488
3551
 
3489
3552
  before do
3490
3553
  movie.ratings.build(value: 1)
3491
- movie.ratings.create(value: 2)
3554
+ movie.ratings.create!(value: 2)
3492
3555
  end
3493
3556
 
3494
3557
  it "returns the total number of documents" do
@@ -3503,15 +3566,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3503
3566
  context "when the association has no default scope" do
3504
3567
 
3505
3568
  let!(:person) do
3506
- Person.create
3569
+ Person.create!
3507
3570
  end
3508
3571
 
3509
3572
  let!(:post_one) do
3510
- person.posts.create(title: "first")
3573
+ person.posts.create!(title: "first")
3511
3574
  end
3512
3575
 
3513
3576
  let!(:post_two) do
3514
- Post.create(title: "second")
3577
+ Post.create!(title: "second")
3515
3578
  end
3516
3579
 
3517
3580
  let(:unscoped) do
@@ -3526,15 +3589,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3526
3589
  context "when the association has a default scope" do
3527
3590
 
3528
3591
  let!(:church) do
3529
- Church.create
3592
+ Church.create!
3530
3593
  end
3531
3594
 
3532
3595
  let!(:acolyte_one) do
3533
- church.acolytes.create(name: "first")
3596
+ church.acolytes.create!(name: "first")
3534
3597
  end
3535
3598
 
3536
3599
  let!(:acolyte_two) do
3537
- Acolyte.create(name: "second")
3600
+ Acolyte.create!(name: "second")
3538
3601
  end
3539
3602
 
3540
3603
  let(:unscoped) do
@@ -3554,19 +3617,19 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3554
3617
  context "when the association has an order defined" do
3555
3618
 
3556
3619
  let(:person) do
3557
- Person.create
3620
+ Person.create!
3558
3621
  end
3559
3622
 
3560
3623
  let(:post_one) do
3561
- OrderedPost.create(rating: 10, title: '1')
3624
+ OrderedPost.create!(rating: 10, title: '1')
3562
3625
  end
3563
3626
 
3564
3627
  let(:post_two) do
3565
- OrderedPost.create(rating: 20, title: '2')
3628
+ OrderedPost.create!(rating: 20, title: '2')
3566
3629
  end
3567
3630
 
3568
3631
  let(:post_three) do
3569
- OrderedPost.create(rating: 20, title: '3')
3632
+ OrderedPost.create!(rating: 20, title: '3')
3570
3633
  end
3571
3634
 
3572
3635
  before do
@@ -3580,7 +3643,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3580
3643
  )
3581
3644
  end
3582
3645
 
3583
- it "chaining order criterias" do
3646
+ it "chaining order criteria" do
3584
3647
  expect(person.ordered_posts.order_by(:title.desc).to_a).to eq(
3585
3648
  [post_three, post_two, post_one]
3586
3649
  )
@@ -3590,15 +3653,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3590
3653
  context "when reloading the association" do
3591
3654
 
3592
3655
  let!(:person) do
3593
- Person.create
3656
+ Person.create!
3594
3657
  end
3595
3658
 
3596
3659
  let!(:post_one) do
3597
- Post.create(title: "one")
3660
+ Post.create!(title: "one")
3598
3661
  end
3599
3662
 
3600
3663
  let!(:post_two) do
3601
- Post.create(title: "two")
3664
+ Post.create!(title: "two")
3602
3665
  end
3603
3666
 
3604
3667
  before do
@@ -3644,7 +3707,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3644
3707
  context "when the parent is using integer ids" do
3645
3708
 
3646
3709
  let(:jar) do
3647
- Jar.create do |doc|
3710
+ Jar.create! do |doc|
3648
3711
  doc._id = 1
3649
3712
  end
3650
3713
  end
@@ -3757,8 +3820,8 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3757
3820
 
3758
3821
  before do
3759
3822
  artist.albums << album
3760
- album.save
3761
- artist.save
3823
+ album.save!
3824
+ artist.save!
3762
3825
  expect(artist).not_to receive(:after_add_album)
3763
3826
  end
3764
3827
 
@@ -3922,15 +3985,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3922
3985
  context "when executing a criteria call on an ordered association" do
3923
3986
 
3924
3987
  let(:person) do
3925
- Person.create
3988
+ Person.create!
3926
3989
  end
3927
3990
 
3928
3991
  let!(:post_one) do
3929
- person.ordered_posts.create(rating: 1)
3992
+ person.ordered_posts.create!(rating: 1)
3930
3993
  end
3931
3994
 
3932
3995
  let!(:post_two) do
3933
- person.ordered_posts.create(rating: 5)
3996
+ person.ordered_posts.create!(rating: 5)
3934
3997
  end
3935
3998
 
3936
3999
  let(:criteria) do
@@ -3945,11 +4008,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3945
4008
  context "when accessing a scope named open" do
3946
4009
 
3947
4010
  let(:person) do
3948
- Person.create
4011
+ Person.create!
3949
4012
  end
3950
4013
 
3951
4014
  let!(:post) do
3952
- person.posts.create(title: "open")
4015
+ person.posts.create!(title: "open")
3953
4016
  end
3954
4017
 
3955
4018
  it "returns the appropriate documents" do
@@ -3960,11 +4023,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3960
4023
  context "when accessing a association named parent" do
3961
4024
 
3962
4025
  let!(:parent) do
3963
- Odd.create(name: "odd parent")
4026
+ Odd.create!(name: "odd parent")
3964
4027
  end
3965
4028
 
3966
4029
  let(:child) do
3967
- Even.create(parent_id: parent.id, name: "original even child")
4030
+ Even.create!(parent_id: parent.id, name: "original even child")
3968
4031
  end
3969
4032
 
3970
4033
  it "updates the child after accessing the parent" do
@@ -4001,7 +4064,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
4001
4064
  end
4002
4065
 
4003
4066
  it 'saves the document correctly' do
4004
- expect(agent.save).to be(true)
4067
+ expect(agent.save!).to be(true)
4005
4068
  end
4006
4069
  end
4007
4070
 
@@ -4017,8 +4080,8 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
4017
4080
 
4018
4081
  before do
4019
4082
  agent.same_name = band
4020
- agent.save
4021
- band.save
4083
+ agent.save!
4084
+ band.save!
4022
4085
  band.reload
4023
4086
  end
4024
4087