mongoid 7.3.2 → 7.4.0

Sign up to get free protection for your applications and to get access to all the features.
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