mongoid 7.3.5 → 7.4.3

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 (893) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -17
  4. data/README.md +3 -3
  5. data/lib/config/locales/en.yml +21 -20
  6. data/lib/mongoid/association/accessors.rb +0 -27
  7. data/lib/mongoid/association/bindable.rb +0 -21
  8. data/lib/mongoid/association/builders.rb +0 -9
  9. data/lib/mongoid/association/constrainable.rb +0 -3
  10. data/lib/mongoid/association/depending.rb +0 -7
  11. data/lib/mongoid/association/eager_loadable.rb +0 -3
  12. data/lib/mongoid/association/embedded/batchable.rb +9 -39
  13. data/lib/mongoid/association/embedded/cyclic.rb +2 -11
  14. data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
  15. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
  16. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
  17. data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
  18. data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
  19. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
  20. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
  21. data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
  22. data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
  23. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
  24. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
  25. data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
  26. data/lib/mongoid/association/embedded.rb +0 -1
  27. data/lib/mongoid/association/macros.rb +6 -5
  28. data/lib/mongoid/association/many.rb +0 -17
  29. data/lib/mongoid/association/marshalable.rb +0 -5
  30. data/lib/mongoid/association/nested/many.rb +0 -11
  31. data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
  32. data/lib/mongoid/association/nested/one.rb +1 -16
  33. data/lib/mongoid/association/nested.rb +0 -3
  34. data/lib/mongoid/association/one.rb +1 -10
  35. data/lib/mongoid/association/options.rb +0 -33
  36. data/lib/mongoid/association/proxy.rb +0 -21
  37. data/lib/mongoid/association/referenced/auto_save.rb +0 -9
  38. data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
  39. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
  40. data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
  41. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
  42. data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
  43. data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
  44. data/lib/mongoid/association/referenced/eager.rb +3 -24
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
  50. data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
  51. data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
  52. data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
  53. data/lib/mongoid/association/referenced/has_many/enumerable.rb +8 -56
  54. data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
  55. data/lib/mongoid/association/referenced/has_many.rb +12 -39
  56. data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
  57. data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
  58. data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
  59. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
  60. data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
  61. data/lib/mongoid/association/referenced/has_one.rb +9 -32
  62. data/lib/mongoid/association/referenced/syncable.rb +0 -17
  63. data/lib/mongoid/association/referenced.rb +0 -1
  64. data/lib/mongoid/association/reflections.rb +0 -1
  65. data/lib/mongoid/association/relatable.rb +0 -61
  66. data/lib/mongoid/association.rb +0 -17
  67. data/lib/mongoid/atomic/modifiers.rb +4 -51
  68. data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
  69. data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
  70. data/lib/mongoid/atomic/paths/embedded.rb +0 -3
  71. data/lib/mongoid/atomic/paths/root.rb +0 -5
  72. data/lib/mongoid/atomic/paths.rb +0 -1
  73. data/lib/mongoid/atomic.rb +1 -42
  74. data/lib/mongoid/attributes/dynamic.rb +0 -17
  75. data/lib/mongoid/attributes/nested.rb +0 -5
  76. data/lib/mongoid/attributes/processing.rb +1 -18
  77. data/lib/mongoid/attributes/projector.rb +0 -1
  78. data/lib/mongoid/attributes/readonly.rb +0 -5
  79. data/lib/mongoid/attributes.rb +0 -33
  80. data/lib/mongoid/cacheable.rb +1 -6
  81. data/lib/mongoid/changeable.rb +3 -59
  82. data/lib/mongoid/clients/factory.rb +0 -7
  83. data/lib/mongoid/clients/options.rb +0 -5
  84. data/lib/mongoid/clients/sessions.rb +0 -7
  85. data/lib/mongoid/clients/storage_options.rb +0 -7
  86. data/lib/mongoid/clients/validators/storage.rb +0 -9
  87. data/lib/mongoid/clients/validators.rb +0 -1
  88. data/lib/mongoid/clients.rb +0 -9
  89. data/lib/mongoid/composable.rb +0 -7
  90. data/lib/mongoid/config/environment.rb +21 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +0 -25
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +39 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +20 -67
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +6 -2
  146. data/lib/mongoid/criteria/queryable.rb +0 -7
  147. data/lib/mongoid/criteria/scopable.rb +25 -19
  148. data/lib/mongoid/criteria.rb +0 -57
  149. data/lib/mongoid/document.rb +0 -51
  150. data/lib/mongoid/equality.rb +26 -10
  151. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  152. data/lib/mongoid/errors/callback.rb +0 -3
  153. data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
  154. data/lib/mongoid/errors/delete_restriction.rb +0 -3
  155. data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
  156. data/lib/mongoid/errors/document_not_found.rb +0 -9
  157. data/lib/mongoid/errors/eager_load.rb +0 -3
  158. data/lib/mongoid/errors/empty_config_file.rb +0 -1
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
  160. data/lib/mongoid/errors/invalid_collection.rb +0 -1
  161. data/lib/mongoid/errors/invalid_config_file.rb +0 -1
  162. data/lib/mongoid/errors/invalid_config_option.rb +0 -3
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
  164. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
  165. data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
  166. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
  167. data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
  168. data/lib/mongoid/errors/invalid_field.rb +0 -5
  169. data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
  170. data/lib/mongoid/errors/invalid_field_option.rb +0 -3
  171. data/lib/mongoid/errors/invalid_find.rb +0 -3
  172. data/lib/mongoid/errors/invalid_includes.rb +0 -3
  173. data/lib/mongoid/errors/invalid_index.rb +0 -3
  174. data/lib/mongoid/errors/invalid_options.rb +0 -3
  175. data/lib/mongoid/errors/invalid_path.rb +0 -3
  176. data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
  177. data/lib/mongoid/errors/invalid_query.rb +0 -1
  178. data/lib/mongoid/errors/invalid_relation.rb +0 -7
  179. data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
  180. data/lib/mongoid/errors/invalid_scope.rb +0 -3
  181. data/lib/mongoid/errors/invalid_session_use.rb +1 -6
  182. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
  183. data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
  184. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
  185. data/lib/mongoid/errors/invalid_time.rb +0 -3
  186. data/lib/mongoid/errors/invalid_value.rb +0 -1
  187. data/lib/mongoid/errors/inverse_not_found.rb +0 -3
  188. data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
  189. data/lib/mongoid/errors/mixed_relations.rb +0 -3
  190. data/lib/mongoid/errors/mongoid_error.rb +0 -9
  191. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
  192. data/lib/mongoid/errors/no_client_config.rb +0 -3
  193. data/lib/mongoid/errors/no_client_database.rb +0 -3
  194. data/lib/mongoid/errors/no_client_hosts.rb +0 -3
  195. data/lib/mongoid/errors/no_clients_config.rb +0 -3
  196. data/lib/mongoid/errors/no_default_client.rb +0 -3
  197. data/lib/mongoid/errors/no_environment.rb +0 -3
  198. data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
  199. data/lib/mongoid/errors/no_metadata.rb +0 -3
  200. data/lib/mongoid/errors/no_parent.rb +0 -3
  201. data/lib/mongoid/errors/readonly_attribute.rb +0 -3
  202. data/lib/mongoid/errors/readonly_document.rb +1 -6
  203. data/lib/mongoid/errors/scope_overwrite.rb +0 -1
  204. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
  205. data/lib/mongoid/errors/unknown_attribute.rb +0 -3
  206. data/lib/mongoid/errors/unknown_model.rb +0 -3
  207. data/lib/mongoid/errors/unsaved_document.rb +1 -2
  208. data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
  209. data/lib/mongoid/errors/validations.rb +0 -1
  210. data/lib/mongoid/errors.rb +0 -1
  211. data/lib/mongoid/evolvable.rb +0 -3
  212. data/lib/mongoid/extensions/array.rb +3 -29
  213. data/lib/mongoid/extensions/big_decimal.rb +0 -11
  214. data/lib/mongoid/extensions/boolean.rb +0 -3
  215. data/lib/mongoid/extensions/date.rb +0 -9
  216. data/lib/mongoid/extensions/date_time.rb +0 -9
  217. data/lib/mongoid/extensions/decimal128.rb +0 -5
  218. data/lib/mongoid/extensions/false_class.rb +1 -6
  219. data/lib/mongoid/extensions/float.rb +0 -7
  220. data/lib/mongoid/extensions/hash.rb +0 -27
  221. data/lib/mongoid/extensions/integer.rb +0 -9
  222. data/lib/mongoid/extensions/module.rb +0 -3
  223. data/lib/mongoid/extensions/nil_class.rb +0 -5
  224. data/lib/mongoid/extensions/object.rb +1 -40
  225. data/lib/mongoid/extensions/object_id.rb +0 -7
  226. data/lib/mongoid/extensions/range.rb +0 -11
  227. data/lib/mongoid/extensions/regexp.rb +0 -3
  228. data/lib/mongoid/extensions/set.rb +0 -7
  229. data/lib/mongoid/extensions/string.rb +1 -30
  230. data/lib/mongoid/extensions/symbol.rb +0 -7
  231. data/lib/mongoid/extensions/time.rb +0 -11
  232. data/lib/mongoid/extensions/time_with_zone.rb +13 -9
  233. data/lib/mongoid/extensions/true_class.rb +1 -6
  234. data/lib/mongoid/extensions.rb +15 -3
  235. data/lib/mongoid/factory.rb +1 -2
  236. data/lib/mongoid/fields/foreign_key.rb +0 -21
  237. data/lib/mongoid/fields/localized.rb +0 -11
  238. data/lib/mongoid/fields/standard.rb +0 -33
  239. data/lib/mongoid/fields/validators/macro.rb +0 -9
  240. data/lib/mongoid/fields/validators.rb +0 -1
  241. data/lib/mongoid/fields.rb +64 -57
  242. data/lib/mongoid/findable.rb +0 -5
  243. data/lib/mongoid/indexable/specification.rb +0 -15
  244. data/lib/mongoid/indexable/validators/options.rb +0 -7
  245. data/lib/mongoid/indexable.rb +1 -18
  246. data/lib/mongoid/inspectable.rb +1 -10
  247. data/lib/mongoid/interceptable.rb +0 -25
  248. data/lib/mongoid/loggable.rb +0 -9
  249. data/lib/mongoid/matchable.rb +0 -5
  250. data/lib/mongoid/matcher/eq_impl.rb +37 -2
  251. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
  252. data/lib/mongoid/persistable/creatable.rb +1 -20
  253. data/lib/mongoid/persistable/deletable.rb +0 -17
  254. data/lib/mongoid/persistable/destroyable.rb +0 -7
  255. data/lib/mongoid/persistable/incrementable.rb +0 -5
  256. data/lib/mongoid/persistable/logical.rb +0 -5
  257. data/lib/mongoid/persistable/poppable.rb +0 -5
  258. data/lib/mongoid/persistable/pullable.rb +0 -7
  259. data/lib/mongoid/persistable/pushable.rb +0 -7
  260. data/lib/mongoid/persistable/renamable.rb +0 -5
  261. data/lib/mongoid/persistable/savable.rb +0 -7
  262. data/lib/mongoid/persistable/settable.rb +0 -5
  263. data/lib/mongoid/persistable/unsettable.rb +0 -5
  264. data/lib/mongoid/persistable/updatable.rb +2 -17
  265. data/lib/mongoid/persistable/upsertable.rb +0 -7
  266. data/lib/mongoid/persistable.rb +0 -23
  267. data/lib/mongoid/persistence_context.rb +0 -27
  268. data/lib/mongoid/positional.rb +0 -5
  269. data/lib/mongoid/query_cache.rb +0 -33
  270. data/lib/mongoid/railtie.rb +0 -15
  271. data/lib/mongoid/railties/controller_runtime.rb +0 -1
  272. data/lib/mongoid/reloadable.rb +4 -16
  273. data/lib/mongoid/scopable.rb +6 -34
  274. data/lib/mongoid/selectable.rb +0 -9
  275. data/lib/mongoid/serializable.rb +0 -15
  276. data/lib/mongoid/shardable.rb +0 -7
  277. data/lib/mongoid/stateful.rb +0 -9
  278. data/lib/mongoid/stringified_symbol.rb +2 -3
  279. data/lib/mongoid/tasks/database.rb +0 -5
  280. data/lib/mongoid/threaded/lifecycle.rb +0 -21
  281. data/lib/mongoid/threaded.rb +0 -55
  282. data/lib/mongoid/timestamps/created/short.rb +0 -1
  283. data/lib/mongoid/timestamps/created.rb +0 -1
  284. data/lib/mongoid/timestamps/short.rb +0 -1
  285. data/lib/mongoid/timestamps/timeless.rb +0 -7
  286. data/lib/mongoid/timestamps/updated/short.rb +0 -1
  287. data/lib/mongoid/timestamps/updated.rb +0 -3
  288. data/lib/mongoid/timestamps.rb +0 -1
  289. data/lib/mongoid/touchable.rb +0 -7
  290. data/lib/mongoid/traversable.rb +67 -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/config/mongoid_with_schema_map_uuid.yml +27 -0
  307. data/spec/integration/app_spec.rb +20 -15
  308. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  309. data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
  310. data/spec/integration/associations/embedded_spec.rb +0 -1
  311. data/spec/integration/associations/embeds_many_spec.rb +0 -1
  312. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  314. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  315. data/spec/integration/associations/has_many_spec.rb +0 -1
  316. data/spec/integration/associations/has_one_spec.rb +0 -1
  317. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  319. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  320. data/spec/integration/associations/scope_option_spec.rb +101 -0
  321. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  322. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  323. data/spec/integration/callbacks_models.rb +12 -0
  324. data/spec/integration/callbacks_spec.rb +18 -6
  325. data/spec/integration/contextual/empty_spec.rb +0 -1
  326. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  327. data/spec/integration/criteria/date_field_spec.rb +0 -1
  328. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  329. data/spec/integration/criteria/logical_spec.rb +30 -0
  330. data/spec/integration/criteria/range_spec.rb +265 -0
  331. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  332. data/spec/integration/discriminator_key_spec.rb +0 -1
  333. data/spec/integration/discriminator_value_spec.rb +0 -1
  334. data/spec/integration/document_spec.rb +0 -1
  335. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  336. data/spec/integration/matcher_examples_spec.rb +0 -1
  337. data/spec/integration/matcher_operator_spec.rb +27 -3
  338. data/spec/integration/matcher_spec.rb +95 -1
  339. data/spec/integration/server_query_spec.rb +0 -1
  340. data/spec/integration/shardable_spec.rb +0 -1
  341. data/spec/integration/stringified_symbol_field_spec.rb +14 -1
  342. data/spec/lite_spec_helper.rb +1 -2
  343. data/spec/mongoid/association/accessors_spec.rb +44 -15
  344. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  345. data/spec/mongoid/association/builders_spec.rb +1 -2
  346. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  347. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  348. data/spec/mongoid/association/depending_spec.rb +12 -13
  349. data/spec/mongoid/association/eager_spec.rb +4 -5
  350. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  352. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  354. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  355. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  358. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
  359. data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -1
  360. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  364. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  365. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  368. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  369. data/spec/mongoid/association/macros_spec.rb +9 -10
  370. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  371. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  372. data/spec/mongoid/association/options_spec.rb +0 -1
  373. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  375. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  376. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  377. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  378. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -1
  379. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  387. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  388. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  389. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  390. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  391. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +59 -33
  392. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  393. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +217 -154
  394. data/spec/mongoid/association/referenced/has_many_models.rb +18 -1
  395. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  396. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  397. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  398. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  399. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  400. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  401. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  402. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  403. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  404. data/spec/mongoid/association/reflections_spec.rb +0 -1
  405. data/spec/mongoid/association/syncable_spec.rb +31 -32
  406. data/spec/mongoid/association_spec.rb +0 -1
  407. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  411. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  412. data/spec/mongoid/atomic_spec.rb +28 -7
  413. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  414. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  415. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  416. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  417. data/spec/mongoid/attributes_spec.rb +32 -33
  418. data/spec/mongoid/cacheable_spec.rb +1 -2
  419. data/spec/mongoid/changeable_spec.rb +35 -36
  420. data/spec/mongoid/clients/factory_spec.rb +11 -13
  421. data/spec/mongoid/clients/options_spec.rb +4 -5
  422. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  423. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  424. data/spec/mongoid/clients_spec.rb +6 -7
  425. data/spec/mongoid/composable_spec.rb +0 -1
  426. data/spec/mongoid/config/environment_spec.rb +39 -2
  427. data/spec/mongoid/config/options_spec.rb +0 -1
  428. data/spec/mongoid/config_spec.rb +145 -1
  429. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  430. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  431. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  432. data/spec/mongoid/contextual/atomic_spec.rb +46 -47
  433. data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
  434. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  435. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  436. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  437. data/spec/mongoid/contextual/none_spec.rb +7 -82
  438. data/spec/mongoid/copyable_spec.rb +12 -13
  439. data/spec/mongoid/copyable_spec_models.rb +0 -1
  440. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  441. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  443. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  444. data/spec/mongoid/criteria/options_spec.rb +0 -1
  445. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  446. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  460. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  470. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  471. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  473. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  474. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  476. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  477. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  480. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  481. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  482. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  483. data/spec/mongoid/criteria_spec.rb +515 -187
  484. data/spec/mongoid/document_fields_spec.rb +0 -1
  485. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  486. data/spec/mongoid/document_query_spec.rb +0 -1
  487. data/spec/mongoid/document_spec.rb +11 -33
  488. data/spec/mongoid/equality_spec.rb +142 -41
  489. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  490. data/spec/mongoid/errors/callback_spec.rb +0 -1
  491. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  493. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  494. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  496. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  506. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  507. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  509. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  510. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  512. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  513. data/spec/mongoid/errors/mongoid_error_spec.rb +1 -2
  514. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  522. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  524. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  525. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  526. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  527. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  528. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  529. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  530. data/spec/mongoid/errors/validations_spec.rb +0 -1
  531. data/spec/mongoid/extensions/array_spec.rb +0 -1
  532. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  533. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  534. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_spec.rb +0 -1
  537. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  538. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  539. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  540. data/spec/mongoid/extensions/float_spec.rb +0 -1
  541. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  542. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  543. data/spec/mongoid/extensions/module_spec.rb +0 -1
  544. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  546. data/spec/mongoid/extensions/object_spec.rb +0 -1
  547. data/spec/mongoid/extensions/range_spec.rb +0 -1
  548. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  549. data/spec/mongoid/extensions/set_spec.rb +0 -1
  550. data/spec/mongoid/extensions/string_spec.rb +2 -3
  551. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_spec.rb +0 -1
  554. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  555. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  556. data/spec/mongoid/extensions_spec.rb +14 -3
  557. data/spec/mongoid/factory_spec.rb +1 -1
  558. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  559. data/spec/mongoid/fields/localized_spec.rb +0 -1
  560. data/spec/mongoid/fields/standard_spec.rb +0 -1
  561. data/spec/mongoid/fields_spec.rb +326 -31
  562. data/spec/mongoid/findable_spec.rb +21 -22
  563. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  564. data/spec/mongoid/indexable_spec.rb +0 -1
  565. data/spec/mongoid/inspectable_spec.rb +0 -1
  566. data/spec/mongoid/interceptable_spec.rb +102 -95
  567. data/spec/mongoid/loggable_spec.rb +0 -1
  568. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  569. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  570. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  571. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  573. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  574. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  575. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  577. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  578. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  579. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  580. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  581. data/spec/mongoid/persistable/updatable_spec.rb +41 -24
  582. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  583. data/spec/mongoid/persistable_spec.rb +1 -2
  584. data/spec/mongoid/persistence_context_spec.rb +0 -1
  585. data/spec/mongoid/positional_spec.rb +0 -1
  586. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  587. data/spec/mongoid/query_cache_spec.rb +30 -8
  588. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  589. data/spec/mongoid/reloadable_spec.rb +209 -23
  590. data/spec/mongoid/scopable_spec.rb +54 -22
  591. data/spec/mongoid/selectable_spec.rb +6 -7
  592. data/spec/mongoid/serializable_spec.rb +9 -10
  593. data/spec/mongoid/shardable_spec.rb +2 -3
  594. data/spec/mongoid/stateful_spec.rb +1 -2
  595. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  596. data/spec/mongoid/tasks/database_spec.rb +0 -1
  597. data/spec/mongoid/threaded_spec.rb +2 -3
  598. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  600. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  601. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  602. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  603. data/spec/mongoid/timestamps_spec.rb +6 -7
  604. data/spec/mongoid/touchable_spec.rb +15 -20
  605. data/spec/mongoid/touchable_spec_models.rb +0 -1
  606. data/spec/mongoid/traversable_spec.rb +65 -2
  607. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  608. data/spec/mongoid/validatable/format_spec.rb +0 -1
  609. data/spec/mongoid/validatable/length_spec.rb +0 -1
  610. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  611. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  612. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  613. data/spec/mongoid/validatable_spec.rb +2 -3
  614. data/spec/mongoid_spec.rb +0 -1
  615. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  616. data/spec/rails/mongoid_spec.rb +0 -1
  617. data/spec/shared/lib/mrss/constraints.rb +10 -17
  618. data/spec/shared/lib/mrss/docker_runner.rb +23 -3
  619. data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
  620. data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
  621. data/spec/shared/lib/mrss/lite_constraints.rb +40 -1
  622. data/spec/shared/share/Dockerfile.erb +56 -54
  623. data/spec/shared/shlib/config.sh +27 -0
  624. data/spec/shared/shlib/distro.sh +2 -1
  625. data/spec/shared/shlib/server.sh +46 -21
  626. data/spec/shared/shlib/set_env.sh +43 -5
  627. data/spec/spec_helper.rb +12 -22
  628. data/spec/support/authorization.rb +0 -1
  629. data/spec/support/constraints.rb +0 -1
  630. data/spec/support/expectations.rb +0 -1
  631. data/spec/support/macros.rb +31 -1
  632. data/spec/support/models/account.rb +1 -2
  633. data/spec/support/models/acolyte.rb +0 -1
  634. data/spec/support/models/actor.rb +0 -1
  635. data/spec/support/models/actress.rb +0 -1
  636. data/spec/support/models/address.rb +0 -1
  637. data/spec/support/models/address_component.rb +0 -1
  638. data/spec/support/models/address_number.rb +0 -1
  639. data/spec/support/models/agency.rb +0 -1
  640. data/spec/support/models/agent.rb +0 -1
  641. data/spec/support/models/album.rb +0 -1
  642. data/spec/support/models/alert.rb +0 -1
  643. data/spec/support/models/animal.rb +0 -1
  644. data/spec/support/models/answer.rb +0 -1
  645. data/spec/support/models/appointment.rb +0 -1
  646. data/spec/support/models/armrest.rb +0 -1
  647. data/spec/support/models/array_field.rb +0 -1
  648. data/spec/support/models/article.rb +0 -1
  649. data/spec/support/models/artist.rb +2 -1
  650. data/spec/support/models/artwork.rb +0 -1
  651. data/spec/support/models/audio.rb +0 -1
  652. data/spec/support/models/augmentation.rb +0 -1
  653. data/spec/support/models/author.rb +0 -1
  654. data/spec/support/models/baby.rb +0 -1
  655. data/spec/support/models/band.rb +4 -1
  656. data/spec/support/models/bar.rb +0 -1
  657. data/spec/support/models/basic.rb +0 -1
  658. data/spec/support/models/bed.rb +0 -1
  659. data/spec/support/models/big_palette.rb +0 -1
  660. data/spec/support/models/birthday.rb +0 -1
  661. data/spec/support/models/bolt.rb +0 -1
  662. data/spec/support/models/bomb.rb +0 -1
  663. data/spec/support/models/book.rb +0 -1
  664. data/spec/support/models/breed.rb +0 -1
  665. data/spec/support/models/browser.rb +0 -1
  666. data/spec/support/models/building.rb +0 -1
  667. data/spec/support/models/building_address.rb +0 -1
  668. data/spec/support/models/bus.rb +0 -1
  669. data/spec/support/models/business.rb +0 -1
  670. data/spec/support/models/callback_test.rb +0 -1
  671. data/spec/support/models/canvas.rb +0 -1
  672. data/spec/support/models/car.rb +0 -1
  673. data/spec/support/models/cat.rb +0 -1
  674. data/spec/support/models/category.rb +0 -1
  675. data/spec/support/models/child.rb +0 -1
  676. data/spec/support/models/child_doc.rb +3 -4
  677. data/spec/support/models/church.rb +0 -1
  678. data/spec/support/models/circle.rb +0 -1
  679. data/spec/support/models/circuit.rb +0 -1
  680. data/spec/support/models/circus.rb +0 -1
  681. data/spec/support/models/code.rb +0 -1
  682. data/spec/support/models/coding/pull_request.rb +0 -1
  683. data/spec/support/models/coding.rb +0 -1
  684. data/spec/support/models/comment.rb +0 -1
  685. data/spec/support/models/company.rb +0 -1
  686. data/spec/support/models/consumption_period.rb +0 -1
  687. data/spec/support/models/contextable_item.rb +0 -1
  688. data/spec/support/models/contractor.rb +0 -1
  689. data/spec/support/models/cookie.rb +0 -1
  690. data/spec/support/models/country_code.rb +2 -1
  691. data/spec/support/models/courier_job.rb +0 -1
  692. data/spec/support/models/crate.rb +0 -1
  693. data/spec/support/models/customer.rb +0 -1
  694. data/spec/support/models/customer_address.rb +0 -1
  695. data/spec/support/models/deed.rb +0 -1
  696. data/spec/support/models/definition.rb +0 -1
  697. data/spec/support/models/delegating_patient.rb +0 -1
  698. data/spec/support/models/description.rb +0 -1
  699. data/spec/support/models/dictionary.rb +0 -1
  700. data/spec/support/models/division.rb +0 -1
  701. data/spec/support/models/doctor.rb +0 -1
  702. data/spec/support/models/dog.rb +0 -1
  703. data/spec/support/models/dokument.rb +0 -1
  704. data/spec/support/models/draft.rb +0 -1
  705. data/spec/support/models/dragon.rb +0 -1
  706. data/spec/support/models/driver.rb +0 -1
  707. data/spec/support/models/drug.rb +0 -1
  708. data/spec/support/models/dungeon.rb +0 -1
  709. data/spec/support/models/edit.rb +0 -1
  710. data/spec/support/models/email.rb +0 -1
  711. data/spec/support/models/employer.rb +0 -1
  712. data/spec/support/models/entry.rb +0 -1
  713. data/spec/support/models/eraser.rb +0 -1
  714. data/spec/support/models/even.rb +0 -1
  715. data/spec/support/models/event.rb +0 -1
  716. data/spec/support/models/exhibition.rb +0 -1
  717. data/spec/support/models/exhibitor.rb +0 -1
  718. data/spec/support/models/explosion.rb +0 -1
  719. data/spec/support/models/eye.rb +0 -1
  720. data/spec/support/models/eye_bowl.rb +0 -1
  721. data/spec/support/models/face.rb +0 -1
  722. data/spec/support/models/favorite.rb +0 -1
  723. data/spec/support/models/filesystem.rb +0 -1
  724. data/spec/support/models/fire_hydrant.rb +0 -1
  725. data/spec/support/models/firefox.rb +0 -1
  726. data/spec/support/models/fish.rb +0 -1
  727. data/spec/support/models/folder.rb +0 -1
  728. data/spec/support/models/folder_item.rb +0 -1
  729. data/spec/support/models/fruits.rb +0 -1
  730. data/spec/support/models/game.rb +0 -1
  731. data/spec/support/models/ghost.rb +0 -1
  732. data/spec/support/models/guitar.rb +0 -1
  733. data/spec/support/models/hole.rb +0 -1
  734. data/spec/support/models/home.rb +0 -1
  735. data/spec/support/models/house.rb +0 -1
  736. data/spec/support/models/html_writer.rb +0 -1
  737. data/spec/support/models/id_key.rb +0 -1
  738. data/spec/support/models/idnodef.rb +0 -1
  739. data/spec/support/models/image.rb +0 -1
  740. data/spec/support/models/implant.rb +0 -1
  741. data/spec/support/models/instrument.rb +0 -1
  742. data/spec/support/models/item.rb +0 -1
  743. data/spec/support/models/jar.rb +0 -1
  744. data/spec/support/models/kaleidoscope.rb +0 -1
  745. data/spec/support/models/kangaroo.rb +0 -1
  746. data/spec/support/models/label.rb +2 -2
  747. data/spec/support/models/language.rb +0 -1
  748. data/spec/support/models/lat_lng.rb +0 -1
  749. data/spec/support/models/league.rb +0 -1
  750. data/spec/support/models/learner.rb +0 -1
  751. data/spec/support/models/line_item.rb +0 -1
  752. data/spec/support/models/location.rb +0 -1
  753. data/spec/support/models/login.rb +0 -1
  754. data/spec/support/models/manufacturer.rb +0 -1
  755. data/spec/support/models/meat.rb +0 -1
  756. data/spec/support/models/membership.rb +1 -1
  757. data/spec/support/models/message.rb +0 -1
  758. data/spec/support/models/minim.rb +0 -1
  759. data/spec/support/models/mixed_drink.rb +0 -1
  760. data/spec/support/models/mop.rb +0 -1
  761. data/spec/support/models/movie.rb +0 -1
  762. data/spec/support/models/my_hash.rb +0 -1
  763. data/spec/support/models/name.rb +0 -1
  764. data/spec/support/models/name_only.rb +0 -1
  765. data/spec/support/models/node.rb +0 -1
  766. data/spec/support/models/note.rb +0 -1
  767. data/spec/support/models/nut.rb +0 -1
  768. data/spec/support/models/odd.rb +0 -1
  769. data/spec/support/models/order.rb +2 -1
  770. data/spec/support/models/ordered_post.rb +1 -2
  771. data/spec/support/models/ordered_preference.rb +0 -1
  772. data/spec/support/models/oscar.rb +0 -1
  773. data/spec/support/models/other_owner_object.rb +0 -1
  774. data/spec/support/models/override.rb +0 -1
  775. data/spec/support/models/ownable.rb +0 -1
  776. data/spec/support/models/owner.rb +0 -1
  777. data/spec/support/models/pack.rb +0 -1
  778. data/spec/support/models/page.rb +0 -1
  779. data/spec/support/models/page_question.rb +0 -1
  780. data/spec/support/models/palette.rb +0 -1
  781. data/spec/support/models/parent.rb +0 -1
  782. data/spec/support/models/parent_doc.rb +0 -1
  783. data/spec/support/models/passport.rb +5 -1
  784. data/spec/support/models/patient.rb +0 -1
  785. data/spec/support/models/pdf_writer.rb +0 -1
  786. data/spec/support/models/pencil.rb +0 -1
  787. data/spec/support/models/person.rb +1 -1
  788. data/spec/support/models/pet.rb +0 -1
  789. data/spec/support/models/pet_owner.rb +0 -1
  790. data/spec/support/models/phone.rb +2 -2
  791. data/spec/support/models/piano.rb +0 -1
  792. data/spec/support/models/pizza.rb +0 -1
  793. data/spec/support/models/player.rb +0 -1
  794. data/spec/support/models/post.rb +0 -1
  795. data/spec/support/models/post_genre.rb +0 -1
  796. data/spec/support/models/powerup.rb +0 -1
  797. data/spec/support/models/preference.rb +0 -1
  798. data/spec/support/models/princess.rb +0 -1
  799. data/spec/support/models/product.rb +0 -1
  800. data/spec/support/models/profile.rb +0 -1
  801. data/spec/support/models/pronunciation.rb +0 -1
  802. data/spec/support/models/pub.rb +0 -1
  803. data/spec/support/models/publication/encyclopedia.rb +0 -1
  804. data/spec/support/models/publication/review.rb +0 -1
  805. data/spec/support/models/publication.rb +0 -1
  806. data/spec/support/models/purchase.rb +0 -1
  807. data/spec/support/models/purchased_item.rb +10 -0
  808. data/spec/support/models/question.rb +0 -1
  809. data/spec/support/models/quiz.rb +0 -1
  810. data/spec/support/models/rating.rb +0 -1
  811. data/spec/support/models/record.rb +0 -1
  812. data/spec/support/models/registry.rb +0 -1
  813. data/spec/support/models/role.rb +0 -1
  814. data/spec/support/models/root_category.rb +0 -1
  815. data/spec/support/models/sandwich.rb +0 -1
  816. data/spec/support/models/scheduler.rb +0 -1
  817. data/spec/support/models/scribe.rb +0 -1
  818. data/spec/support/models/sealer.rb +0 -1
  819. data/spec/support/models/seat.rb +0 -1
  820. data/spec/support/models/seo.rb +0 -1
  821. data/spec/support/models/series.rb +0 -1
  822. data/spec/support/models/server.rb +0 -1
  823. data/spec/support/models/service.rb +0 -1
  824. data/spec/support/models/shape.rb +0 -1
  825. data/spec/support/models/shelf.rb +0 -1
  826. data/spec/support/models/shipment_address.rb +0 -1
  827. data/spec/support/models/shipping_container.rb +0 -1
  828. data/spec/support/models/shipping_pack.rb +0 -1
  829. data/spec/support/models/shirt.rb +0 -1
  830. data/spec/support/models/shop.rb +0 -1
  831. data/spec/support/models/short_agent.rb +0 -1
  832. data/spec/support/models/short_quiz.rb +0 -1
  833. data/spec/support/models/simple.rb +0 -1
  834. data/spec/support/models/slave.rb +0 -1
  835. data/spec/support/models/song.rb +0 -1
  836. data/spec/support/models/sound.rb +0 -1
  837. data/spec/support/models/spacer.rb +0 -1
  838. data/spec/support/models/square.rb +0 -1
  839. data/spec/support/models/staff.rb +0 -1
  840. data/spec/support/models/store_as_dup_test1.rb +0 -1
  841. data/spec/support/models/store_as_dup_test2.rb +0 -1
  842. data/spec/support/models/store_as_dup_test3.rb +0 -1
  843. data/spec/support/models/store_as_dup_test4.rb +0 -1
  844. data/spec/support/models/strategy.rb +0 -1
  845. data/spec/support/models/sub_item.rb +0 -1
  846. data/spec/support/models/subscription.rb +0 -1
  847. data/spec/support/models/survey.rb +0 -1
  848. data/spec/support/models/symptom.rb +0 -1
  849. data/spec/support/models/tag.rb +0 -1
  850. data/spec/support/models/target.rb +0 -1
  851. data/spec/support/models/template.rb +0 -1
  852. data/spec/support/models/thing.rb +0 -1
  853. data/spec/support/models/threadlocker.rb +0 -1
  854. data/spec/support/models/title.rb +0 -1
  855. data/spec/support/models/tool.rb +0 -1
  856. data/spec/support/models/topping.rb +0 -1
  857. data/spec/support/models/toy.rb +0 -1
  858. data/spec/support/models/track.rb +0 -1
  859. data/spec/support/models/translation.rb +0 -1
  860. data/spec/support/models/tree.rb +0 -1
  861. data/spec/support/models/truck.rb +0 -1
  862. data/spec/support/models/updatable.rb +0 -1
  863. data/spec/support/models/user.rb +0 -1
  864. data/spec/support/models/user_account.rb +0 -1
  865. data/spec/support/models/validation_callback.rb +0 -1
  866. data/spec/support/models/vehicle.rb +0 -1
  867. data/spec/support/models/version.rb +0 -1
  868. data/spec/support/models/vertex.rb +0 -1
  869. data/spec/support/models/vet_visit.rb +0 -1
  870. data/spec/support/models/video.rb +0 -1
  871. data/spec/support/models/video_game.rb +0 -1
  872. data/spec/support/models/washer.rb +0 -1
  873. data/spec/support/models/weapon.rb +0 -1
  874. data/spec/support/models/wiki_page.rb +0 -1
  875. data/spec/support/models/word.rb +0 -1
  876. data/spec/support/models/word_origin.rb +0 -1
  877. data/spec/support/models/writer.rb +0 -1
  878. data/spec/support/schema_maps/schema_map_aws.json +17 -0
  879. data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
  880. data/spec/support/schema_maps/schema_map_azure.json +17 -0
  881. data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
  882. data/spec/support/schema_maps/schema_map_gcp.json +17 -0
  883. data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
  884. data/spec/support/schema_maps/schema_map_kmip.json +17 -0
  885. data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
  886. data/spec/support/schema_maps/schema_map_local.json +18 -0
  887. data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
  888. data/spec/support/shared/time.rb +0 -1
  889. data/spec/support/spec_config.rb +7 -1
  890. data.tar.gz.sig +0 -0
  891. metadata +51 -12
  892. metadata.gz.sig +0 -0
  893. data/lib/support/ruby_version.rb +0 -29
