mongoid 7.3.5 → 7.4.3

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