mongoid 7.3.2 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (886) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -17
  4. data/README.md +2 -2
  5. data/lib/config/locales/en.yml +30 -16
  6. data/lib/mongoid/association/accessors.rb +0 -27
  7. data/lib/mongoid/association/bindable.rb +0 -21
  8. data/lib/mongoid/association/builders.rb +0 -9
  9. data/lib/mongoid/association/constrainable.rb +0 -3
  10. data/lib/mongoid/association/depending.rb +0 -7
  11. data/lib/mongoid/association/eager_loadable.rb +0 -3
  12. data/lib/mongoid/association/embedded/batchable.rb +11 -39
  13. data/lib/mongoid/association/embedded/cyclic.rb +2 -11
  14. data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
  15. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
  16. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
  17. data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
  18. data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
  19. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
  20. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
  21. data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
  22. data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
  23. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
  24. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
  25. data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
  26. data/lib/mongoid/association/embedded.rb +0 -1
  27. data/lib/mongoid/association/macros.rb +6 -5
  28. data/lib/mongoid/association/many.rb +0 -17
  29. data/lib/mongoid/association/marshalable.rb +0 -5
  30. data/lib/mongoid/association/nested/many.rb +0 -11
  31. data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
  32. data/lib/mongoid/association/nested/one.rb +1 -16
  33. data/lib/mongoid/association/nested.rb +0 -3
  34. data/lib/mongoid/association/one.rb +1 -10
  35. data/lib/mongoid/association/options.rb +0 -33
  36. data/lib/mongoid/association/proxy.rb +0 -21
  37. data/lib/mongoid/association/referenced/auto_save.rb +0 -9
  38. data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
  39. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
  40. data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
  41. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
  42. data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
  43. data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
  44. data/lib/mongoid/association/referenced/eager.rb +3 -24
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
  50. data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
  51. data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
  52. data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
  53. data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
  54. data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
  55. data/lib/mongoid/association/referenced/has_many.rb +12 -39
  56. data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
  57. data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
  58. data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
  59. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
  60. data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
  61. data/lib/mongoid/association/referenced/has_one.rb +9 -32
  62. data/lib/mongoid/association/referenced/syncable.rb +0 -17
  63. data/lib/mongoid/association/referenced.rb +0 -1
  64. data/lib/mongoid/association/reflections.rb +0 -1
  65. data/lib/mongoid/association/relatable.rb +2 -61
  66. data/lib/mongoid/association.rb +0 -17
  67. data/lib/mongoid/atomic/modifiers.rb +4 -51
  68. data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
  69. data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
  70. data/lib/mongoid/atomic/paths/embedded.rb +0 -3
  71. data/lib/mongoid/atomic/paths/root.rb +0 -5
  72. data/lib/mongoid/atomic/paths.rb +0 -1
  73. data/lib/mongoid/atomic.rb +27 -44
  74. data/lib/mongoid/attributes/dynamic.rb +0 -17
  75. data/lib/mongoid/attributes/nested.rb +0 -5
  76. data/lib/mongoid/attributes/processing.rb +1 -18
  77. data/lib/mongoid/attributes/projector.rb +0 -1
  78. data/lib/mongoid/attributes/readonly.rb +0 -5
  79. data/lib/mongoid/attributes.rb +0 -33
  80. data/lib/mongoid/cacheable.rb +1 -6
  81. data/lib/mongoid/changeable.rb +3 -59
  82. data/lib/mongoid/clients/factory.rb +0 -7
  83. data/lib/mongoid/clients/options.rb +0 -5
  84. data/lib/mongoid/clients/sessions.rb +0 -7
  85. data/lib/mongoid/clients/storage_options.rb +0 -7
  86. data/lib/mongoid/clients/validators/storage.rb +0 -9
  87. data/lib/mongoid/clients/validators.rb +0 -1
  88. data/lib/mongoid/clients.rb +0 -9
  89. data/lib/mongoid/composable.rb +0 -7
  90. data/lib/mongoid/config/environment.rb +13 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +7 -27
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +42 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +11 -7
  146. data/lib/mongoid/criteria/queryable.rb +0 -7
  147. data/lib/mongoid/criteria/scopable.rb +25 -19
  148. data/lib/mongoid/criteria.rb +0 -57
  149. data/lib/mongoid/document.rb +3 -53
  150. data/lib/mongoid/equality.rb +26 -10
  151. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  152. data/lib/mongoid/errors/callback.rb +0 -3
  153. data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
  154. data/lib/mongoid/errors/delete_restriction.rb +0 -3
  155. data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
  156. data/lib/mongoid/errors/document_not_found.rb +0 -9
  157. data/lib/mongoid/errors/eager_load.rb +0 -3
  158. data/lib/mongoid/errors/empty_config_file.rb +25 -0
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
  160. data/lib/mongoid/errors/invalid_collection.rb +0 -1
  161. data/lib/mongoid/errors/invalid_config_file.rb +25 -0
  162. data/lib/mongoid/errors/invalid_config_option.rb +0 -3
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
  164. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
  165. data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
  166. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
  167. data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
  168. data/lib/mongoid/errors/invalid_field.rb +0 -5
  169. data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
  170. data/lib/mongoid/errors/invalid_field_option.rb +0 -3
  171. data/lib/mongoid/errors/invalid_find.rb +0 -3
  172. data/lib/mongoid/errors/invalid_includes.rb +0 -3
  173. data/lib/mongoid/errors/invalid_index.rb +0 -3
  174. data/lib/mongoid/errors/invalid_options.rb +0 -3
  175. data/lib/mongoid/errors/invalid_path.rb +0 -3
  176. data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
  177. data/lib/mongoid/errors/invalid_query.rb +0 -1
  178. data/lib/mongoid/errors/invalid_relation.rb +0 -7
  179. data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
  180. data/lib/mongoid/errors/invalid_scope.rb +0 -3
  181. data/lib/mongoid/errors/invalid_session_use.rb +1 -6
  182. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
  183. data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
  184. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
  185. data/lib/mongoid/errors/invalid_time.rb +0 -3
  186. data/lib/mongoid/errors/invalid_value.rb +0 -1
  187. data/lib/mongoid/errors/inverse_not_found.rb +0 -3
  188. data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
  189. data/lib/mongoid/errors/mixed_relations.rb +0 -3
  190. data/lib/mongoid/errors/mongoid_error.rb +0 -9
  191. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
  192. data/lib/mongoid/errors/no_client_config.rb +0 -3
  193. data/lib/mongoid/errors/no_client_database.rb +0 -3
  194. data/lib/mongoid/errors/no_client_hosts.rb +0 -3
  195. data/lib/mongoid/errors/no_clients_config.rb +0 -3
  196. data/lib/mongoid/errors/no_default_client.rb +0 -3
  197. data/lib/mongoid/errors/no_environment.rb +0 -3
  198. data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
  199. data/lib/mongoid/errors/no_metadata.rb +0 -3
  200. data/lib/mongoid/errors/no_parent.rb +0 -3
  201. data/lib/mongoid/errors/readonly_attribute.rb +0 -3
  202. data/lib/mongoid/errors/readonly_document.rb +1 -6
  203. data/lib/mongoid/errors/scope_overwrite.rb +0 -1
  204. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
  205. data/lib/mongoid/errors/unknown_attribute.rb +0 -3
  206. data/lib/mongoid/errors/unknown_model.rb +0 -3
  207. data/lib/mongoid/errors/unsaved_document.rb +1 -2
  208. data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
  209. data/lib/mongoid/errors/validations.rb +0 -1
  210. data/lib/mongoid/errors.rb +2 -1
  211. data/lib/mongoid/evolvable.rb +0 -3
  212. data/lib/mongoid/extensions/array.rb +3 -29
  213. data/lib/mongoid/extensions/big_decimal.rb +0 -11
  214. data/lib/mongoid/extensions/boolean.rb +0 -3
  215. data/lib/mongoid/extensions/date.rb +0 -9
  216. data/lib/mongoid/extensions/date_time.rb +0 -9
  217. data/lib/mongoid/extensions/decimal128.rb +0 -5
  218. data/lib/mongoid/extensions/false_class.rb +1 -6
  219. data/lib/mongoid/extensions/float.rb +0 -7
  220. data/lib/mongoid/extensions/hash.rb +0 -27
  221. data/lib/mongoid/extensions/integer.rb +0 -9
  222. data/lib/mongoid/extensions/module.rb +0 -3
  223. data/lib/mongoid/extensions/nil_class.rb +0 -5
  224. data/lib/mongoid/extensions/object.rb +1 -40
  225. data/lib/mongoid/extensions/object_id.rb +0 -7
  226. data/lib/mongoid/extensions/range.rb +0 -11
  227. data/lib/mongoid/extensions/regexp.rb +0 -3
  228. data/lib/mongoid/extensions/set.rb +0 -7
  229. data/lib/mongoid/extensions/string.rb +1 -30
  230. data/lib/mongoid/extensions/symbol.rb +0 -7
  231. data/lib/mongoid/extensions/time.rb +0 -11
  232. data/lib/mongoid/extensions/time_with_zone.rb +13 -9
  233. data/lib/mongoid/extensions/true_class.rb +1 -6
  234. data/lib/mongoid/extensions.rb +15 -3
  235. data/lib/mongoid/factory.rb +1 -2
  236. data/lib/mongoid/fields/foreign_key.rb +0 -21
  237. data/lib/mongoid/fields/localized.rb +0 -11
  238. data/lib/mongoid/fields/standard.rb +0 -33
  239. data/lib/mongoid/fields/validators/macro.rb +0 -9
  240. data/lib/mongoid/fields/validators.rb +0 -1
  241. data/lib/mongoid/fields.rb +64 -57
  242. data/lib/mongoid/findable.rb +0 -5
  243. data/lib/mongoid/indexable/specification.rb +0 -15
  244. data/lib/mongoid/indexable/validators/options.rb +0 -7
  245. data/lib/mongoid/indexable.rb +1 -18
  246. data/lib/mongoid/inspectable.rb +1 -10
  247. data/lib/mongoid/interceptable.rb +0 -25
  248. data/lib/mongoid/loggable.rb +0 -9
  249. data/lib/mongoid/matchable.rb +0 -5
  250. data/lib/mongoid/matcher/eq_impl.rb +37 -2
  251. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
  252. data/lib/mongoid/persistable/creatable.rb +1 -20
  253. data/lib/mongoid/persistable/deletable.rb +0 -17
  254. data/lib/mongoid/persistable/destroyable.rb +0 -7
  255. data/lib/mongoid/persistable/incrementable.rb +0 -5
  256. data/lib/mongoid/persistable/logical.rb +0 -5
  257. data/lib/mongoid/persistable/poppable.rb +0 -5
  258. data/lib/mongoid/persistable/pullable.rb +0 -7
  259. data/lib/mongoid/persistable/pushable.rb +0 -7
  260. data/lib/mongoid/persistable/renamable.rb +0 -5
  261. data/lib/mongoid/persistable/savable.rb +0 -7
  262. data/lib/mongoid/persistable/settable.rb +0 -5
  263. data/lib/mongoid/persistable/unsettable.rb +0 -5
  264. data/lib/mongoid/persistable/updatable.rb +2 -17
  265. data/lib/mongoid/persistable/upsertable.rb +0 -7
  266. data/lib/mongoid/persistable.rb +0 -23
  267. data/lib/mongoid/persistence_context.rb +3 -28
  268. data/lib/mongoid/positional.rb +0 -5
  269. data/lib/mongoid/query_cache.rb +11 -34
  270. data/lib/mongoid/railtie.rb +0 -15
  271. data/lib/mongoid/railties/controller_runtime.rb +0 -1
  272. data/lib/mongoid/reloadable.rb +4 -16
  273. data/lib/mongoid/scopable.rb +6 -34
  274. data/lib/mongoid/selectable.rb +0 -9
  275. data/lib/mongoid/serializable.rb +0 -15
  276. data/lib/mongoid/shardable.rb +0 -7
  277. data/lib/mongoid/stateful.rb +0 -9
  278. data/lib/mongoid/stringified_symbol.rb +2 -3
  279. data/lib/mongoid/tasks/database.rb +1 -6
  280. data/lib/mongoid/threaded/lifecycle.rb +0 -21
  281. data/lib/mongoid/threaded.rb +0 -55
  282. data/lib/mongoid/timestamps/created/short.rb +0 -1
  283. data/lib/mongoid/timestamps/created.rb +0 -1
  284. data/lib/mongoid/timestamps/short.rb +0 -1
  285. data/lib/mongoid/timestamps/timeless.rb +0 -7
  286. data/lib/mongoid/timestamps/updated/short.rb +0 -1
  287. data/lib/mongoid/timestamps/updated.rb +0 -3
  288. data/lib/mongoid/timestamps.rb +0 -1
  289. data/lib/mongoid/touchable.rb +10 -7
  290. data/lib/mongoid/traversable.rb +64 -53
  291. data/lib/mongoid/validatable/associated.rb +0 -3
  292. data/lib/mongoid/validatable/format.rb +0 -1
  293. data/lib/mongoid/validatable/length.rb +0 -1
  294. data/lib/mongoid/validatable/localizable.rb +0 -3
  295. data/lib/mongoid/validatable/macros.rb +0 -7
  296. data/lib/mongoid/validatable/presence.rb +1 -8
  297. data/lib/mongoid/validatable/queryable.rb +0 -3
  298. data/lib/mongoid/validatable/uniqueness.rb +15 -30
  299. data/lib/mongoid/validatable.rb +1 -22
  300. data/lib/mongoid/version.rb +1 -2
  301. data/lib/mongoid.rb +0 -15
  302. data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
  303. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  304. data/lib/rails/generators/mongoid_generator.rb +0 -1
  305. data/lib/rails/mongoid.rb +0 -3
  306. data/spec/integration/app_spec.rb +0 -1
  307. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  308. data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
  309. data/spec/integration/associations/embedded_spec.rb +0 -1
  310. data/spec/integration/associations/embeds_many_spec.rb +139 -1
  311. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  312. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  314. data/spec/integration/associations/has_many_spec.rb +0 -1
  315. data/spec/integration/associations/has_one_spec.rb +0 -1
  316. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  317. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  319. data/spec/integration/associations/scope_option_spec.rb +101 -0
  320. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  321. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  322. data/spec/integration/callbacks_models.rb +12 -0
  323. data/spec/integration/callbacks_spec.rb +18 -6
  324. data/spec/integration/contextual/empty_spec.rb +141 -0
  325. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  326. data/spec/integration/criteria/date_field_spec.rb +0 -1
  327. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  328. data/spec/integration/criteria/logical_spec.rb +30 -0
  329. data/spec/integration/criteria/range_spec.rb +265 -0
  330. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  331. data/spec/integration/discriminator_key_spec.rb +0 -1
  332. data/spec/integration/discriminator_value_spec.rb +0 -1
  333. data/spec/integration/document_spec.rb +0 -1
  334. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  335. data/spec/integration/matcher_examples_spec.rb +0 -1
  336. data/spec/integration/matcher_operator_spec.rb +27 -3
  337. data/spec/integration/matcher_spec.rb +95 -1
  338. data/spec/integration/server_query_spec.rb +0 -1
  339. data/spec/integration/shardable_spec.rb +0 -1
  340. data/spec/integration/stringified_symbol_field_spec.rb +16 -3
  341. data/spec/lite_spec_helper.rb +8 -2
  342. data/spec/mongoid/association/accessors_spec.rb +44 -15
  343. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  344. data/spec/mongoid/association/builders_spec.rb +1 -2
  345. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  346. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  347. data/spec/mongoid/association/depending_spec.rb +12 -13
  348. data/spec/mongoid/association/eager_spec.rb +4 -5
  349. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  350. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  352. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  354. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  355. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
  358. data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
  359. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  360. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  364. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  365. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  368. data/spec/mongoid/association/macros_spec.rb +9 -10
  369. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  370. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  371. data/spec/mongoid/association/options_spec.rb +0 -1
  372. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  373. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  375. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  376. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  377. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
  378. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  379. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  387. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  388. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  389. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  390. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
  391. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  392. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
  393. data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
  394. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  395. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  396. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  397. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  398. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  399. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  400. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  401. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  402. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  403. data/spec/mongoid/association/reflections_spec.rb +0 -1
  404. data/spec/mongoid/association/syncable_spec.rb +31 -32
  405. data/spec/mongoid/association_spec.rb +0 -1
  406. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  407. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  411. data/spec/mongoid/atomic_spec.rb +6 -7
  412. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  413. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  414. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  415. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  416. data/spec/mongoid/attributes_spec.rb +32 -33
  417. data/spec/mongoid/cacheable_spec.rb +1 -2
  418. data/spec/mongoid/changeable_spec.rb +35 -36
  419. data/spec/mongoid/clients/factory_spec.rb +9 -4
  420. data/spec/mongoid/clients/options_spec.rb +15 -10
  421. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  422. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  423. data/spec/mongoid/clients_spec.rb +6 -7
  424. data/spec/mongoid/composable_spec.rb +0 -1
  425. data/spec/mongoid/config/environment_spec.rb +86 -9
  426. data/spec/mongoid/config/options_spec.rb +0 -1
  427. data/spec/mongoid/config_spec.rb +194 -17
  428. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  429. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  430. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  431. data/spec/mongoid/contextual/atomic_spec.rb +109 -71
  432. data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
  433. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  434. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  435. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  436. data/spec/mongoid/contextual/none_spec.rb +7 -82
  437. data/spec/mongoid/copyable_spec.rb +11 -12
  438. data/spec/mongoid/copyable_spec_models.rb +0 -1
  439. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  440. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  441. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  443. data/spec/mongoid/criteria/options_spec.rb +0 -1
  444. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  445. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  446. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  460. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  470. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  471. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  473. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  474. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  476. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  477. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  480. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  481. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  482. data/spec/mongoid/criteria_spec.rb +546 -186
  483. data/spec/mongoid/document_fields_spec.rb +0 -1
  484. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  485. data/spec/mongoid/document_query_spec.rb +0 -1
  486. data/spec/mongoid/document_spec.rb +32 -34
  487. data/spec/mongoid/equality_spec.rb +142 -41
  488. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  489. data/spec/mongoid/errors/callback_spec.rb +0 -1
  490. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  491. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  493. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  494. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
  496. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  506. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  507. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  509. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  510. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  512. data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
  513. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  514. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  522. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  524. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  525. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  526. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  527. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  528. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  529. data/spec/mongoid/errors/validations_spec.rb +0 -1
  530. data/spec/mongoid/extensions/array_spec.rb +0 -1
  531. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  532. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  533. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  534. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  537. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  538. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  539. data/spec/mongoid/extensions/float_spec.rb +0 -1
  540. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  541. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  542. data/spec/mongoid/extensions/module_spec.rb +0 -1
  543. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  544. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_spec.rb +0 -1
  546. data/spec/mongoid/extensions/range_spec.rb +0 -1
  547. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  548. data/spec/mongoid/extensions/set_spec.rb +0 -1
  549. data/spec/mongoid/extensions/string_spec.rb +2 -3
  550. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  551. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/time_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  554. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  555. data/spec/mongoid/extensions_spec.rb +14 -3
  556. data/spec/mongoid/factory_spec.rb +1 -1
  557. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  558. data/spec/mongoid/fields/localized_spec.rb +0 -1
  559. data/spec/mongoid/fields/standard_spec.rb +0 -1
  560. data/spec/mongoid/fields_spec.rb +326 -31
  561. data/spec/mongoid/findable_spec.rb +21 -22
  562. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  563. data/spec/mongoid/indexable_spec.rb +0 -1
  564. data/spec/mongoid/inspectable_spec.rb +0 -1
  565. data/spec/mongoid/interceptable_spec.rb +102 -95
  566. data/spec/mongoid/loggable_spec.rb +0 -1
  567. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  568. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  569. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  570. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  571. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  573. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  574. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  575. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  577. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  578. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  579. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  580. data/spec/mongoid/persistable/updatable_spec.rb +43 -24
  581. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  582. data/spec/mongoid/persistable_spec.rb +1 -2
  583. data/spec/mongoid/persistence_context_spec.rb +0 -1
  584. data/spec/mongoid/positional_spec.rb +0 -1
  585. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  586. data/spec/mongoid/query_cache_spec.rb +56 -10
  587. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  588. data/spec/mongoid/reloadable_spec.rb +209 -23
  589. data/spec/mongoid/scopable_spec.rb +65 -22
  590. data/spec/mongoid/selectable_spec.rb +6 -7
  591. data/spec/mongoid/serializable_spec.rb +9 -10
  592. data/spec/mongoid/shardable_spec.rb +2 -3
  593. data/spec/mongoid/stateful_spec.rb +1 -2
  594. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  595. data/spec/mongoid/tasks/database_spec.rb +0 -1
  596. data/spec/mongoid/threaded_spec.rb +2 -3
  597. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  598. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  600. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  601. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  602. data/spec/mongoid/timestamps_spec.rb +6 -7
  603. data/spec/mongoid/touchable_spec.rb +33 -20
  604. data/spec/mongoid/touchable_spec_models.rb +2 -1
  605. data/spec/mongoid/traversable_spec.rb +65 -2
  606. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  607. data/spec/mongoid/validatable/format_spec.rb +0 -1
  608. data/spec/mongoid/validatable/length_spec.rb +0 -1
  609. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  610. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  611. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  612. data/spec/mongoid/validatable_spec.rb +2 -3
  613. data/spec/mongoid_spec.rb +0 -1
  614. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  615. data/spec/rails/mongoid_spec.rb +0 -1
  616. data/spec/shared/lib/mrss/cluster_config.rb +6 -1
  617. data/spec/shared/lib/mrss/constraints.rb +23 -5
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
  620. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  621. data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
  622. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  623. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  624. data/spec/shared/share/Dockerfile.erb +27 -10
  625. data/spec/shared/shlib/distro.sh +2 -1
  626. data/spec/shared/shlib/server.sh +85 -23
  627. data/spec/shared/shlib/set_env.sh +6 -5
  628. data/spec/spec_helper.rb +12 -22
  629. data/spec/support/authorization.rb +0 -1
  630. data/spec/support/constraints.rb +0 -1
  631. data/spec/support/expectations.rb +0 -1
  632. data/spec/support/macros.rb +22 -1
  633. data/spec/support/models/account.rb +1 -2
  634. data/spec/support/models/acolyte.rb +0 -1
  635. data/spec/support/models/actor.rb +0 -1
  636. data/spec/support/models/actress.rb +0 -1
  637. data/spec/support/models/address.rb +0 -1
  638. data/spec/support/models/address_component.rb +0 -1
  639. data/spec/support/models/address_number.rb +0 -1
  640. data/spec/support/models/agency.rb +0 -1
  641. data/spec/support/models/agent.rb +0 -1
  642. data/spec/support/models/album.rb +0 -1
  643. data/spec/support/models/alert.rb +0 -1
  644. data/spec/support/models/animal.rb +0 -1
  645. data/spec/support/models/answer.rb +0 -1
  646. data/spec/support/models/appointment.rb +0 -1
  647. data/spec/support/models/armrest.rb +0 -1
  648. data/spec/support/models/array_field.rb +0 -1
  649. data/spec/support/models/article.rb +0 -1
  650. data/spec/support/models/artist.rb +2 -1
  651. data/spec/support/models/artwork.rb +0 -1
  652. data/spec/support/models/audible_sound.rb +3 -0
  653. data/spec/support/models/audio.rb +0 -1
  654. data/spec/support/models/augmentation.rb +0 -1
  655. data/spec/support/models/author.rb +0 -1
  656. data/spec/support/models/baby.rb +0 -1
  657. data/spec/support/models/band.rb +4 -1
  658. data/spec/support/models/bar.rb +0 -1
  659. data/spec/support/models/basic.rb +0 -1
  660. data/spec/support/models/bed.rb +0 -1
  661. data/spec/support/models/big_palette.rb +0 -1
  662. data/spec/support/models/birthday.rb +0 -1
  663. data/spec/support/models/bolt.rb +0 -1
  664. data/spec/support/models/bomb.rb +0 -1
  665. data/spec/support/models/book.rb +0 -1
  666. data/spec/support/models/breed.rb +0 -1
  667. data/spec/support/models/browser.rb +0 -1
  668. data/spec/support/models/building.rb +0 -1
  669. data/spec/support/models/building_address.rb +0 -1
  670. data/spec/support/models/bus.rb +0 -1
  671. data/spec/support/models/business.rb +0 -1
  672. data/spec/support/models/callback_test.rb +0 -1
  673. data/spec/support/models/canvas.rb +0 -1
  674. data/spec/support/models/car.rb +0 -1
  675. data/spec/support/models/cat.rb +0 -1
  676. data/spec/support/models/category.rb +0 -1
  677. data/spec/support/models/child.rb +0 -1
  678. data/spec/support/models/child_doc.rb +3 -4
  679. data/spec/support/models/church.rb +0 -1
  680. data/spec/support/models/circle.rb +0 -1
  681. data/spec/support/models/circuit.rb +0 -1
  682. data/spec/support/models/circus.rb +0 -1
  683. data/spec/support/models/code.rb +0 -1
  684. data/spec/support/models/coding/pull_request.rb +0 -1
  685. data/spec/support/models/coding.rb +0 -1
  686. data/spec/support/models/comment.rb +0 -1
  687. data/spec/support/models/company.rb +0 -1
  688. data/spec/support/models/consumption_period.rb +0 -1
  689. data/spec/support/models/contextable_item.rb +0 -1
  690. data/spec/support/models/contractor.rb +0 -1
  691. data/spec/support/models/cookie.rb +0 -1
  692. data/spec/support/models/country_code.rb +2 -1
  693. data/spec/support/models/courier_job.rb +0 -1
  694. data/spec/support/models/crate.rb +0 -1
  695. data/spec/support/models/customer.rb +0 -1
  696. data/spec/support/models/customer_address.rb +0 -1
  697. data/spec/support/models/deed.rb +0 -1
  698. data/spec/support/models/definition.rb +0 -1
  699. data/spec/support/models/delegating_patient.rb +0 -1
  700. data/spec/support/models/description.rb +0 -1
  701. data/spec/support/models/dictionary.rb +0 -1
  702. data/spec/support/models/division.rb +0 -1
  703. data/spec/support/models/doctor.rb +0 -1
  704. data/spec/support/models/dog.rb +0 -1
  705. data/spec/support/models/dokument.rb +0 -1
  706. data/spec/support/models/draft.rb +0 -1
  707. data/spec/support/models/dragon.rb +0 -1
  708. data/spec/support/models/driver.rb +0 -1
  709. data/spec/support/models/drug.rb +0 -1
  710. data/spec/support/models/dungeon.rb +0 -1
  711. data/spec/support/models/edit.rb +0 -1
  712. data/spec/support/models/email.rb +0 -1
  713. data/spec/support/models/employer.rb +0 -1
  714. data/spec/support/models/entry.rb +0 -1
  715. data/spec/support/models/eraser.rb +0 -1
  716. data/spec/support/models/even.rb +0 -1
  717. data/spec/support/models/event.rb +0 -1
  718. data/spec/support/models/exhibition.rb +0 -1
  719. data/spec/support/models/exhibitor.rb +0 -1
  720. data/spec/support/models/explosion.rb +0 -1
  721. data/spec/support/models/eye.rb +0 -1
  722. data/spec/support/models/eye_bowl.rb +0 -1
  723. data/spec/support/models/face.rb +0 -1
  724. data/spec/support/models/favorite.rb +0 -1
  725. data/spec/support/models/filesystem.rb +0 -1
  726. data/spec/support/models/fire_hydrant.rb +0 -1
  727. data/spec/support/models/firefox.rb +0 -1
  728. data/spec/support/models/fish.rb +0 -1
  729. data/spec/support/models/folder.rb +0 -1
  730. data/spec/support/models/folder_item.rb +0 -1
  731. data/spec/support/models/fruits.rb +0 -1
  732. data/spec/support/models/game.rb +0 -1
  733. data/spec/support/models/ghost.rb +0 -1
  734. data/spec/support/models/guitar.rb +0 -1
  735. data/spec/support/models/hole.rb +0 -1
  736. data/spec/support/models/home.rb +0 -1
  737. data/spec/support/models/house.rb +0 -1
  738. data/spec/support/models/html_writer.rb +0 -1
  739. data/spec/support/models/id_key.rb +0 -1
  740. data/spec/support/models/idnodef.rb +0 -1
  741. data/spec/support/models/image.rb +0 -1
  742. data/spec/support/models/implant.rb +0 -1
  743. data/spec/support/models/instrument.rb +0 -1
  744. data/spec/support/models/item.rb +0 -1
  745. data/spec/support/models/jar.rb +0 -1
  746. data/spec/support/models/kaleidoscope.rb +0 -1
  747. data/spec/support/models/kangaroo.rb +0 -1
  748. data/spec/support/models/label.rb +2 -2
  749. data/spec/support/models/language.rb +0 -1
  750. data/spec/support/models/lat_lng.rb +0 -1
  751. data/spec/support/models/league.rb +0 -1
  752. data/spec/support/models/learner.rb +0 -1
  753. data/spec/support/models/line_item.rb +0 -1
  754. data/spec/support/models/location.rb +0 -1
  755. data/spec/support/models/login.rb +0 -1
  756. data/spec/support/models/manufacturer.rb +0 -1
  757. data/spec/support/models/meat.rb +0 -1
  758. data/spec/support/models/membership.rb +0 -1
  759. data/spec/support/models/message.rb +0 -1
  760. data/spec/support/models/minim.rb +0 -1
  761. data/spec/support/models/mixed_drink.rb +0 -1
  762. data/spec/support/models/mop.rb +0 -1
  763. data/spec/support/models/movie.rb +0 -1
  764. data/spec/support/models/my_hash.rb +0 -1
  765. data/spec/support/models/name.rb +0 -1
  766. data/spec/support/models/name_only.rb +0 -1
  767. data/spec/support/models/node.rb +0 -1
  768. data/spec/support/models/note.rb +0 -1
  769. data/spec/support/models/nut.rb +0 -1
  770. data/spec/support/models/odd.rb +0 -1
  771. data/spec/support/models/order.rb +2 -1
  772. data/spec/support/models/ordered_post.rb +1 -2
  773. data/spec/support/models/ordered_preference.rb +0 -1
  774. data/spec/support/models/oscar.rb +0 -1
  775. data/spec/support/models/other_owner_object.rb +0 -1
  776. data/spec/support/models/override.rb +0 -1
  777. data/spec/support/models/ownable.rb +0 -1
  778. data/spec/support/models/owner.rb +0 -1
  779. data/spec/support/models/pack.rb +0 -1
  780. data/spec/support/models/page.rb +0 -1
  781. data/spec/support/models/page_question.rb +0 -1
  782. data/spec/support/models/palette.rb +0 -1
  783. data/spec/support/models/parent.rb +0 -1
  784. data/spec/support/models/parent_doc.rb +0 -1
  785. data/spec/support/models/passport.rb +5 -1
  786. data/spec/support/models/patient.rb +0 -1
  787. data/spec/support/models/pdf_writer.rb +0 -1
  788. data/spec/support/models/pencil.rb +0 -1
  789. data/spec/support/models/person.rb +1 -1
  790. data/spec/support/models/pet.rb +0 -1
  791. data/spec/support/models/pet_owner.rb +0 -1
  792. data/spec/support/models/phone.rb +2 -2
  793. data/spec/support/models/piano.rb +0 -1
  794. data/spec/support/models/pizza.rb +0 -1
  795. data/spec/support/models/player.rb +0 -1
  796. data/spec/support/models/post.rb +0 -1
  797. data/spec/support/models/post_genre.rb +0 -1
  798. data/spec/support/models/powerup.rb +0 -1
  799. data/spec/support/models/preference.rb +0 -1
  800. data/spec/support/models/princess.rb +0 -1
  801. data/spec/support/models/product.rb +0 -1
  802. data/spec/support/models/profile.rb +0 -1
  803. data/spec/support/models/pronunciation.rb +0 -1
  804. data/spec/support/models/pub.rb +0 -1
  805. data/spec/support/models/publication/encyclopedia.rb +0 -1
  806. data/spec/support/models/publication/review.rb +0 -1
  807. data/spec/support/models/publication.rb +0 -1
  808. data/spec/support/models/purchase.rb +0 -1
  809. data/spec/support/models/purchased_item.rb +10 -0
  810. data/spec/support/models/question.rb +0 -1
  811. data/spec/support/models/quiz.rb +0 -1
  812. data/spec/support/models/rating.rb +0 -1
  813. data/spec/support/models/record.rb +0 -1
  814. data/spec/support/models/registry.rb +0 -1
  815. data/spec/support/models/role.rb +0 -1
  816. data/spec/support/models/root_category.rb +0 -1
  817. data/spec/support/models/sandwich.rb +0 -1
  818. data/spec/support/models/scheduler.rb +0 -1
  819. data/spec/support/models/scribe.rb +0 -1
  820. data/spec/support/models/sealer.rb +0 -1
  821. data/spec/support/models/seat.rb +0 -1
  822. data/spec/support/models/seo.rb +0 -1
  823. data/spec/support/models/series.rb +0 -1
  824. data/spec/support/models/server.rb +0 -1
  825. data/spec/support/models/service.rb +0 -1
  826. data/spec/support/models/shape.rb +0 -1
  827. data/spec/support/models/shelf.rb +0 -1
  828. data/spec/support/models/shipment_address.rb +0 -1
  829. data/spec/support/models/shipping_container.rb +0 -1
  830. data/spec/support/models/shipping_pack.rb +0 -1
  831. data/spec/support/models/shirt.rb +0 -1
  832. data/spec/support/models/shop.rb +0 -1
  833. data/spec/support/models/short_agent.rb +0 -1
  834. data/spec/support/models/short_quiz.rb +0 -1
  835. data/spec/support/models/simple.rb +0 -1
  836. data/spec/support/models/slave.rb +0 -1
  837. data/spec/support/models/song.rb +0 -1
  838. data/spec/support/models/sound.rb +0 -1
  839. data/spec/support/models/spacer.rb +0 -1
  840. data/spec/support/models/square.rb +0 -1
  841. data/spec/support/models/staff.rb +0 -1
  842. data/spec/support/models/store_as_dup_test1.rb +0 -1
  843. data/spec/support/models/store_as_dup_test2.rb +0 -1
  844. data/spec/support/models/store_as_dup_test3.rb +0 -1
  845. data/spec/support/models/store_as_dup_test4.rb +0 -1
  846. data/spec/support/models/strategy.rb +0 -1
  847. data/spec/support/models/sub_item.rb +0 -1
  848. data/spec/support/models/subscription.rb +0 -1
  849. data/spec/support/models/survey.rb +0 -1
  850. data/spec/support/models/symptom.rb +0 -1
  851. data/spec/support/models/tag.rb +0 -1
  852. data/spec/support/models/target.rb +0 -1
  853. data/spec/support/models/template.rb +0 -1
  854. data/spec/support/models/thing.rb +0 -1
  855. data/spec/support/models/threadlocker.rb +0 -1
  856. data/spec/support/models/title.rb +0 -1
  857. data/spec/support/models/tool.rb +0 -1
  858. data/spec/support/models/topping.rb +0 -1
  859. data/spec/support/models/toy.rb +0 -1
  860. data/spec/support/models/track.rb +0 -1
  861. data/spec/support/models/translation.rb +0 -1
  862. data/spec/support/models/tree.rb +0 -1
  863. data/spec/support/models/truck.rb +0 -1
  864. data/spec/support/models/updatable.rb +0 -1
  865. data/spec/support/models/user.rb +0 -1
  866. data/spec/support/models/user_account.rb +0 -1
  867. data/spec/support/models/validation_callback.rb +0 -1
  868. data/spec/support/models/vehicle.rb +0 -1
  869. data/spec/support/models/version.rb +0 -1
  870. data/spec/support/models/vertex.rb +0 -1
  871. data/spec/support/models/vet_visit.rb +0 -1
  872. data/spec/support/models/video.rb +0 -1
  873. data/spec/support/models/video_game.rb +0 -1
  874. data/spec/support/models/washer.rb +0 -1
  875. data/spec/support/models/weapon.rb +0 -1
  876. data/spec/support/models/wiki_page.rb +0 -1
  877. data/spec/support/models/word.rb +0 -1
  878. data/spec/support/models/word_origin.rb +0 -1
  879. data/spec/support/models/writer.rb +0 -1
  880. data/spec/support/shared/time.rb +0 -1
  881. data/spec/support/spec_config.rb +3 -1
  882. data.tar.gz.sig +0 -0
  883. metadata +642 -610
  884. metadata.gz.sig +0 -0
  885. data/lib/support/ruby_version.rb +0 -29
  886. data/spec/support/session_registry.rb +0 -50
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -115,7 +114,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
115
114
  context "when the parent is not a new record" do