@@ -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
@@ -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,7 +2236,7 @@ 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
  let!(:post1) { person.posts.create!(title: "Testing") }
@@ -2241,12 +2266,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2241
2266
  context "when conditions are not provided" do
2242
2267
 
2243
2268
  let(:person) do
2244
- Person.create
2269
+ Person.create!
2245
2270
  end
2246
2271
 
2247
2272
  before do
2248
- person.posts.create(title: "Testing")
2249
- person.posts.create(title: "Test")
2273
+ person.posts.create!(title: "Testing")
2274
+ person.posts.create!(title: "Test")
2250
2275
  end
2251
2276
 
2252
2277
  it "removes the correct posts" do
@@ -2275,7 +2300,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2275
2300
  context "when conditions are provided" do
2276
2301
 
2277
2302
  let(:movie) do
2278
- Movie.create(title: "Bladerunner")
2303
+ Movie.create!(title: "Bladerunner")
2279
2304
  end
2280
2305
 
2281
2306
  let!(:rating1) { movie.ratings.create!(value: 1) }
@@ -2304,12 +2329,12 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2304
2329
  context "when conditions are not provided" do
2305
2330
 
2306
2331
  let(:movie) do
2307
- Movie.create(title: "Bladerunner")
2332
+ Movie.create!(title: "Bladerunner")
2308
2333
  end
2309
2334
 
2310
2335
  before do
2311
- movie.ratings.create(value: 1)
2312
- movie.ratings.create(value: 2)
2336
+ movie.ratings.create!(value: 1)
2337
+ movie.ratings.create!(value: 2)
2313
2338
  end
2314
2339
 
2315
2340
  it "removes the correct ratings" do
@@ -2345,13 +2370,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2345
2370
  describe "#exists?" do
2346
2371
 
2347
2372
  let!(:person) do
2348
- Person.create
2373
+ Person.create!
2349
2374
  end
2350
2375
 
2351
2376
  context "when documents exist in the database" do
2352
2377
 
2353
2378
  before do
2354
- person.posts.create
2379
+ person.posts.create!
2355
2380
  end
2356
2381
 
2357
2382
  it "returns true" do
@@ -2482,15 +2507,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2482
2507
  context "when the association is not polymorphic" do
2483
2508
 
2484
2509
  let(:person) do
2485
- Person.create
2510
+ Person.create!
2486
2511
  end
2487
2512
 
2488
2513
  let!(:post_one) do
2489
- person.posts.create(title: "Test")
2514
+ person.posts.create!(title: "Test")
2490
2515
  end
2491
2516
 
2492
2517
  let!(:post_two) do
2493
- person.posts.create(title: "OMG I has associations")
2518
+ person.posts.create!(title: "OMG I has associations")
2494
2519
  end