116
115
 
117
116
  let(:person) do
118
- Person.create
117
+ Person.create!
119
118
  end
120
119
 
121
120
  let(:address) do
@@ -134,7 +133,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
134
133
  context "when appending more than one document at once" do
135
134
 
136
135
  let(:person) do
137
- Person.create
136
+ Person.create!
138
137
  end
139
138
 
140
139
  let(:address_one) do
@@ -210,7 +209,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
210
209
  context "when the parent is not a new record" do
211
210
 
212
211
  let(:parent_role) do
213
- Role.create(name: "CEO")
212
+ Role.create!(name: "CEO")
214
213
  end
215
214
 
216
215
  let(:child_role) do
@@ -229,7 +228,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
229
228
 
230
229
  context "when the child has one sided many to many relation" do
231
230
  let(:person) do
232
- Person.create
231
+ Person.create!
233
232
  end
234
233
 
235
234
  let(:message) do
@@ -312,7 +311,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
312
311
  context "when the parent is not a new record" do
313
312
 
314
313
  let(:person) do
315
- Person.create
314
+ Person.create!
316
315
  end
317
316
 
318
317
  let(:address) do
@@ -333,11 +332,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
333
332
  context "when setting via an overridden method from the parent" do
334
333
 
335
334
  let!(:person) do
336
- Person.create
335
+ Person.create!
337
336
  end
338
337
 
339
338
  let!(:address) do
340
- person.addresses.create(street: "Alt Treptow")
339
+ person.addresses.create!(street: "Alt Treptow")
341
340
  end
342
341
 
343
342
  let!(:new_address) do
@@ -345,7 +344,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
345
344
  end
346
345
 
347
346
  before do
348
- person.update_attributes(set_addresses: [ new_address ])
347
+ person.update_attributes!(set_addresses: [ new_address ])
349
348
  end
350
349
 
351
350
  it "overwrites the existing addresses" do
@@ -375,7 +374,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
375
374
 
376
375
  before do
377
376
  person.addresses = [ address_two ]
378
- person.save
377
+ person.save!
379
378
  end
380
379
 
381
380
  it "sets the new documents" do
@@ -409,7 +408,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
409
408
 
410
409
  before do
411
410
  doctor.addresses = [ address_one ]
412
- doctor.save
411
+ doctor.save!
413
412
  end
414
413
 
415
414
  it "sets the documents" do
@@ -428,7 +427,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
428
427
 
429
428
  before do
430
429
  doctor.addresses = [ address_two ]
431
- doctor.save
430
+ doctor.save!
432
431
  end
433
432
 
434
433
  it "sets the new documents" do