2495
2520
 
2496
2521
  context "when providing an id" do
@@ -2509,7 +2534,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2509
2534
  context "when the id matches but is not scoped to the association" do
2510
2535
 
2511
2536
  let(:post) do
2512
- Post.create(title: "Unscoped")
2537
+ Post.create!(title: "Unscoped")
2513
2538
  end
2514
2539
 
2515
2540
  it "raises an error" do
@@ -2608,15 +2633,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2608
2633
  context "when the association is polymorphic" do
2609
2634
 
2610
2635
  let(:movie) do
2611
- Movie.create
2636
+ Movie.create!
2612
2637
  end
2613
2638
 
2614
2639
  let!(:rating_one) do
2615
- movie.ratings.create(value: 1)
2640
+ movie.ratings.create!(value: 1)
2616
2641
  end
2617
2642
 
2618
2643
  let!(:rating_two) do
2619
- movie.ratings.create(value: 5)
2644
+ movie.ratings.create!(value: 5)
2620
2645
  end
2621
2646
 
2622
2647
  context "when providing an id" do
@@ -2725,6 +2750,44 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2725
2750
  end
2726
2751
  end
2727
2752
  end
2753
+
2754
+ context "with block" do
2755
+ let!(:author) do
2756
+ Person.create!(title: 'Person')
2757
+ end
2758
+
2759
+ let!(:post_one) do
2760
+ author.posts.create!(title: 'post one')
2761
+ end
2762
+
2763
+ let!(:post_two) do
2764
+ author.posts.create!(title: 'post two')
2765
+ end
2766
+
2767
+ it "finds one" do
2768
+ expect(
2769
+ author.posts.find do |post|
2770
+ post.title == 'post one'
2771
+ end
2772
+ ).to be_a(Post)
2773
+ end
2774
+
2775
+ it "returns first match of multiple" do
2776
+ expect(
2777
+ author.posts.find do |post|
2778
+ ['post one', 'post two'].include?(post.title)
2779
+ end
2780
+ ).to eq(post_one)
2781
+ end
2782
+
2783
+ it "returns nil when not found" do
2784
+ expect(
2785
+ author.posts.find do |post|
2786
+ post.title == 'non exiting one'
2787
+ end
2788
+ ).to be_nil
2789
+ end
2790
+ end
2728
2791
  end
2729
2792
 
2730
2793
  describe "#find_or_create_by" do
@@ -2732,11 +2795,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2732
2795
  context "when the association is not polymorphic" do
2733
2796
 
2734
2797
  let(:person) do
2735
- Person.create
2798
+ Person.create!
2736
2799
  end
2737
2800
 
2738
2801
  let!(:post) do
2739
- person.posts.create(title: "Testing")
2802
+ person.posts.create!(title: "Testing")
2740
2803
  end
2741
2804
 
2742
2805
  context "when the document exists" do
@@ -2805,11 +2868,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2805
2868
  context "when the association is polymorphic" do
2806
2869
 
2807
2870
  let(:movie) do
2808
- Movie.create
2871
+ Movie.create!
2809
2872
  end
2810
2873
 
2811
2874
  let!(:rating) do
2812
- movie.ratings.create(value: 1)
2875
+ movie.ratings.create!(value: 1)
2813
2876
  end
2814
2877
 
2815
2878
  context "when the document exists" do
@@ -2853,11 +2916,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2853
2916
  context "when the association is not polymorphic" do
2854
2917
 
2855
2918
  let(:person) do
2856
- Person.create
2919
+ Person.create!
2857
2920
  end
2858
2921
 
2859
2922
  let!(:post) do
2860
- person.posts.create(title: "Testing")
2923
+ person.posts.create!(title: "Testing")
2861
2924
  end