@@ -446,7 +445,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
446
445
  context "when replacing an existing relation" do
447
446
 
448
447
  let(:person) do
449
- Person.create(addresses: addresses)
448
+ Person.create!(addresses: addresses)
450
449
  end
451
450
 
452
451
  let(:addresses) do
@@ -507,7 +506,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
507
506
  end
508
507
 
509
508
  let(:tracking_id) do
510
- MyCompany::Model::TrackingId.create
509
+ MyCompany::Model::TrackingId.create!
511
510
  end
512
511
 
513
512
  let(:history) do
@@ -542,7 +541,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
542
541
  inflect.singular("address_numbers", "address_number")
543
542
  end
544
543
  slave.address_numbers << AddressNumber.new(country_code: 1)
545
- slave.save
544
+ slave.save!
546
545
  end
547
546
 
548
547
  it "requires an inflection to determine the class" do
@@ -553,15 +552,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
553
552
  context "when setting the entire tree via a hash" do
554
553
 
555
554
  let(:person) do
556
- Person.create
555
+ Person.create!
557
556
  end
558
557
 
559
558
  let!(:address_one) do
560
- person.addresses.create(street: "Tauentzienstr")
559
+ person.addresses.create!(street: "Tauentzienstr")
561
560
  end
562
561
 
563
562
  let!(:address_two) do