2862
2925
 
2863
2926
  context "when the document exists" do
@@ -2926,11 +2989,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2926
2989
  context "when the association is polymorphic" do
2927
2990
 
2928
2991
  let(:movie) do
2929
- Movie.create
2992
+ Movie.create!
2930
2993
  end
2931
2994
 
2932
2995
  let!(:rating) do
2933
- movie.ratings.create(value: 1)
2996
+ movie.ratings.create!(value: 1)
2934
2997
  end
2935
2998
 
2936
2999
  context "when the document exists" do
@@ -2983,11 +3046,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
2983
3046
  context "when the association is not polymorphic" do
2984
3047
 
2985
3048
  let(:person) do
2986
- Person.create
3049
+ Person.create!
2987
3050
  end
2988
3051
 
2989
3052
  let!(:post) do
2990
- person.posts.create(title: "Testing")
3053
+ person.posts.create!(title: "Testing")
2991
3054
  end
2992
3055
 
2993
3056
  context "when the document exists" do
@@ -3026,11 +3089,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3026
3089
  context "when the association is polymorphic" do
3027
3090
 
3028
3091
  let(:movie) do
3029
- Movie.create
3092
+ Movie.create!
3030
3093
  end
3031
3094
 
3032
3095
  let!(:rating) do
3033
- movie.ratings.create(value: 1)
3096
+ movie.ratings.create!(value: 1)
3034
3097
  end
3035
3098
 
3036
3099
  context "when the document exists" do
@@ -3120,15 +3183,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3120
3183
  describe "#max" do
3121
3184
 
3122
3185
  let(:person) do
3123
- Person.create
3186
+ Person.create!
3124
3187
  end
3125
3188
 
3126
3189
  let(:post_one) do
3127
- Post.create(rating: 5)
3190
+ Post.create!(rating: 5)
3128
3191
  end
3129
3192
 
3130
3193
  let(:post_two) do
3131
- Post.create(rating: 10)
3194
+ Post.create!(rating: 10)
3132
3195
  end
3133
3196
 
3134
3197
  before do
@@ -3149,15 +3212,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3149
3212
  describe "#max_by" do
3150
3213
 
3151
3214
  let(:person) do
3152
- Person.create
3215
+ Person.create!
3153
3216
  end
3154
3217
 
3155
3218
  let(:post_one) do
3156
- Post.create(rating: 5)
3219
+ Post.create!(rating: 5)
3157
3220
  end
3158
3221
 
3159
3222
  let(:post_two) do
3160
- Post.create(rating: 10)
3223
+ Post.create!(rating: 10)
3161
3224
  end
3162
3225
 
3163
3226
  before do
@@ -3176,15 +3239,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3176
3239
  describe "#method_missing" do
3177
3240
 
3178
3241
  let!(:person) do
3179
- Person.create
3242
+ Person.create!
3180
3243
  end
3181
3244
 
3182
3245
  let!(:post_one) do
3183
- person.posts.create(title: "First", content: "Posting")
3246
+ person.posts.create!(title: "First", content: "Posting")
3184
3247
  end
3185
3248
 
3186
3249
  let!(:post_two) do
3187
- person.posts.create(title: "Second", content: "Testing")
3250
+ person.posts.create!(title: "Second", content: "Testing")
3188
3251
  end
3189
3252
 
3190
3253
  context "when providing a single criteria" do
@@ -3251,15 +3314,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3251
3314
  describe "#min" do
3252
3315
 
3253
3316
  let(:person) do
3254
- Person.create
3317
+ Person.create!
3255
3318
  end
3256
3319
 
3257
3320
  let(:post_one) do
3258
- Post.create(rating: 5)
3321
+ Post.create!(rating: 5)
3259
3322
  end
3260
3323
 
3261
3324
  let(:post_two) do
3262
- Post.create(rating: 10)
3325
+ Post.create!(rating: 10)
3263
3326
  end
3264
3327
 
3265
3328
  before do
@@ -3280,15 +3343,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3280
3343
  describe "#min_by" do
3281
3344
 
3282
3345
  let(:person) do
3283
- Person.create
3346
+ Person.create!
3284
3347
  end
3285
3348
 
3286
3349
  let(:post_one) do
3287
- Post.create(rating: 5)
3350
+ Post.create!(rating: 5)
3288
3351
  end
3289
3352
 
3290
3353
  let(:post_two) do
3291
- Post.create(rating: 10)
3354
+ Post.create!(rating: 10)
3292
3355
  end
3293
3356
 
3294
3357
  before do
@@ -3309,15 +3372,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3309
3372
  context "when the inverse has not been loaded" do
3310
3373
 
3311
3374
  let(:person) do
3312
- Person.create
3375
+ Person.create!
3313
3376
  end
3314
3377
 
3315
3378
  let!(:post_one) do
3316
- person.posts.create(title: "One")
3379
+ person.posts.create!(title: "One")
3317
3380
  end
3318
3381
 
3319
3382
  let!(:post_two) do
3320
- person.posts.create(title: "Two")
3383
+ person.posts.create!(title: "Two")
3321
3384
  end
3322
3385
 
3323
3386
  let(:from_db) do
@@ -3346,15 +3409,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3346
3409
  context "when the association is not polymorphic" do
3347
3410
 
3348
3411
  let(:person) do
3349
- Person.create
3412
+ Person.create!
3350
3413
  end
3351
3414
 
3352
3415
  let!(:post_one) do
3353
- person.posts.create(title: "One")
3416
+ person.posts.create!(title: "One")
3354
3417
  end
3355
3418
 
3356
3419
  let!(:post_two) do
3357
- person.posts.create(title: "Two")
3420
+ person.posts.create!(title: "Two")
3358
3421
  end
3359
3422
 
3360
3423
  before do
@@ -3392,15 +3455,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3392
3455
  context "when the association is polymorphic" do
3393
3456
 
3394
3457
  let(:movie) do
3395
- Movie.create(title: "Oldboy")
3458
+ Movie.create!(title: "Oldboy")
3396
3459
  end
3397
3460
 
3398
3461
  let!(:rating_one) do
3399
- movie.ratings.create(value: 10)
3462
+ movie.ratings.create!(value: 10)
3400
3463
  end
3401
3464
 