564
- person.addresses.create(street: "Kudamm")
563
+ person.addresses.create!(street: "Kudamm")
565
564
  end
566
565
 
567
566
  let(:attributes) do
@@ -572,7 +571,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
572
571
 
573
572
  before do
574
573
  attributes["addresses"][0]["city"] = "Berlin"
575
- person.update_attributes(attributes)
574
+ person.update_attributes!(attributes)
576
575
  end
577
576
 
578
577
  it "sets the new attributes" do
@@ -588,15 +587,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
588
587
  context "when setting an embedded sub-document tree via a hash" do
589
588
 
590
589
  let(:person) do
591
- Person.create
590
+ Person.create!
592
591
  end
593
592
 
594
593
  let!(:address_one) do
595
- person.addresses.create(street: "Tauentzienstr")
594
+ person.addresses.create!(street: "Tauentzienstr")
596
595
  end
597
596
 
598
597
  let!(:location_one) do
599
- person.addresses.first.locations.create(name: "Work")
598
+ person.addresses.first.locations.create!(name: "Work")
600
599
  end
601
600
 
602
601
  let(:attributes) do
@@ -608,7 +607,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
608
607
  before do
609
608
  attributes["city"] = "Berlin"
610
609
  attributes["locations"][0]["name"] = "Home"
611
- person.addresses.first.update_attributes(attributes)
610
+ person.addresses.first.update_attributes!(attributes)
612
611
  end
613
612
 
614
613
  it "sets the new attributes on the address" do
@@ -681,7 +680,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
681
680
  context "when the parent is not a new record" do
682
681
 
683
682
  let(:parent_role) do
684
- Role.create(name: "CTO")
683
+ Role.create!(name: "CTO")
685
684
  end
686
685
 
687
686
  let(:child_role) do
@@ -749,7 +748,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
749
748
  context "when the parent is persisted" do
750
749
 
751
750
  let(:person) do
752
- Person.create
751
+ Person.create!
753
752
  end
754
753
 
755
754
  let(:address) do
@@ -798,7 +797,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
798
797
  context "when saving the parent" do
799
798
 
800
799
  before do
801
- person.save
800
+ person.save!
802
801
  person.reload
803
802
  end
804
803
 
@@ -812,7 +811,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
812
811
  context "when setting on a reload" do
813
812
 
814
813
  let(:person) do
815
- Person.create
814
+ Person.create!
816
815
  end
817
816
 
818
817
  let(:address) do
@@ -882,7 +881,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
882
881
  context "when the documents are not new records" do
883
882
 
884
883
  let(:parent_role) do
885
- Role.create
884
+ Role.create!
886
885
  end
887
886
 
888
887
  let(:child_role) do
@@ -912,13 +911,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
912
911
  describe "#as_document" do
913
912
 
914
913
  let!(:person) do
915
- Person.create
914
+ Person.create!
916
915
  end
917
916
 
918
917
  context 'when a string is used to access an attribute' do
919
918
 
920
919
  let!(:address) do
921
- person.addresses.create(street: "one")
920
+ person.addresses.create!(street: "one")
922
921
  end
923
922
 
924
923
  let(:document) do
@@ -933,7 +932,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
933
932
  context 'when a symbol is used to access an attribute' do
934
933
 
935
934
  let!(:address) do
936
- person.addresses.create(street: "one")
935
+ person.addresses.create!(street: "one")
937
936
  end
938
937
 
939
938
  let(:document) do
@@ -948,7 +947,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
948
947
  context "when the relation has no default scope" do
949
948
 
950
949
  let!(:address) do
951
- person.addresses.create(street: "one")
950
+ person.addresses.create!(street: "one")
952
951
  end
953
952
 
954
953
  let(:document) do
@@ -1105,7 +1104,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1105
1104
  context "when providing nested attributes" do
1106
1105
 
1107
1106
  let(:person) do
1108
- Person.create
1107
+ Person.create!
1109
1108
  end
1110
1109
 
1111
1110
  let(:address) do
@@ -1119,7 +1118,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1119
1118
  context "when followed by a save" do
1120
1119
 
1121
1120
  before do
1122
- address.save
1121
+ address.save!
1123
1122
  end
1124
1123
 
1125
1124
  let(:location) do
@@ -1139,13 +1138,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1139
1138
  context "when the parent has been persisted" do
1140
1139
 
1141
1140
  let(:person) do
1142
- Person.create
1141
+ Person.create!
1143
1142
  end
1144
1143
 
1145
1144
  context "when the children are persisted" do
1146
1145
 
1147
1146
  let!(:address) do
1148
- person.addresses.create(street: "High St")
1147
+ person.addresses.create!(street: "High St")
1149
1148
  end
1150
1149
 
1151
1150
  let!(:relation) do
@@ -1261,7 +1260,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1261
1260
  context "when the parent is not a new record" do
1262
1261
 
1263
1262
  let(:person) do
1264
- Person.create
1263
+ Person.create!
1265
1264
  end
1266
1265
 
1267
1266
  let(:address) do
@@ -1280,7 +1279,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1280
1279
  context "when concatenating an empty array" do
1281
1280
 
1282
1281
  let(:person) do
1283
- Person.create
1282
+ Person.create!
1284
1283
  end
1285
1284
 
1286
1285
  before do
@@ -1296,7 +1295,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1296
1295
  context "when appending more than one document at once" do
1297
1296
 
1298
1297
  let(:person) do
1299
- Person.create
1298
+ Person.create!
1300
1299
  end
1301
1300
 
1302
1301
  let(:address_one) do
@@ -1368,7 +1367,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1368
1367
  context "when the parent is not a new record" do
1369
1368
 
1370
1369
  let(:parent_role) do
1371
- Role.create(name: "CEO")
1370
+ Role.create!(name: "CEO")
1372
1371
  end
1373
1372
 
1374
1373
  let(:child_role) do
@@ -1389,49 +1388,261 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1389
1388
  describe "#count" do
1390
1389
 
1391
1390
  let(:person) do
1392
- Person.create
1391
+ Person.create!
1393
1392
  end
1394
1393
 
1395
1394
  before do
1396
- person.addresses.create(street: "Upper")
1395
+ person.addresses.create!(street: "Upper")
1397
1396
  person.addresses.build(street: "Bond")
1397
+ person.addresses.build(street: "Lower")
1398
1398
  end
1399
1399
 
1400
1400
  it "returns the number of persisted documents" do
1401
1401
  expect(person.addresses.count).to eq(1)
1402
1402
  end
1403
+
1404
+ context 'block form' do
1405
+ it "iterates across all documents" do
1406
+ expect(person.addresses.count {|a| a.persisted? }).to eq(1)
1407
+ expect(person.addresses.count {|a| !a.persisted? }).to eq(2)
1408
+ expect(person.addresses.count {|a| a.street.include?('on') }).to eq(1)
1409
+ expect(person.addresses.count {|a| a.street.ends_with?('er') }).to eq(2)
1410
+ end
1411
+ end
1412
+
1413
+ context 'argument form' do
1414
+ it "behaves correctly when given a model instance" do
1415
+ expect(person.addresses.count(person.addresses.first)).to eq(1)
1416
+ end
1417
+
1418
+ it "behaves correctly when given a non-model instance" do
1419
+ expect(person.addresses.count(1)).to eq(0)
1420
+ end
1421
+ end
1403
1422
  end
1404
1423
 
1405
1424
  describe "#any?" do
1406
1425
 
1407
1426
  let(:person) do
1408
- Person.create
1427
+ Person.create!
1409
1428
  end
1410
1429
 
1411
1430
  context "when documents are persisted" do
1412
1431
  before do
1413
- person.addresses.create(street: "Upper")
1432
+ person.addresses.create!(street: "Upper")
1414
1433
  end
1415
1434
 
1416
1435
  it "returns true" do
1417
1436
  expect(person.addresses.any?).to be true
1418
1437
  end
1438
+
1439
+ it "block form iterates across all documents" do
1440
+ expect(person.addresses.any? {|a| a.street == "Upper" }).to be true
1441
+ expect(person.addresses.any? {|a| a.street == "Bond" }).to be false
1442
+ end
1443
+
1444
+ context 'argument form' do
1445
+ it "behaves correctly when given a model instance" do
1446
+ expect(person.addresses.any?(person.addresses.first)).to be true
1447
+ end
1448
+
1449
+ it "behaves correctly when given a non-model instance" do
1450
+ expect(person.addresses.any?(1)).to be false
1451
+ end
1452
+ end
1419
1453
  end
1420
-
1454
+
1421
1455
  context "when documents are not persisted" do
1422
1456
  before do
1423
1457
  person.addresses.build(street: "Bond")
1424
1458
  end
1425
-
1459
+
1426
1460
  it "returns true" do
1427
1461
  expect(person.addresses.any?).to be true
1428
1462
  end
1463
+
1464
+ it "block form iterates across all documents" do
1465
+ expect(person.addresses.any? {|a| a.street == "Upper" }).to be false
1466
+ expect(person.addresses.any? {|a| a.street == "Bond" }).to be true
1467
+ end
1468
+
1469
+ context 'argument form' do
1470
+ it "behaves correctly when given a model instance" do
1471
+ expect(person.addresses.any?(person.addresses.first)).to be true
1472
+ end
1473
+
1474
+ it "behaves correctly when given a non-model instance" do
1475
+ expect(person.addresses.any?(1)).to be false
1476
+ end
1477
+ end
1429
1478
  end
1430
1479
 
1431
- context "when documents are not created" do
1480
+ context "when documents are not present" do
1432
1481
  it "returns false" do
1433
1482
  expect(person.addresses.any?).to be false
1434
1483
  end
1484
+
1485
+ it "block form iterates across all documents" do
1486
+ expect(person.addresses.any?(&:a)).to be false
1487
+ end
1488
+
1489
+ it "argument form is supported" do
1490
+ expect(person.addresses.any?(1)).to be false
1491
+ end
1492
+ end
1493
+ end
1494
+
1495
+ describe "#all?" do
1496
+
1497
+ let(:person) do
1498
+ Person.create!
1499
+ end
1500
+
1501
+ context "when documents are persisted" do
1502
+ before do
1503
+ person.addresses.create!(street: "Upper")
1504
+ end
1505
+
1506
+ it "returns true" do
1507
+ expect(person.addresses.all?).to be true
1508
+ end
1509
+
1510
+ it "block form iterates across all documents" do
1511
+ expect(person.addresses.all? {|a| a.street == "Upper" }).to be true
1512
+ expect(person.addresses.all? {|a| a.street == "Bond" }).to be false
1513
+ end
1514
+
1515
+ context 'argument form' do
1516
+ it "behaves correctly when given a model instance" do
1517
+ expect(person.addresses.all?(person.addresses.first)).to be true
1518
+ end
1519
+
1520
+ it "behaves correctly when given a non-model instance" do
1521
+ expect(person.addresses.all?(1)).to be false
1522
+ end
1523
+ end
1524
+ end
1525
+
1526
+ context "when documents are not persisted" do
1527
+ before do
1528
+ person.addresses.build(street: "Bond")
1529
+ end
1530
+
1531
+ it "returns true" do
1532
+ expect(person.addresses.all?).to be true
1533
+ end
1534
+
1535
+ it "block form iterates across all documents" do
1536
+ expect(person.addresses.all? {|a| a.street == "Upper" }).to be false
1537
+ expect(person.addresses.all? {|a| a.street == "Bond" }).to be true
1538
+ end
1539
+
1540
+ context 'argument form' do
1541
+ it "behaves correctly when given a model instance" do
1542
+ expect(person.addresses.all?(person.addresses.first)).to be true
1543
+ end
1544
+
1545
+ it "behaves correctly when given a non-model instance" do
1546
+ expect(person.addresses.all?(1)).to be false
1547
+ end
1548
+ end
1549
+ end
1550
+
1551
+ context "when documents are not present" do
1552
+ it "returns false" do
1553
+ expect(person.addresses.all?).to be true
1554
+ end
1555
+
1556
+ it "block form iterates across all documents" do
1557
+ expect(person.addresses.all?(&:foo)).to be true
1558
+ end
1559
+
1560
+ context 'argument form' do
1561
+ it "behaves correctly when given nil" do
1562
+ expect(person.addresses.all?(nil)).to be true
1563
+ end
1564
+
1565
+ it "behaves correctly when given a non-model instance" do
1566
+ expect(person.addresses.all?(1)).to be true
1567
+ end
1568
+ end
1569
+ end
1570
+ end
1571
+
1572
+ describe "#none?" do
1573
+
1574
+ let(:person) do
1575
+ Person.create!
1576
+ end
1577
+
1578
+ context "when documents are persisted" do
1579
+ before do
1580
+ person.addresses.create!(street: "Upper")
1581
+ end
1582
+
1583
+ it "returns true" do
1584
+ expect(person.addresses.none?).to be false
1585
+ end
1586
+
1587
+ it "block form iterates across all documents" do
1588
+ expect(person.addresses.none? {|a| a.street == "Upper" }).to be false
1589
+ expect(person.addresses.none? {|a| a.street == "Bond" }).to be true
1590
+ end
1591
+
1592
+ context 'argument form' do
1593
+ it "behaves correctly when given a model instance" do
1594
+ expect(person.addresses.none?(person.addresses.first)).to be false
1595
+ end
1596
+
1597
+ it "behaves correctly when given a non-model instance" do
1598
+ expect(person.addresses.none?(1)).to be true
1599
+ end
1600
+ end
1601
+ end
1602
+
1603
+ context "when documents are not persisted" do
1604
+ before do
1605
+ person.addresses.build(street: "Bond")
1606
+ end
1607
+
1608
+ it "returns true" do
1609
+ expect(person.addresses.none?).to be false
1610
+ end
1611
+
1612
+ it "block form iterates across all documents" do
1613
+ expect(person.addresses.none? {|a| a.street == "Upper" }).to be true
1614
+ expect(person.addresses.none? {|a| a.street == "Bond" }).to be false
1615
+ end
1616
+
1617
+ context 'argument form' do
1618
+ it "behaves correctly when given a model instance" do
1619
+ expect(person.addresses.none?(person.addresses.first)).to be false
1620
+ end
1621
+
1622
+ it "behaves correctly when given a non-model instance" do
1623
+ expect(person.addresses.none?(1)).to be true
1624
+ end
1625
+ end
1626
+ end
1627
+
1628
+ context "when documents are not present" do
1629
+ it "returns false" do
1630
+ expect(person.addresses.none?).to be true
1631
+ end
1632
+
1633
+ it "block form iterates across all documents" do
1634
+ expect(person.addresses.none?(&:a)).to be true
1635
+ end
1636
+
1637
+ context 'argument form' do
1638
+ it "behaves correctly when given nil" do
1639
+ expect(person.addresses.none?(nil)).to be true
1640
+ end
1641
+
1642
+ it "behaves correctly when given a non-model instance" do
1643
+ expect(person.addresses.none?(1)).to be true
1644
+ end
1645
+ end
1435
1646
  end
1436
1647
  end
1437
1648
 
@@ -1440,11 +1651,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1440
1651
  context "when providing multiple attributes" do
1441
1652
 
1442
1653
  let(:person) do
1443
- Person.create
1654
+ Person.create!
1444
1655
  end
1445
1656
 
1446
1657
  let!(:addresses) do
1447
- person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
1658
+ person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
1448
1659
  end
1449
1660
 
1450
1661
  it "creates multiple documents" do
@@ -1467,11 +1678,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1467
1678
  context "when the relation is not cyclic" do
1468
1679
 
1469
1680
  let(:person) do
1470
- Person.create
1681
+ Person.create!
1471
1682
  end
1472
1683
 
1473
1684
  let!(:address) do
1474
- person.addresses.create(street: "Bond") do |address|
1685
+ person.addresses.create!(street: "Bond") do |address|
1475
1686
  address.state = "CA"
1476
1687
  end
1477
1688
  end
@@ -1515,7 +1726,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1515
1726
  context "when embedding a multi word named document" do
1516
1727
 
1517
1728
  let!(:component) do
1518
- person.address_components.create(street: "Test")
1729
+ person.address_components.create!(street: "Test")
1519
1730
  end
1520
1731
 
1521
1732
  it "saves the embedded document" do
@@ -1527,11 +1738,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1527
1738
  context "when the relation is cyclic" do
1528
1739
 
1529
1740
  let!(:entry) do
1530
- Entry.create(title: "hi")
1741
+ Entry.create!(title: "hi")
1531
1742
  end
1532
1743
 
1533
1744
  let!(:child_entry) do
1534
- entry.child_entries.create(title: "hello")
1745
+ entry.child_entries.create!(title: "hello")
1535
1746
  end
1536
1747
 
1537
1748
  it "creates a new child" do
@@ -1543,7 +1754,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1543
1754
  describe "#create!" do
1544
1755
 
1545
1756
  let(:person) do
1546
- Person.create
1757
+ Person.create!
1547
1758
  end
1548
1759
 
1549
1760
  context "when providing multiple attributes" do
@@ -1702,7 +1913,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1702
1913
  describe "#delete_if" do
1703
1914
 
1704
1915
  let(:person) do
1705
- Person.create
1916
+ Person.create!
1706
1917
  end
1707
1918
 
1708
1919
  context "when the documents are new" do
@@ -1751,11 +1962,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1751
1962
  context "when the documents persisted" do
1752
1963
 
1753
1964
  let!(:address_one) do
1754
- person.addresses.create(street: "Bond")
1965
+ person.addresses.create!(street: "Bond")
1755
1966
  end
1756
1967
 
1757
1968
  let!(:address_two) do
1758
- person.addresses.create(street: "Upper")
1969
+ person.addresses.create!(street: "Upper")
1759
1970
  end
1760
1971
 
1761
1972
  context "when a block is provided" do
@@ -1810,7 +2021,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1810
2021
  describe "##{method}" do
1811
2022
 
1812
2023
  let(:person) do
1813
- Person.create
2024
+ Person.create!
1814
2025
  end
1815
2026
 
1816
2027
  context "when the documents are new" do
@@ -1864,11 +2075,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1864
2075
  context "when the documents persisted" do
1865
2076
 
1866
2077
  let!(:address_one) do
1867
- person.addresses.create(street: "Bond")
2078
+ person.addresses.create!(street: "Bond")
1868
2079
  end