3402
3465
  let!(:rating_two) do
3403
- movie.ratings.create(value: 9)
3466
+ movie.ratings.create!(value: 9)
3404
3467
  end
3405
3468
 
3406
3469
  before do
@@ -3486,13 +3549,13 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3486
3549
  describe "##{method}" do
3487
3550
 
3488
3551
  let(:movie) do
3489
- Movie.create
3552
+ Movie.create!
3490
3553
  end
3491
3554
 
3492
3555
  context "when documents have been persisted" do
3493
3556
 
3494
3557
  let!(:rating) do
3495
- movie.ratings.create(value: 1)
3558
+ movie.ratings.create!(value: 1)
3496
3559
  end
3497
3560
 
3498
3561
  it "returns 1" do
@@ -3504,7 +3567,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3504
3567
 
3505
3568
  before do
3506
3569
  movie.ratings.build(value: 1)
3507
- movie.ratings.create(value: 2)
3570
+ movie.ratings.create!(value: 2)
3508
3571
  end
3509
3572
 
3510
3573
  it "returns the total number of documents" do
@@ -3519,15 +3582,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3519
3582
  context "when the association has no default scope" do
3520
3583
 
3521
3584
  let!(:person) do
3522
- Person.create
3585
+ Person.create!
3523
3586
  end
3524
3587
 
3525
3588
  let!(:post_one) do
3526
- person.posts.create(title: "first")
3589
+ person.posts.create!(title: "first")
3527
3590
  end
3528
3591
 
3529
3592
  let!(:post_two) do
3530
- Post.create(title: "second")
3593
+ Post.create!(title: "second")
3531
3594
  end
3532
3595
 
3533
3596
  let(:unscoped) do
@@ -3542,15 +3605,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3542
3605
  context "when the association has a default scope" do
3543
3606
 
3544
3607
  let!(:church) do
3545
- Church.create
3608
+ Church.create!
3546
3609
  end
3547
3610
 
3548
3611
  let!(:acolyte_one) do
3549
- church.acolytes.create(name: "first")
3612
+ church.acolytes.create!(name: "first")
3550
3613
  end
3551
3614
 
3552
3615
  let!(:acolyte_two) do
3553
- Acolyte.create(name: "second")
3616
+ Acolyte.create!(name: "second")
3554
3617
  end
3555
3618
 
3556
3619
  let(:unscoped) do
@@ -3570,19 +3633,19 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3570
3633
  context "when the association has an order defined" do
3571
3634
 
3572
3635
  let(:person) do
3573
- Person.create
3636
+ Person.create!
3574
3637
  end
3575
3638
 
3576
3639
  let(:post_one) do
3577
- OrderedPost.create(rating: 10, title: '1')
3640
+ OrderedPost.create!(rating: 10, title: '1')
3578
3641
  end
3579
3642
 
3580
3643
  let(:post_two) do
3581
- OrderedPost.create(rating: 20, title: '2')
3644
+ OrderedPost.create!(rating: 20, title: '2')
3582
3645
  end
3583
3646
 
3584
3647
  let(:post_three) do
3585
- OrderedPost.create(rating: 20, title: '3')
3648
+ OrderedPost.create!(rating: 20, title: '3')
3586
3649
  end
3587
3650
 
3588
3651
  before do
@@ -3596,7 +3659,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3596
3659
  )
3597
3660
  end
3598
3661
 
3599
- it "chaining order criterias" do
3662
+ it "chaining order criteria" do
3600
3663
  expect(person.ordered_posts.order_by(:title.desc).to_a).to eq(
3601
3664
  [post_three, post_two, post_one]
3602
3665
  )
@@ -3606,15 +3669,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3606
3669
  context "when reloading the association" do
3607
3670
 
3608
3671
  let!(:person) do
3609
- Person.create
3672
+ Person.create!
3610
3673
  end
3611
3674
 
3612
3675
  let!(:post_one) do
3613
- Post.create(title: "one")
3676
+ Post.create!(title: "one")
3614
3677
  end
3615
3678
 
3616
3679
  let!(:post_two) do
3617
- Post.create(title: "two")
3680
+ Post.create!(title: "two")
3618
3681
  end
3619
3682
 
3620
3683
  before do
@@ -3660,7 +3723,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3660
3723
  context "when the parent is using integer ids" do
3661
3724
 
3662
3725
  let(:jar) do
3663
- Jar.create do |doc|
3726
+ Jar.create! do |doc|
3664
3727
  doc._id = 1
3665
3728
  end
3666
3729
  end
@@ -3773,8 +3836,8 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3773
3836
 
3774
3837
  before do
3775
3838
  artist.albums << album
3776
- album.save
3777
- artist.save
3839
+ album.save!
3840
+ artist.save!
3778
3841
  expect(artist).not_to receive(:after_add_album)
3779
3842
  end
3780
3843
 
@@ -3938,15 +4001,15 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3938
4001
  context "when executing a criteria call on an ordered association" do
3939
4002
 
3940
4003
  let(:person) do
3941
- Person.create
4004
+ Person.create!
3942
4005
  end
3943
4006
 
3944
4007
  let!(:post_one) do
3945
- person.ordered_posts.create(rating: 1)
4008
+ person.ordered_posts.create!(rating: 1)
3946
4009
  end
3947
4010
 
3948
4011
  let!(:post_two) do
3949
- person.ordered_posts.create(rating: 5)
4012
+ person.ordered_posts.create!(rating: 5)
3950
4013
  end
3951
4014
 
3952
4015
  let(:criteria) do
@@ -3961,11 +4024,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3961
4024
  context "when accessing a scope named open" do
3962
4025
 
3963
4026
  let(:person) do
3964
- Person.create
4027
+ Person.create!
3965
4028
  end
3966
4029
 
3967
4030
  let!(:post) do
3968
- person.posts.create(title: "open")
4031
+ person.posts.create!(title: "open")
3969
4032
  end
3970
4033
 
3971
4034
  it "returns the appropriate documents" do
@@ -3976,11 +4039,11 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
3976
4039
  context "when accessing a association named parent" do
3977
4040
 
3978
4041
  let!(:parent) do
3979
- Odd.create(name: "odd parent")
4042
+ Odd.create!(name: "odd parent")
3980
4043
  end
3981
4044
 
3982
4045
  let(:child) do
3983
- Even.create(parent_id: parent.id, name: "original even child")
4046
+ Even.create!(parent_id: parent.id, name: "original even child")
3984
4047
  end
3985
4048
 
3986
4049
  it "updates the child after accessing the parent" do
@@ -4017,7 +4080,7 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
4017
4080
  end
4018
4081
 
4019
4082
  it 'saves the document correctly' do
4020
- expect(agent.save).to be(true)
4083
+ expect(agent.save!).to be(true)
4021
4084
  end
4022
4085
  end
4023
4086
 
@@ -4033,8 +4096,8 @@ describe Mongoid::Association::Referenced::HasMany::Proxy do
4033
4096
 
4034
4097
  before do
4035
4098
  agent.same_name = band
4036
- agent.save
4037
- band.save
4099
+ agent.save!
4100
+ band.save!
4038
4101
  band.reload
4039
4102
  end
4040
4103