1869
2080
 
1870
2081
  let!(:address_two) do
1871
- person.addresses.create(street: "Upper")
2082
+ person.addresses.create!(street: "Upper")
1872
2083
  end
1873
2084
 
1874
2085
  context "when conditions are provided" do
@@ -1915,7 +2126,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1915
2126
  context "when removing and resaving" do
1916
2127
 
1917
2128
  let(:owner) do
1918
- PetOwner.create(title: "AKC")
2129
+ PetOwner.create!(title: "AKC")
1919
2130
  end
1920
2131
 
1921
2132
  before do
@@ -2011,13 +2222,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2011
2222
  describe "#exists?" do
2012
2223
 
2013
2224
  let!(:person) do
2014
- Person.create
2225
+ Person.create!
2015
2226
  end
2016
2227
 
2017
2228
  context "when documents exist in the database" do
2018
2229
 
2019
2230
  before do
2020
- person.addresses.create(street: "Bond St")
2231
+ person.addresses.create!(street: "Bond St")
2021
2232
  end
2022
2233
 
2023
2234
  it "returns true" do
@@ -2148,12 +2359,50 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2148
2359
  end
2149
2360
  end
2150
2361
  end
2362
+
2363
+ context "with block" do
2364
+ let!(:author) do
2365
+ Person.create!(title: 'Person')
2366
+ end
2367
+
2368
+ let!(:video_one) do
2369
+ author.videos.create!(title: 'video one')
2370
+ end
2371
+
2372
+ let!(:video_two) do
2373
+ author.videos.create!(title: 'video two')
2374
+ end
2375
+
2376
+ it "finds one" do
2377
+ expect(
2378
+ author.videos.find do |video|
2379
+ video.title == 'video one'
2380
+ end
2381
+ ).to eq(video_one)
2382
+ end
2383
+
2384
+ it "returns first match of multiple" do
2385
+ expect(
2386
+ author.videos.find do |video|
2387
+ ['video one', 'video two'].include?(video.title)
2388
+ end
2389
+ ).to be_a(Video)
2390
+ end
2391
+
2392
+ it "returns nil when not found" do
2393
+ expect(
2394
+ author.videos.find do |video|
2395
+ video.title == 'non exiting one'
2396
+ end
2397
+ ).to be_nil
2398
+ end
2399
+ end
2151
2400
  end
2152
2401
 
2153
2402
  describe "#find_or_create_by" do
2154
2403
 
2155
2404
  let(:person) do
2156
- Person.create
2405
+ Person.create!
2157
2406
  end
2158
2407
 
2159
2408
  let!(:address) do
@@ -2196,11 +2445,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2196
2445
  # context "when the child belongs to another document" do
2197
2446
  #
2198
2447
  # let(:product) do
2199
- # Product.create
2448
+ # Product.create!
2200
2449
  # end
2201
2450
  #
2202
2451
  # let(:purchase) do
2203
- # Purchase.create
2452
+ # Purchase.create!
2204
2453
  # end
2205
2454
  #
2206
2455
  # let(:line_item) do
@@ -2219,7 +2468,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2219
2468
  describe "#find_or_create_by!" do
2220
2469
 
2221
2470
  let(:person) do
2222
- Person.create
2471
+ Person.create!
2223
2472
  end
2224
2473
 
2225
2474
  let!(:address) do
@@ -2271,11 +2520,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2271
2520
  # context "when the child belongs to another document" do
2272
2521
  #
2273
2522
  # let(:product) do
2274
- # Product.create
2523
+ # Product.create!
2275
2524
  # end
2276
2525
  #
2277
2526
  # let(:purchase) do
2278
- # Purchase.create
2527
+ # Purchase.create!
2279
2528
  # end
2280
2529
  #
2281
2530
  # let(:line_item) do
@@ -2393,11 +2642,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2393
2642
  describe "#method_missing" do
2394
2643
 
2395
2644
  let!(:person) do
2396
- Person.create
2645
+ Person.create!
2397
2646
  end
2398
2647
 
2399
2648
  let!(:address_one) do
2400
- person.addresses.create(
2649
+ person.addresses.create!(
2401
2650
  street: "Market",
2402
2651
  state: "CA",
2403
2652
  services: [ "1", "2" ]
@@ -2405,7 +2654,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2405
2654
  end
2406
2655
 
2407
2656
  let!(:address_two) do
2408
- person.addresses.create(
2657
+ person.addresses.create!(
2409
2658
  street: "Madison",
2410
2659
  state: "NY",
2411
2660
  services: [ "1", "2" ]
@@ -2553,17 +2802,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2553
2802
  describe "#pop" do
2554
2803
 
2555
2804
  let(:person) do
2556
- Person.create
2805
+ Person.create!
2557
2806
  end
2558
2807
 
2559
2808
  context "when no argument is provided" do
2560
2809
 
2561
2810
  let!(:address_one) do
2562
- person.addresses.create(street: "sonnenallee")
2811
+ person.addresses.create!(street: "sonnenallee")
2563
2812
  end
2564
2813
 
2565
2814
  let!(:address_two) do
2566
- person.addresses.create(street: "hermannstr")
2815
+ person.addresses.create!(street: "hermannstr")
2567
2816
  end
2568
2817
 
2569
2818
  let!(:popped) do
@@ -2586,11 +2835,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2586
2835
  context "when an integer is provided" do
2587
2836
 
2588
2837
  let!(:address_one) do
2589
- person.addresses.create(street: "sonnenallee")
2838
+ person.addresses.create!(street: "sonnenallee")
2590
2839
  end
2591
2840
 
2592
2841
  let!(:address_two) do
2593
- person.addresses.create(street: "hermannstr")
2842
+ person.addresses.create!(street: "hermannstr")
2594
2843
  end
2595
2844
 
2596
2845
  context "when the number is zero" do
@@ -2672,17 +2921,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2672
2921
  describe "#shift" do
2673
2922
 
2674
2923
  let(:person) do
2675
- Person.create
2924
+ Person.create!
2676
2925
  end
2677
2926
 
2678
2927
  context "when no argument is provided" do
2679
2928
 
2680
2929
  let!(:address_one) do
2681
- person.addresses.create(street: "sonnenallee")
2930
+ person.addresses.create!(street: "sonnenallee")
2682
2931
  end
2683
2932
 
2684
2933
  let!(:address_two) do
2685
- person.addresses.create(street: "hermannstr")
2934
+ person.addresses.create!(street: "hermannstr")
2686
2935
  end
2687
2936
 
2688
2937
  let!(:shifted) do
@@ -2705,11 +2954,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2705
2954
  context "when an integer is provided" do
2706
2955
 
2707
2956
  let!(:address_one) do
2708
- person.addresses.create(street: "sonnenallee")
2957
+ person.addresses.create!(street: "sonnenallee")
2709
2958
  end
2710
2959
 
2711
2960
  let!(:address_two) do
2712
- person.addresses.create(street: "hermannstr")
2961
+ person.addresses.create!(street: "hermannstr")
2713
2962
  end
2714
2963
 
2715
2964
  context "when the number is zero" do
@@ -2857,11 +3106,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2857
3106
  describe "##{method}" do
2858
3107
 
2859
3108
  let(:person) do
2860
- Person.create
3109
+ Person.create!
2861
3110
  end
2862
3111
 
2863
3112
  before do
2864
- person.addresses.create(street: "Upper")
3113
+ person.addresses.create!(street: "Upper")
2865
3114
  person.addresses.build(street: "Bond")
2866
3115
  end
2867
3116
 
@@ -2899,7 +3148,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2899
3148
  context "when there are no documents present" do
2900
3149
 
2901
3150
  let(:person) do
2902
- Person.create
3151
+ Person.create!
2903
3152
  end
2904
3153
 
2905
3154
  it "updates nothing" do
@@ -2910,11 +3159,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2910
3159
  context "when documents are present" do
2911
3160
 
2912
3161
  let(:person) do
2913
- Person.create
3162
+ Person.create!
2914
3163
  end
2915
3164
 
2916
3165
  let!(:address) do
2917
- person.addresses.create(street: "Hobrecht", number: 27)
3166
+ person.addresses.create!(street: "Hobrecht", number: 27)
2918
3167
  end
2919
3168
 
2920
3169
  context "when updating with a where clause" do
@@ -2949,16 +3198,16 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2949
3198
  context "when updating the bottom level" do
2950
3199
 
2951
3200
  let!(:person) do
2952
- Person.create
3201
+ Person.create!
2953
3202
  end
2954
3203
 
2955
3204
  let!(:address) do
2956
- person.addresses.create(street: "Joachimstr")
3205
+ person.addresses.create!(street: "Joachimstr")
2957
3206
  end
2958
3207
 
2959
3208
  let!(:location) do
2960
- address.locations.create(name: "vacation", number: 0)
2961
- address.locations.create(name: "work", number: 3)
3209
+ address.locations.create!(name: "vacation", number: 0)
3210
+ address.locations.create!(name: "work", number: 3)
2962
3211
  end
2963
3212
 
2964
3213
  context "when updating with replacement of embedded array" do
@@ -2966,7 +3215,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2966
3215
  context "when updating with a hash" do
2967
3216
 
2968
3217
  before do
2969
- address.update_attributes(locations: [{ name: "home" }])
3218
+ address.update_attributes!(locations: [{ name: "home" }])
2970
3219
  end
2971
3220
 
2972
3221
  it "updates the attributes" do
@@ -2987,7 +3236,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2987
3236
 
2988
3237
  before do
2989
3238
  location.number = 7
2990
- location.save
3239
+ location.save!
2991
3240
  end
2992
3241
 
2993
3242
  let(:updated_location_number) do
@@ -3120,7 +3369,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3120
3369
  context "when creating a persisted tree" do
3121
3370
 
3122
3371
  let(:quiz) do
3123
- Quiz.create
3372
+ Quiz.create!
3124
3373
  end
3125
3374
 
3126
3375
  let(:page) do
@@ -3185,7 +3434,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3185
3434
  context "when saving the root" do
3186
3435
 
3187
3436
  before do
3188
- person.save
3437
+ person.save!
3189
3438
  end
3190
3439
 
3191
3440
  it "persists the first level document" do
@@ -3339,11 +3588,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3339
3588
  context "when accessing the parent in a destroy callback" do
3340
3589
 
3341
3590
  let!(:league) do
3342
- League.create
3591
+ League.create!
3343
3592
  end
3344
3593
 
3345
3594
  let!(:division) do
3346
- league.divisions.create
3595
+ league.divisions.create!
3347
3596
  end
3348
3597
 
3349
3598
  before do
@@ -3358,15 +3607,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3358
3607
  context "when updating the parent with all attributes" do
3359
3608
 
3360
3609
  let!(:person) do
3361
- Person.create
3610
+ Person.create!
3362
3611
  end
3363
3612
 
3364
3613
  let!(:address) do
3365
- person.addresses.create
3614
+ person.addresses.create!
3366
3615
  end
3367
3616
 
3368
3617
  before do
3369
- person.update_attributes(person.attributes)
3618
+ person.update_attributes!(person.attributes)
3370
3619
  end
3371
3620
 
3372
3621
  it "does not duplicate the embedded documents" do
@@ -3381,13 +3630,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3381
3630
  context "when embedding children named versions" do
3382
3631
 
3383
3632
  let(:acolyte) do
3384
- Acolyte.create(name: "test")
3633
+ Acolyte.create!(name: "test")
3385
3634
  end
3386
3635
 
3387
3636
  context "when creating a child" do
3388
3637
 
3389
3638
  let(:version) do
3390
- acolyte.versions.create(number: 1)
3639
+ acolyte.versions.create!(number: 1)
3391
3640
  end
3392
3641
 
3393
3642
  it "allows the operation" do
@@ -3412,7 +3661,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3412
3661
  let!(:account) do
3413
3662
  Account.new(name: "Testing").tap do |acct|
3414
3663
  acct.memberships.build
3415
- acct.save
3664
+ acct.save!
3416
3665
  end
3417
3666
  end
3418
3667
 
@@ -3424,10 +3673,10 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3424
3673
 
3425
3674
  before do
3426
3675
  account.name = ""
3427
- account.save
3428
3676
  end
3429
3677
 
3430
3678
  it "does not lose the parent reference" do
3679
+ expect(account.save).to eq false
3431
3680
  expect(from_db.memberships.first.account).to eq(account)
3432
3681
  end
3433
3682
  end
@@ -3447,15 +3696,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3447
3696
  context "when moving an embedded document from one parent to another" do
3448
3697
 
3449
3698
  let!(:person_one) do
3450
- Person.create
3699
+ Person.create!
3451
3700
  end
3452
3701
 
3453
3702
  let!(:person_two) do
3454
- Person.create
3703
+ Person.create!
3455
3704
  end
3456
3705
 
3457
3706
  let!(:address) do
3458
- person_one.addresses.create(street: "Kudamm")
3707
+ person_one.addresses.create!(street: "Kudamm")
3459
3708
  end
3460
3709
 
3461
3710
  before do
@@ -3490,7 +3739,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3490
3739
  context "when the relation has a default scope" do
3491
3740
 
3492
3741
  let!(:person) do
3493
- Person.create
3742
+ Person.create!
3494
3743
  end
3495
3744
 
3496
3745
  context "when the default scope is a sort" do
@@ -3560,7 +3809,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3560
3809
  context "when indexing the documents" do
3561
3810
 
3562
3811
  let!(:person) do
3563
- Person.create
3812
+ Person.create!
3564
3813
  end
3565
3814
 
3566
3815
  context "when the documents have a limiting default scope" do
@@ -3609,18 +3858,18 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3609
3858
  context "when the embedded document has an array field" do
3610
3859
 
3611
3860
  let!(:person) do
3612
- Person.create
3861
+ Person.create!
3613
3862
  end
3614
3863
 
3615
3864
  let!(:video) do
3616
- person.videos.create
3865
+ person.videos.create!
3617
3866
  end
3618
3867
 
3619
3868
  context "when saving the array on a persisted document" do
3620
3869
 
3621
3870
  before do
3622
3871
  video.genres = [ "horror", "scifi" ]
3623
- video.save
3872
+ video.save!
3624
3873
  end
3625
3874
 
3626
3875
  it "sets the value" do
@@ -3645,7 +3894,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3645
3894
 
3646
3895
  before do
3647
3896
  loaded_video.genres = [ "comedy" ]
3648
- loaded_video.save
3897
+ loaded_video.save!
3649
3898
  end
3650
3899
 
3651
3900
  it "sets the new value" do
@@ -3663,15 +3912,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3663
3912
  context "when destroying an embedded document" do
3664
3913
 
3665
3914
  let(:person) do
3666
- Person.create
3915
+ Person.create!
3667
3916
  end
3668
3917
 
3669
3918
  let!(:address_one) do
3670
- person.addresses.create(street: "hobrecht")
3919
+ person.addresses.create!(street: "hobrecht")
3671
3920
  end
3672
3921
 
3673
3922
  let!(:address_two) do
3674
- person.addresses.create(street: "maybachufer")
3923
+ person.addresses.create!(street: "maybachufer")
3675
3924
  end
3676
3925
 
3677
3926
  before do
@@ -3743,7 +3992,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3743
3992
  context "when the association has an order defined" do
3744
3993
 
3745
3994
  let(:person) do
3746
- Person.create
3995
+ Person.create!
3747
3996
  end
3748
3997
 
3749
3998
  let(:message_one) do
@@ -3774,11 +4023,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3774
4023
 
3775
4024
  before do
3776
4025
  person.aliases = [ { name: "A", priority: 3 }, { name: "B", priority: 4 }]
3777
- person.save
4026
+ person.save!
3778
4027
  end
3779
4028
 
3780
4029
  let!(:person2) do
3781
- Person.create( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
4030
+ Person.create!( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
3782
4031
  end
3783
4032
 
3784
4033
  it "allows ordering on a key of an embedded document" do
@@ -3813,7 +4062,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3813
4062
  context "when updating multiple levels in one update" do
3814
4063
 
3815
4064
  let!(:person) do
3816
- Person.create(
4065
+ Person.create!(
3817
4066
  addresses: [
3818
4067
  { locations: [{ name: "home" }]}
3819
4068
  ]
@@ -3827,7 +4076,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3827
4076
  end
3828
4077
 
3829
4078
  before do
3830
- from_db.update_attributes(
4079
+ from_db.update_attributes!(
3831
4080
  addresses: [
3832
4081
  { locations: [{ name: "work" }]}
3833
4082
  ]
@@ -3847,15 +4096,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3847
4096
  context "when the embedded relation sorts on a boolean" do
3848
4097
 
3849
4098
  let(:circuit) do
3850
- Circuit.create
4099
+ Circuit.create!
3851
4100
  end
3852
4101
 
3853
4102
  let!(:bus_one) do
3854
- circuit.buses.create(saturday: true)
4103
+ circuit.buses.create!(saturday: true)
3855
4104
  end
3856
4105
 
3857
4106
  let!(:bus_two) do
3858
- circuit.buses.create(saturday: false)
4107
+ circuit.buses.create!(saturday: false)
3859
4108
  end
3860
4109
 
3861
4110
  it "orders properly with the boolean" do
@@ -3866,7 +4115,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3866
4115
  context "when batch replacing multiple relations in a single update" do
3867
4116
 
3868
4117
  let(:document) do
3869
- Person.create
4118
+ Person.create!
3870
4119
  end
3871
4120
 
3872
4121
  let(:person) do
@@ -3874,23 +4123,23 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3874
4123
  end
3875
4124
 
3876
4125
  let!(:symptom_one) do
3877
- person.symptoms.create
4126
+ person.symptoms.create!
3878
4127
  end
3879
4128
 
3880
4129
  let!(:symptom_two) do
3881
- person.symptoms.create
4130
+ person.symptoms.create!
3882
4131
  end
3883
4132
 
3884
4133
  let!(:appointment_one) do
3885
- person.appointments.create
4134
+ person.appointments.create!
3886
4135
  end
3887
4136
 
3888
4137
  let!(:appointment_two) do
3889
- person.appointments.create
4138
+ person.appointments.create!
3890
4139
  end
3891
4140
 
3892
4141
  before do
3893
- person.update_attributes(
4142
+ person.update_attributes!(
3894
4143
  appointments: [ appointment_one.as_document, appointment_two.as_document ],
3895
4144
  symptoms: [ symptom_one.as_document, symptom_two.as_document ]
3896
4145
  )
@@ -4223,7 +4472,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4223
4472
  context "when the parent has an after create callback" do
4224
4473
 
4225
4474
  before do
4226
- server.save
4475
+ server.save!
4227
4476
  end
4228
4477
 
4229
4478
  it "does not push the embedded documents twice" do
@@ -4235,7 +4484,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4235
4484
  context "when embedded documents are stored without ids" do
4236
4485
 
4237
4486
  let!(:band) do
4238
- Band.create(name: "Moderat")
4487
+ Band.create!(name: "Moderat")
4239
4488
  end
4240
4489
 
4241
4490
  before do
@@ -4285,7 +4534,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4285
4534
  company = Company.new
4286
4535
  4.times { |i| company.staffs << Staff.new(age: 50 + i)}
4287
4536
  2.times { |i| company.staffs << Staff.new(age: 40)}
4288
- company.save
4537
+ company.save!
4289
4538
  company.staffs.delete_if {|x| x.age >= 50}
4290
4539
  expect(company.staffs.count).to eq(2)
4291
4540
  end
@@ -4362,7 +4611,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4362
4611
  context "when the parent is persisted" do
4363
4612
 
4364
4613
  let(:zone) do
4365
- DNS::Zone.create
4614
+ DNS::Zone.create!
4366
4615
  end
4367
4616
 
4368
4617
  let(:soa_1) do