mongoid 7.3.4 → 7.4.1

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 (899) 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 +29 -42
  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 +20 -63
  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 +19 -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 +7 -3
  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 +1 -8
  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/config/templates/mongoid.yml +7 -2
  304. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  305. data/lib/rails/generators/mongoid_generator.rb +0 -1
  306. data/lib/rails/mongoid.rb +0 -3
  307. data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
  308. data/spec/integration/app_spec.rb +20 -15
  309. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  310. data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
  311. data/spec/integration/associations/embedded_spec.rb +0 -1
  312. data/spec/integration/associations/embeds_many_spec.rb +0 -1
  313. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  314. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  315. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  316. data/spec/integration/associations/has_many_spec.rb +0 -1
  317. data/spec/integration/associations/has_one_spec.rb +0 -1
  318. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  319. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  320. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  321. data/spec/integration/associations/scope_option_spec.rb +101 -0
  322. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  323. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  324. data/spec/integration/callbacks_models.rb +12 -0
  325. data/spec/integration/callbacks_spec.rb +18 -6
  326. data/spec/integration/contextual/empty_spec.rb +0 -1
  327. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  328. data/spec/integration/criteria/date_field_spec.rb +0 -1
  329. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  330. data/spec/integration/criteria/logical_spec.rb +30 -0
  331. data/spec/integration/criteria/range_spec.rb +265 -0
  332. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  333. data/spec/integration/discriminator_key_spec.rb +0 -1
  334. data/spec/integration/discriminator_value_spec.rb +0 -1
  335. data/spec/integration/document_spec.rb +0 -1
  336. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  337. data/spec/integration/matcher_examples_spec.rb +0 -1
  338. data/spec/integration/matcher_operator_spec.rb +27 -3
  339. data/spec/integration/matcher_spec.rb +95 -1
  340. data/spec/integration/server_query_spec.rb +0 -1
  341. data/spec/integration/shardable_spec.rb +0 -1
  342. data/spec/integration/stringified_symbol_field_spec.rb +14 -1
  343. data/spec/lite_spec_helper.rb +9 -3
  344. data/spec/mongoid/association/accessors_spec.rb +44 -15
  345. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  346. data/spec/mongoid/association/builders_spec.rb +1 -2
  347. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  348. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  349. data/spec/mongoid/association/depending_spec.rb +12 -13
  350. data/spec/mongoid/association/eager_spec.rb +4 -5
  351. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  352. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  353. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  354. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  355. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  356. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  358. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  359. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +405 -135
  360. data/spec/mongoid/association/embedded/embeds_many_models.rb +137 -1
  361. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  364. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  365. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  366. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  368. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  369. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  370. data/spec/mongoid/association/macros_spec.rb +9 -10
  371. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  372. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  373. data/spec/mongoid/association/options_spec.rb +0 -1
  374. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  375. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  376. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  377. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  378. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  379. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -1
  380. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +187 -154
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  387. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  388. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  389. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  390. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  391. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  392. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +59 -33
  393. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  394. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +241 -162
  395. data/spec/mongoid/association/referenced/has_many_models.rb +18 -1
  396. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  397. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  398. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  399. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  400. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  401. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  402. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  403. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  404. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  405. data/spec/mongoid/association/reflections_spec.rb +0 -1
  406. data/spec/mongoid/association/syncable_spec.rb +31 -32
  407. data/spec/mongoid/association_spec.rb +0 -1
  408. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  411. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  412. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  413. data/spec/mongoid/atomic_spec.rb +28 -7
  414. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  415. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  416. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  417. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  418. data/spec/mongoid/attributes_spec.rb +32 -33
  419. data/spec/mongoid/cacheable_spec.rb +1 -2
  420. data/spec/mongoid/changeable_spec.rb +35 -36
  421. data/spec/mongoid/clients/factory_spec.rb +11 -13
  422. data/spec/mongoid/clients/options_spec.rb +4 -5
  423. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  424. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  425. data/spec/mongoid/clients_spec.rb +6 -7
  426. data/spec/mongoid/composable_spec.rb +0 -1
  427. data/spec/mongoid/config/environment_spec.rb +39 -2
  428. data/spec/mongoid/config/options_spec.rb +0 -1
  429. data/spec/mongoid/config_spec.rb +145 -1
  430. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  431. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  432. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  433. data/spec/mongoid/contextual/atomic_spec.rb +46 -47
  434. data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
  435. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  436. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  437. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  438. data/spec/mongoid/contextual/none_spec.rb +7 -82
  439. data/spec/mongoid/copyable_spec.rb +12 -13
  440. data/spec/mongoid/copyable_spec_models.rb +0 -1
  441. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  442. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  443. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  444. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  445. data/spec/mongoid/criteria/options_spec.rb +0 -1
  446. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  447. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  460. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  461. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  462. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  470. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  471. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  472. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  473. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  474. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  475. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  476. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  477. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  478. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  480. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  481. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  482. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  483. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  484. data/spec/mongoid/criteria_spec.rb +546 -186
  485. data/spec/mongoid/document_fields_spec.rb +0 -1
  486. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  487. data/spec/mongoid/document_query_spec.rb +0 -1
  488. data/spec/mongoid/document_spec.rb +11 -33
  489. data/spec/mongoid/equality_spec.rb +142 -41
  490. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  491. data/spec/mongoid/errors/callback_spec.rb +0 -1
  492. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  493. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  494. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  495. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  496. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  506. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  507. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  508. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  509. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  510. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  511. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  512. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  513. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  514. data/spec/mongoid/errors/mongoid_error_spec.rb +1 -2
  515. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  522. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  523. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  524. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  525. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  526. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  527. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  528. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  529. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  530. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  531. data/spec/mongoid/errors/validations_spec.rb +0 -1
  532. data/spec/mongoid/extensions/array_spec.rb +0 -1
  533. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  534. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  535. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  537. data/spec/mongoid/extensions/date_spec.rb +0 -1
  538. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  539. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  540. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  541. data/spec/mongoid/extensions/float_spec.rb +0 -1
  542. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  543. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  544. data/spec/mongoid/extensions/module_spec.rb +0 -1
  545. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  546. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  547. data/spec/mongoid/extensions/object_spec.rb +0 -1
  548. data/spec/mongoid/extensions/range_spec.rb +0 -1
  549. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  550. data/spec/mongoid/extensions/set_spec.rb +0 -1
  551. data/spec/mongoid/extensions/string_spec.rb +2 -3
  552. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  553. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  554. data/spec/mongoid/extensions/time_spec.rb +0 -1
  555. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  556. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  557. data/spec/mongoid/extensions_spec.rb +14 -3
  558. data/spec/mongoid/factory_spec.rb +1 -1
  559. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  560. data/spec/mongoid/fields/localized_spec.rb +0 -1
  561. data/spec/mongoid/fields/standard_spec.rb +0 -1
  562. data/spec/mongoid/fields_spec.rb +326 -31
  563. data/spec/mongoid/findable_spec.rb +21 -22
  564. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  565. data/spec/mongoid/indexable_spec.rb +0 -1
  566. data/spec/mongoid/inspectable_spec.rb +0 -1
  567. data/spec/mongoid/interceptable_spec.rb +102 -95
  568. data/spec/mongoid/loggable_spec.rb +0 -1
  569. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  570. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  571. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  572. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  573. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  574. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  575. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  576. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  577. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  578. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  579. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  580. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  581. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  582. data/spec/mongoid/persistable/updatable_spec.rb +41 -24
  583. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  584. data/spec/mongoid/persistable_spec.rb +1 -2
  585. data/spec/mongoid/persistence_context_spec.rb +0 -1
  586. data/spec/mongoid/positional_spec.rb +0 -1
  587. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  588. data/spec/mongoid/query_cache_spec.rb +32 -10
  589. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  590. data/spec/mongoid/reloadable_spec.rb +209 -23
  591. data/spec/mongoid/scopable_spec.rb +65 -22
  592. data/spec/mongoid/selectable_spec.rb +6 -7
  593. data/spec/mongoid/serializable_spec.rb +9 -10
  594. data/spec/mongoid/shardable_spec.rb +2 -3
  595. data/spec/mongoid/stateful_spec.rb +1 -2
  596. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  597. data/spec/mongoid/tasks/database_spec.rb +0 -1
  598. data/spec/mongoid/threaded_spec.rb +2 -3
  599. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  600. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  601. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  602. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  603. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  604. data/spec/mongoid/timestamps_spec.rb +6 -7
  605. data/spec/mongoid/touchable_spec.rb +15 -20
  606. data/spec/mongoid/touchable_spec_models.rb +0 -1
  607. data/spec/mongoid/traversable_spec.rb +65 -2
  608. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  609. data/spec/mongoid/validatable/format_spec.rb +0 -1
  610. data/spec/mongoid/validatable/length_spec.rb +0 -1
  611. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  612. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  613. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  614. data/spec/mongoid/validatable_spec.rb +2 -3
  615. data/spec/mongoid_spec.rb +0 -1
  616. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  617. data/spec/rails/mongoid_spec.rb +0 -1
  618. data/spec/shared/lib/mrss/cluster_config.rb +6 -1
  619. data/spec/shared/lib/mrss/constraints.rb +10 -17
  620. data/spec/shared/lib/mrss/docker_runner.rb +23 -3
  621. data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
  622. data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
  623. data/spec/shared/lib/mrss/lite_constraints.rb +40 -1
  624. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  625. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  626. data/spec/shared/share/Dockerfile.erb +56 -54
  627. data/spec/shared/shlib/config.sh +27 -0
  628. data/spec/shared/shlib/distro.sh +2 -1
  629. data/spec/shared/shlib/server.sh +46 -21
  630. data/spec/shared/shlib/set_env.sh +43 -5
  631. data/spec/spec_helper.rb +12 -22
  632. data/spec/support/authorization.rb +0 -1
  633. data/spec/support/constraints.rb +0 -1
  634. data/spec/support/expectations.rb +0 -1
  635. data/spec/support/macros.rb +31 -1
  636. data/spec/support/models/account.rb +1 -2
  637. data/spec/support/models/acolyte.rb +0 -1
  638. data/spec/support/models/actor.rb +0 -1
  639. data/spec/support/models/actress.rb +0 -1
  640. data/spec/support/models/address.rb +0 -1
  641. data/spec/support/models/address_component.rb +0 -1
  642. data/spec/support/models/address_number.rb +0 -1
  643. data/spec/support/models/agency.rb +0 -1
  644. data/spec/support/models/agent.rb +0 -1
  645. data/spec/support/models/album.rb +0 -1
  646. data/spec/support/models/alert.rb +0 -1
  647. data/spec/support/models/animal.rb +0 -1
  648. data/spec/support/models/answer.rb +0 -1
  649. data/spec/support/models/appointment.rb +0 -1
  650. data/spec/support/models/armrest.rb +0 -1
  651. data/spec/support/models/array_field.rb +0 -1
  652. data/spec/support/models/article.rb +0 -1
  653. data/spec/support/models/artist.rb +2 -1
  654. data/spec/support/models/artwork.rb +0 -1
  655. data/spec/support/models/audible_sound.rb +3 -0
  656. data/spec/support/models/audio.rb +0 -1
  657. data/spec/support/models/augmentation.rb +0 -1
  658. data/spec/support/models/author.rb +0 -1
  659. data/spec/support/models/baby.rb +0 -1
  660. data/spec/support/models/band.rb +4 -1
  661. data/spec/support/models/bar.rb +0 -1
  662. data/spec/support/models/basic.rb +0 -1
  663. data/spec/support/models/bed.rb +0 -1
  664. data/spec/support/models/big_palette.rb +0 -1
  665. data/spec/support/models/birthday.rb +0 -1
  666. data/spec/support/models/bolt.rb +0 -1
  667. data/spec/support/models/bomb.rb +0 -1
  668. data/spec/support/models/book.rb +0 -1
  669. data/spec/support/models/breed.rb +0 -1
  670. data/spec/support/models/browser.rb +0 -1
  671. data/spec/support/models/building.rb +0 -1
  672. data/spec/support/models/building_address.rb +0 -1
  673. data/spec/support/models/bus.rb +0 -1
  674. data/spec/support/models/business.rb +0 -1
  675. data/spec/support/models/callback_test.rb +0 -1
  676. data/spec/support/models/canvas.rb +0 -1
  677. data/spec/support/models/car.rb +0 -1
  678. data/spec/support/models/cat.rb +0 -1
  679. data/spec/support/models/category.rb +0 -1
  680. data/spec/support/models/child.rb +0 -1
  681. data/spec/support/models/child_doc.rb +3 -4
  682. data/spec/support/models/church.rb +0 -1
  683. data/spec/support/models/circle.rb +0 -1
  684. data/spec/support/models/circuit.rb +0 -1
  685. data/spec/support/models/circus.rb +0 -1
  686. data/spec/support/models/code.rb +0 -1
  687. data/spec/support/models/coding/pull_request.rb +0 -1
  688. data/spec/support/models/coding.rb +0 -1
  689. data/spec/support/models/comment.rb +0 -1
  690. data/spec/support/models/company.rb +0 -1
  691. data/spec/support/models/consumption_period.rb +0 -1
  692. data/spec/support/models/contextable_item.rb +0 -1
  693. data/spec/support/models/contractor.rb +0 -1
  694. data/spec/support/models/cookie.rb +0 -1
  695. data/spec/support/models/country_code.rb +2 -1
  696. data/spec/support/models/courier_job.rb +0 -1
  697. data/spec/support/models/crate.rb +0 -1
  698. data/spec/support/models/customer.rb +0 -1
  699. data/spec/support/models/customer_address.rb +0 -1
  700. data/spec/support/models/deed.rb +0 -1
  701. data/spec/support/models/definition.rb +0 -1
  702. data/spec/support/models/delegating_patient.rb +0 -1
  703. data/spec/support/models/description.rb +0 -1
  704. data/spec/support/models/dictionary.rb +0 -1
  705. data/spec/support/models/division.rb +0 -1
  706. data/spec/support/models/doctor.rb +0 -1
  707. data/spec/support/models/dog.rb +0 -1
  708. data/spec/support/models/dokument.rb +0 -1
  709. data/spec/support/models/draft.rb +0 -1
  710. data/spec/support/models/dragon.rb +0 -1
  711. data/spec/support/models/driver.rb +0 -1
  712. data/spec/support/models/drug.rb +0 -1
  713. data/spec/support/models/dungeon.rb +0 -1
  714. data/spec/support/models/edit.rb +0 -1
  715. data/spec/support/models/email.rb +0 -1
  716. data/spec/support/models/employer.rb +0 -1
  717. data/spec/support/models/entry.rb +0 -1
  718. data/spec/support/models/eraser.rb +0 -1
  719. data/spec/support/models/even.rb +0 -1
  720. data/spec/support/models/event.rb +0 -1
  721. data/spec/support/models/exhibition.rb +0 -1
  722. data/spec/support/models/exhibitor.rb +0 -1
  723. data/spec/support/models/explosion.rb +0 -1
  724. data/spec/support/models/eye.rb +0 -1
  725. data/spec/support/models/eye_bowl.rb +0 -1
  726. data/spec/support/models/face.rb +0 -1
  727. data/spec/support/models/favorite.rb +0 -1
  728. data/spec/support/models/filesystem.rb +0 -1
  729. data/spec/support/models/fire_hydrant.rb +0 -1
  730. data/spec/support/models/firefox.rb +0 -1
  731. data/spec/support/models/fish.rb +0 -1
  732. data/spec/support/models/folder.rb +0 -1
  733. data/spec/support/models/folder_item.rb +0 -1
  734. data/spec/support/models/fruits.rb +0 -1
  735. data/spec/support/models/game.rb +0 -1
  736. data/spec/support/models/ghost.rb +0 -1
  737. data/spec/support/models/guitar.rb +0 -1
  738. data/spec/support/models/hole.rb +0 -1
  739. data/spec/support/models/home.rb +0 -1
  740. data/spec/support/models/house.rb +0 -1
  741. data/spec/support/models/html_writer.rb +0 -1
  742. data/spec/support/models/id_key.rb +0 -1
  743. data/spec/support/models/idnodef.rb +0 -1
  744. data/spec/support/models/image.rb +0 -1
  745. data/spec/support/models/implant.rb +0 -1
  746. data/spec/support/models/instrument.rb +0 -1
  747. data/spec/support/models/item.rb +0 -1
  748. data/spec/support/models/jar.rb +0 -1
  749. data/spec/support/models/kaleidoscope.rb +0 -1
  750. data/spec/support/models/kangaroo.rb +0 -1
  751. data/spec/support/models/label.rb +2 -2
  752. data/spec/support/models/language.rb +0 -1
  753. data/spec/support/models/lat_lng.rb +0 -1
  754. data/spec/support/models/league.rb +0 -1
  755. data/spec/support/models/learner.rb +0 -1
  756. data/spec/support/models/line_item.rb +0 -1
  757. data/spec/support/models/location.rb +0 -1
  758. data/spec/support/models/login.rb +0 -1
  759. data/spec/support/models/manufacturer.rb +0 -1
  760. data/spec/support/models/meat.rb +0 -1
  761. data/spec/support/models/membership.rb +1 -1
  762. data/spec/support/models/message.rb +0 -1
  763. data/spec/support/models/minim.rb +0 -1
  764. data/spec/support/models/mixed_drink.rb +0 -1
  765. data/spec/support/models/mop.rb +0 -1
  766. data/spec/support/models/movie.rb +0 -1
  767. data/spec/support/models/my_hash.rb +0 -1
  768. data/spec/support/models/name.rb +0 -1
  769. data/spec/support/models/name_only.rb +0 -1
  770. data/spec/support/models/node.rb +0 -1
  771. data/spec/support/models/note.rb +0 -1
  772. data/spec/support/models/nut.rb +0 -1
  773. data/spec/support/models/odd.rb +0 -1
  774. data/spec/support/models/order.rb +2 -1
  775. data/spec/support/models/ordered_post.rb +1 -2
  776. data/spec/support/models/ordered_preference.rb +0 -1
  777. data/spec/support/models/oscar.rb +0 -1
  778. data/spec/support/models/other_owner_object.rb +0 -1
  779. data/spec/support/models/override.rb +0 -1
  780. data/spec/support/models/ownable.rb +0 -1
  781. data/spec/support/models/owner.rb +0 -1
  782. data/spec/support/models/pack.rb +0 -1
  783. data/spec/support/models/page.rb +0 -1
  784. data/spec/support/models/page_question.rb +0 -1
  785. data/spec/support/models/palette.rb +0 -1
  786. data/spec/support/models/parent.rb +0 -1
  787. data/spec/support/models/parent_doc.rb +0 -1
  788. data/spec/support/models/passport.rb +5 -1
  789. data/spec/support/models/patient.rb +0 -1
  790. data/spec/support/models/pdf_writer.rb +0 -1
  791. data/spec/support/models/pencil.rb +0 -1
  792. data/spec/support/models/person.rb +1 -1
  793. data/spec/support/models/pet.rb +0 -1
  794. data/spec/support/models/pet_owner.rb +0 -1
  795. data/spec/support/models/phone.rb +2 -2
  796. data/spec/support/models/piano.rb +0 -1
  797. data/spec/support/models/pizza.rb +0 -1
  798. data/spec/support/models/player.rb +0 -1
  799. data/spec/support/models/post.rb +0 -1
  800. data/spec/support/models/post_genre.rb +0 -1
  801. data/spec/support/models/powerup.rb +0 -1
  802. data/spec/support/models/preference.rb +0 -1
  803. data/spec/support/models/princess.rb +0 -1
  804. data/spec/support/models/product.rb +0 -1
  805. data/spec/support/models/profile.rb +0 -1
  806. data/spec/support/models/pronunciation.rb +0 -1
  807. data/spec/support/models/pub.rb +0 -1
  808. data/spec/support/models/publication/encyclopedia.rb +0 -1
  809. data/spec/support/models/publication/review.rb +0 -1
  810. data/spec/support/models/publication.rb +0 -1
  811. data/spec/support/models/purchase.rb +0 -1
  812. data/spec/support/models/purchased_item.rb +10 -0
  813. data/spec/support/models/question.rb +0 -1
  814. data/spec/support/models/quiz.rb +0 -1
  815. data/spec/support/models/rating.rb +0 -1
  816. data/spec/support/models/record.rb +0 -1
  817. data/spec/support/models/registry.rb +0 -1
  818. data/spec/support/models/role.rb +0 -1
  819. data/spec/support/models/root_category.rb +0 -1
  820. data/spec/support/models/sandwich.rb +0 -1
  821. data/spec/support/models/scheduler.rb +0 -1
  822. data/spec/support/models/scribe.rb +0 -1
  823. data/spec/support/models/sealer.rb +0 -1
  824. data/spec/support/models/seat.rb +0 -1
  825. data/spec/support/models/seo.rb +0 -1
  826. data/spec/support/models/series.rb +0 -1
  827. data/spec/support/models/server.rb +0 -1
  828. data/spec/support/models/service.rb +0 -1
  829. data/spec/support/models/shape.rb +0 -1
  830. data/spec/support/models/shelf.rb +0 -1
  831. data/spec/support/models/shipment_address.rb +0 -1
  832. data/spec/support/models/shipping_container.rb +0 -1
  833. data/spec/support/models/shipping_pack.rb +0 -1
  834. data/spec/support/models/shirt.rb +0 -1
  835. data/spec/support/models/shop.rb +0 -1
  836. data/spec/support/models/short_agent.rb +0 -1
  837. data/spec/support/models/short_quiz.rb +0 -1
  838. data/spec/support/models/simple.rb +0 -1
  839. data/spec/support/models/slave.rb +0 -1
  840. data/spec/support/models/song.rb +0 -1
  841. data/spec/support/models/sound.rb +0 -1
  842. data/spec/support/models/spacer.rb +0 -1
  843. data/spec/support/models/square.rb +0 -1
  844. data/spec/support/models/staff.rb +0 -1
  845. data/spec/support/models/store_as_dup_test1.rb +0 -1
  846. data/spec/support/models/store_as_dup_test2.rb +0 -1
  847. data/spec/support/models/store_as_dup_test3.rb +0 -1
  848. data/spec/support/models/store_as_dup_test4.rb +0 -1
  849. data/spec/support/models/strategy.rb +0 -1
  850. data/spec/support/models/sub_item.rb +0 -1
  851. data/spec/support/models/subscription.rb +0 -1
  852. data/spec/support/models/survey.rb +0 -1
  853. data/spec/support/models/symptom.rb +0 -1
  854. data/spec/support/models/tag.rb +0 -1
  855. data/spec/support/models/target.rb +0 -1
  856. data/spec/support/models/template.rb +0 -1
  857. data/spec/support/models/thing.rb +0 -1
  858. data/spec/support/models/threadlocker.rb +0 -1
  859. data/spec/support/models/title.rb +0 -1
  860. data/spec/support/models/tool.rb +0 -1
  861. data/spec/support/models/topping.rb +0 -1
  862. data/spec/support/models/toy.rb +0 -1
  863. data/spec/support/models/track.rb +0 -1
  864. data/spec/support/models/translation.rb +0 -1
  865. data/spec/support/models/tree.rb +0 -1
  866. data/spec/support/models/truck.rb +0 -1
  867. data/spec/support/models/updatable.rb +0 -1
  868. data/spec/support/models/user.rb +0 -1
  869. data/spec/support/models/user_account.rb +0 -1
  870. data/spec/support/models/validation_callback.rb +0 -1
  871. data/spec/support/models/vehicle.rb +0 -1
  872. data/spec/support/models/version.rb +0 -1
  873. data/spec/support/models/vertex.rb +0 -1
  874. data/spec/support/models/vet_visit.rb +0 -1
  875. data/spec/support/models/video.rb +0 -1
  876. data/spec/support/models/video_game.rb +0 -1
  877. data/spec/support/models/washer.rb +0 -1
  878. data/spec/support/models/weapon.rb +0 -1
  879. data/spec/support/models/wiki_page.rb +0 -1
  880. data/spec/support/models/word.rb +0 -1
  881. data/spec/support/models/word_origin.rb +0 -1
  882. data/spec/support/models/writer.rb +0 -1
  883. data/spec/support/schema_maps/schema_map_aws.json +17 -0
  884. data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
  885. data/spec/support/schema_maps/schema_map_azure.json +17 -0
  886. data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
  887. data/spec/support/schema_maps/schema_map_gcp.json +17 -0
  888. data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
  889. data/spec/support/schema_maps/schema_map_kmip.json +17 -0
  890. data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
  891. data/spec/support/schema_maps/schema_map_local.json +18 -0
  892. data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
  893. data/spec/support/shared/time.rb +0 -1
  894. data/spec/support/spec_config.rb +7 -1
  895. data.tar.gz.sig +0 -0
  896. metadata +630 -587
  897. metadata.gz.sig +0 -0
  898. data/lib/support/ruby_version.rb +0 -29
  899. data/spec/support/session_registry.rb +0 -50
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
4
+ require_relative '../embeds_many_models.rb'
5
5
 
6
6
  describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
7
7
 
@@ -115,7 +115,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
115
115
  context "when the parent is not a new record" do
116
116
 
117
117
  let(:person) do
118
- Person.create
118
+ Person.create!
119
119
  end
120
120
 
121
121
  let(:address) do
@@ -134,7 +134,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
134
134
  context "when appending more than one document at once" do
135
135
 
136
136
  let(:person) do
137
- Person.create
137
+ Person.create!
138
138
  end
139
139
 
140
140
  let(:address_one) do
@@ -210,7 +210,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
210
210
  context "when the parent is not a new record" do
211
211
 
212
212
  let(:parent_role) do
213
- Role.create(name: "CEO")
213
+ Role.create!(name: "CEO")
214
214
  end
215
215
 
216
216
  let(:child_role) do
@@ -229,7 +229,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
229
229
 
230
230
  context "when the child has one sided many to many relation" do
231
231
  let(:person) do
232
- Person.create
232
+ Person.create!
233
233
  end
234
234
 
235
235
  let(:message) do
@@ -312,7 +312,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
312
312
  context "when the parent is not a new record" do
313
313
 
314
314
  let(:person) do
315
- Person.create
315
+ Person.create!
316
316
  end
317
317
 
318
318
  let(:address) do
@@ -333,11 +333,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
333
333
  context "when setting via an overridden method from the parent" do
334
334
 
335
335
  let!(:person) do
336
- Person.create
336
+ Person.create!
337
337
  end
338
338
 
339
339
  let!(:address) do
340
- person.addresses.create(street: "Alt Treptow")
340
+ person.addresses.create!(street: "Alt Treptow")
341
341
  end
342
342
 
343
343
  let!(:new_address) do
@@ -345,7 +345,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
345
345
  end
346
346
 
347
347
  before do
348
- person.update_attributes(set_addresses: [ new_address ])
348
+ person.update_attributes!(set_addresses: [ new_address ])
349
349
  end
350
350
 
351
351
  it "overwrites the existing addresses" do
@@ -375,7 +375,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
375
375
 
376
376
  before do
377
377
  person.addresses = [ address_two ]
378
- person.save
378
+ person.save!
379
379
  end
380
380
 
381
381
  it "sets the new documents" do
@@ -409,7 +409,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
409
409
 
410
410
  before do
411
411
  doctor.addresses = [ address_one ]
412
- doctor.save
412
+ doctor.save!
413
413
  end
414
414
 
415
415
  it "sets the documents" do
@@ -428,7 +428,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
428
428
 
429
429
  before do
430
430
  doctor.addresses = [ address_two ]
431
- doctor.save
431
+ doctor.save!
432
432
  end
433
433
 
434
434
  it "sets the new documents" do
@@ -446,7 +446,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
446
446
  context "when replacing an existing relation" do
447
447
 
448
448
  let(:person) do
449
- Person.create(addresses: addresses)
449
+ Person.create!(addresses: addresses)
450
450
  end
451
451
 
452
452
  let(:addresses) do
@@ -507,7 +507,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
507
507
  end
508
508
 
509
509
  let(:tracking_id) do
510
- MyCompany::Model::TrackingId.create
510
+ MyCompany::Model::TrackingId.create!
511
511
  end
512
512
 
513
513
  let(:history) do
@@ -542,7 +542,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
542
542
  inflect.singular("address_numbers", "address_number")
543
543
  end
544
544
  slave.address_numbers << AddressNumber.new(country_code: 1)
545
- slave.save
545
+ slave.save!
546
546
  end
547
547
 
548
548
  it "requires an inflection to determine the class" do
@@ -553,15 +553,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
553
553
  context "when setting the entire tree via a hash" do
554
554
 
555
555
  let(:person) do
556
- Person.create
556
+ Person.create!
557
557
  end
558
558
 
559
559
  let!(:address_one) do
560
- person.addresses.create(street: "Tauentzienstr")
560
+ person.addresses.create!(street: "Tauentzienstr")
561
561
  end
562
562
 
563
563
  let!(:address_two) do
564
- person.addresses.create(street: "Kudamm")
564
+ person.addresses.create!(street: "Kudamm")
565
565
  end
566
566
 
567
567
  let(:attributes) do
@@ -572,7 +572,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
572
572
 
573
573
  before do
574
574
  attributes["addresses"][0]["city"] = "Berlin"
575
- person.update_attributes(attributes)
575
+ person.update_attributes!(attributes)
576
576
  end
577
577
 
578
578
  it "sets the new attributes" do
@@ -588,15 +588,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
588
588
  context "when setting an embedded sub-document tree via a hash" do
589
589
 
590
590
  let(:person) do
591
- Person.create
591
+ Person.create!
592
592
  end
593
593
 
594
594
  let!(:address_one) do
595
- person.addresses.create(street: "Tauentzienstr")
595
+ person.addresses.create!(street: "Tauentzienstr")
596
596
  end
597
597
 
598
598
  let!(:location_one) do
599
- person.addresses.first.locations.create(name: "Work")
599
+ person.addresses.first.locations.create!(name: "Work")
600
600
  end
601
601
 
602
602
  let(:attributes) do
@@ -608,7 +608,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
608
608
  before do
609
609
  attributes["city"] = "Berlin"
610
610
  attributes["locations"][0]["name"] = "Home"
611
- person.addresses.first.update_attributes(attributes)
611
+ person.addresses.first.update_attributes!(attributes)
612
612
  end
613
613
 
614
614
  it "sets the new attributes on the address" do
@@ -681,7 +681,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
681
681
  context "when the parent is not a new record" do
682
682
 
683
683
  let(:parent_role) do
684
- Role.create(name: "CTO")
684
+ Role.create!(name: "CTO")
685
685
  end
686
686
 
687
687
  let(:child_role) do
@@ -749,7 +749,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
749
749
  context "when the parent is persisted" do
750
750
 
751
751
  let(:person) do
752
- Person.create
752
+ Person.create!
753
753
  end
754
754
 
755
755
  let(:address) do
@@ -798,7 +798,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
798
798
  context "when saving the parent" do
799
799
 
800
800
  before do
801
- person.save
801
+ person.save!
802
802
  person.reload
803
803
  end
804
804
 
@@ -812,7 +812,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
812
812
  context "when setting on a reload" do
813
813
 
814
814
  let(:person) do
815
- Person.create
815
+ Person.create!
816
816
  end
817
817
 
818
818
  let(:address) do
@@ -882,7 +882,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
882
882
  context "when the documents are not new records" do
883
883
 
884
884
  let(:parent_role) do
885
- Role.create
885
+ Role.create!
886
886
  end
887
887
 
888
888
  let(:child_role) do
@@ -912,13 +912,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
912
912
  describe "#as_document" do
913
913
 
914
914
  let!(:person) do
915
- Person.create
915
+ Person.create!
916
916
  end
917
917
 
918
918
  context 'when a string is used to access an attribute' do
919
919
 
920
920
  let!(:address) do
921
- person.addresses.create(street: "one")
921
+ person.addresses.create!(street: "one")
922
922
  end
923
923
 
924
924
  let(:document) do
@@ -933,7 +933,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
933
933
  context 'when a symbol is used to access an attribute' do
934
934
 
935
935
  let!(:address) do
936
- person.addresses.create(street: "one")
936
+ person.addresses.create!(street: "one")
937
937
  end
938
938
 
939
939
  let(:document) do
@@ -948,7 +948,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
948
948
  context "when the relation has no default scope" do
949
949
 
950
950
  let!(:address) do
951
- person.addresses.create(street: "one")
951
+ person.addresses.create!(street: "one")
952
952
  end
953
953
 
954
954
  let(:document) do
@@ -1105,7 +1105,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1105
1105
  context "when providing nested attributes" do
1106
1106
 
1107
1107
  let(:person) do
1108
- Person.create
1108
+ Person.create!
1109
1109
  end
1110
1110
 
1111
1111
  let(:address) do
@@ -1119,7 +1119,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1119
1119
  context "when followed by a save" do
1120
1120
 
1121
1121
  before do
1122
- address.save
1122
+ address.save!
1123
1123
  end
1124
1124
 
1125
1125
  let(:location) do
@@ -1139,13 +1139,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1139
1139
  context "when the parent has been persisted" do
1140
1140
 
1141
1141
  let(:person) do
1142
- Person.create
1142
+ Person.create!
1143
1143
  end
1144
1144
 
1145
1145
  context "when the children are persisted" do
1146
1146
 
1147
1147
  let!(:address) do
1148
- person.addresses.create(street: "High St")
1148
+ person.addresses.create!(street: "High St")
1149
1149
  end
1150
1150
 
1151
1151
  let!(:relation) do
@@ -1261,7 +1261,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1261
1261
  context "when the parent is not a new record" do
1262
1262
 
1263
1263
  let(:person) do
1264
- Person.create
1264
+ Person.create!
1265
1265
  end
1266
1266
 
1267
1267
  let(:address) do
@@ -1280,7 +1280,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1280
1280
  context "when concatenating an empty array" do
1281
1281
 
1282
1282
  let(:person) do
1283
- Person.create
1283
+ Person.create!
1284
1284
  end
1285
1285
 
1286
1286
  before do
@@ -1296,7 +1296,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1296
1296
  context "when appending more than one document at once" do
1297
1297
 
1298
1298
  let(:person) do
1299
- Person.create
1299
+ Person.create!
1300
1300
  end
1301
1301
 
1302
1302
  let(:address_one) do
@@ -1368,7 +1368,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1368
1368
  context "when the parent is not a new record" do
1369
1369
 
1370
1370
  let(:parent_role) do
1371
- Role.create(name: "CEO")
1371
+ Role.create!(name: "CEO")
1372
1372
  end
1373
1373
 
1374
1374
  let(:child_role) do
@@ -1389,49 +1389,261 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1389
1389
  describe "#count" do
1390
1390
 
1391
1391
  let(:person) do
1392
- Person.create
1392
+ Person.create!
1393
1393
  end
1394
1394
 
1395
1395
  before do
1396
- person.addresses.create(street: "Upper")
1396
+ person.addresses.create!(street: "Upper")
1397
1397
  person.addresses.build(street: "Bond")
1398
+ person.addresses.build(street: "Lower")
1398
1399
  end
1399
1400
 
1400
1401
  it "returns the number of persisted documents" do
1401
1402
  expect(person.addresses.count).to eq(1)
1402
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
1403
1423
  end
1404
1424
 
1405
1425
  describe "#any?" do
1406
1426
 
1407
1427
  let(:person) do
1408
- Person.create
1428
+ Person.create!
1409
1429
  end
1410
1430
 
1411
1431
  context "when documents are persisted" do
1412
1432
  before do
1413
- person.addresses.create(street: "Upper")
1433
+ person.addresses.create!(street: "Upper")
1414
1434
  end
1415
1435
 
1416
1436
  it "returns true" do
1417
1437
  expect(person.addresses.any?).to be true
1418
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
1419
1454
  end
1420
-
1455
+
1421
1456
  context "when documents are not persisted" do
1422
1457
  before do
1423
1458
  person.addresses.build(street: "Bond")
1424
1459
  end
1425
-
1460
+
1426
1461
  it "returns true" do
1427
1462
  expect(person.addresses.any?).to be true
1428
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
1429
1479
  end
1430
1480
 
1431
- context "when documents are not created" do
1481
+ context "when documents are not present" do
1432
1482
  it "returns false" do
1433
1483
  expect(person.addresses.any?).to be false
1434
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
1435
1647
  end
1436
1648
  end
1437
1649
 
@@ -1440,11 +1652,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1440
1652
  context "when providing multiple attributes" do
1441
1653
 
1442
1654
  let(:person) do
1443
- Person.create
1655
+ Person.create!
1444
1656
  end
1445
1657
 
1446
1658
  let!(:addresses) do
1447
- person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
1659
+ person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
1448
1660
  end
1449
1661
 
1450
1662
  it "creates multiple documents" do
@@ -1467,11 +1679,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1467
1679
  context "when the relation is not cyclic" do
1468
1680
 
1469
1681
  let(:person) do
1470
- Person.create
1682
+ Person.create!
1471
1683
  end
1472
1684
 
1473
1685
  let!(:address) do
1474
- person.addresses.create(street: "Bond") do |address|
1686
+ person.addresses.create!(street: "Bond") do |address|
1475
1687
  address.state = "CA"
1476
1688
  end
1477
1689
  end
@@ -1515,7 +1727,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1515
1727
  context "when embedding a multi word named document" do
1516
1728
 
1517
1729
  let!(:component) do
1518
- person.address_components.create(street: "Test")
1730
+ person.address_components.create!(street: "Test")
1519
1731
  end
1520
1732
 
1521
1733
  it "saves the embedded document" do
@@ -1527,11 +1739,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1527
1739
  context "when the relation is cyclic" do
1528
1740
 
1529
1741
  let!(:entry) do
1530
- Entry.create(title: "hi")
1742
+ Entry.create!(title: "hi")
1531
1743
  end
1532
1744
 
1533
1745
  let!(:child_entry) do
1534
- entry.child_entries.create(title: "hello")
1746
+ entry.child_entries.create!(title: "hello")
1535
1747
  end
1536
1748
 
1537
1749
  it "creates a new child" do
@@ -1543,7 +1755,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1543
1755
  describe "#create!" do
1544
1756
 
1545
1757
  let(:person) do
1546
- Person.create
1758
+ Person.create!
1547
1759
  end
1548
1760
 
1549
1761
  context "when providing multiple attributes" do
@@ -1702,7 +1914,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1702
1914
  describe "#delete_if" do
1703
1915
 
1704
1916
  let(:person) do
1705
- Person.create
1917
+ Person.create!
1706
1918
  end
1707
1919
 
1708
1920
  context "when the documents are new" do
@@ -1751,11 +1963,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1751
1963
  context "when the documents persisted" do
1752
1964
 
1753
1965
  let!(:address_one) do
1754
- person.addresses.create(street: "Bond")
1966
+ person.addresses.create!(street: "Bond")
1755
1967
  end
1756
1968
 
1757
1969
  let!(:address_two) do
1758
- person.addresses.create(street: "Upper")
1970
+ person.addresses.create!(street: "Upper")
1759
1971
  end
1760
1972
 
1761
1973
  context "when a block is provided" do
@@ -1810,7 +2022,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1810
2022
  describe "##{method}" do
1811
2023
 
1812
2024
  let(:person) do
1813
- Person.create
2025
+ Person.create!
1814
2026
  end
1815
2027
 
1816
2028
  context "when the documents are new" do
@@ -1864,11 +2076,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1864
2076
  context "when the documents persisted" do
1865
2077
 
1866
2078
  let!(:address_one) do
1867
- person.addresses.create(street: "Bond")
2079
+ person.addresses.create!(street: "Bond")
1868
2080
  end
1869
2081
 
1870
2082
  let!(:address_two) do
1871
- person.addresses.create(street: "Upper")
2083
+ person.addresses.create!(street: "Upper")
1872
2084
  end
1873
2085
 
1874
2086
  context "when conditions are provided" do
@@ -1915,7 +2127,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
1915
2127
  context "when removing and resaving" do
1916
2128
 
1917
2129
  let(:owner) do
1918
- PetOwner.create(title: "AKC")
2130
+ PetOwner.create!(title: "AKC")
1919
2131
  end
1920
2132
 
1921
2133
  before do
@@ -2011,13 +2223,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2011
2223
  describe "#exists?" do
2012
2224
 
2013
2225
  let!(:person) do
2014
- Person.create
2226
+ Person.create!
2015
2227
  end
2016
2228
 
2017
2229
  context "when documents exist in the database" do
2018
2230
 
2019
2231
  before do
2020
- person.addresses.create(street: "Bond St")
2232
+ person.addresses.create!(street: "Bond St")
2021
2233
  end
2022
2234
 
2023
2235
  it "returns true" do
@@ -2148,12 +2360,50 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2148
2360
  end
2149
2361
  end
2150
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
2151
2401
  end
2152
2402
 
2153
2403
  describe "#find_or_create_by" do
2154
2404
 
2155
2405
  let(:person) do
2156
- Person.create
2406
+ Person.create!
2157
2407
  end
2158
2408
 
2159
2409
  let!(:address) do
@@ -2196,11 +2446,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2196
2446
  # context "when the child belongs to another document" do
2197
2447
  #
2198
2448
  # let(:product) do
2199
- # Product.create
2449
+ # Product.create!
2200
2450
  # end
2201
2451
  #
2202
2452
  # let(:purchase) do
2203
- # Purchase.create
2453
+ # Purchase.create!
2204
2454
  # end
2205
2455
  #
2206
2456
  # let(:line_item) do
@@ -2219,7 +2469,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2219
2469
  describe "#find_or_create_by!" do
2220
2470
 
2221
2471
  let(:person) do
2222
- Person.create
2472
+ Person.create!
2223
2473
  end
2224
2474
 
2225
2475
  let!(:address) do
@@ -2271,11 +2521,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2271
2521
  # context "when the child belongs to another document" do
2272
2522
  #
2273
2523
  # let(:product) do
2274
- # Product.create
2524
+ # Product.create!
2275
2525
  # end
2276
2526
  #
2277
2527
  # let(:purchase) do
2278
- # Purchase.create
2528
+ # Purchase.create!
2279
2529
  # end
2280
2530
  #
2281
2531
  # let(:line_item) do
@@ -2393,11 +2643,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2393
2643
  describe "#method_missing" do
2394
2644
 
2395
2645
  let!(:person) do
2396
- Person.create
2646
+ Person.create!
2397
2647
  end
2398
2648
 
2399
2649
  let!(:address_one) do
2400
- person.addresses.create(
2650
+ person.addresses.create!(
2401
2651
  street: "Market",
2402
2652
  state: "CA",
2403
2653
  services: [ "1", "2" ]
@@ -2405,7 +2655,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2405
2655
  end
2406
2656
 
2407
2657
  let!(:address_two) do
2408
- person.addresses.create(
2658
+ person.addresses.create!(
2409
2659
  street: "Madison",
2410
2660
  state: "NY",
2411
2661
  services: [ "1", "2" ]
@@ -2553,17 +2803,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2553
2803
  describe "#pop" do
2554
2804
 
2555
2805
  let(:person) do
2556
- Person.create
2806
+ Person.create!
2557
2807
  end
2558
2808
 
2559
2809
  context "when no argument is provided" do
2560
2810
 
2561
2811
  let!(:address_one) do
2562
- person.addresses.create(street: "sonnenallee")
2812
+ person.addresses.create!(street: "sonnenallee")
2563
2813
  end
2564
2814
 
2565
2815
  let!(:address_two) do
2566
- person.addresses.create(street: "hermannstr")
2816
+ person.addresses.create!(street: "hermannstr")
2567
2817
  end
2568
2818
 
2569
2819
  let!(:popped) do
@@ -2586,11 +2836,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2586
2836
  context "when an integer is provided" do
2587
2837
 
2588
2838
  let!(:address_one) do
2589
- person.addresses.create(street: "sonnenallee")
2839
+ person.addresses.create!(street: "sonnenallee")
2590
2840
  end
2591
2841
 
2592
2842
  let!(:address_two) do
2593
- person.addresses.create(street: "hermannstr")
2843
+ person.addresses.create!(street: "hermannstr")
2594
2844
  end
2595
2845
 
2596
2846
  context "when the number is zero" do
@@ -2672,17 +2922,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2672
2922
  describe "#shift" do
2673
2923
 
2674
2924
  let(:person) do
2675
- Person.create
2925
+ Person.create!
2676
2926
  end
2677
2927
 
2678
2928
  context "when no argument is provided" do
2679
2929
 
2680
2930
  let!(:address_one) do
2681
- person.addresses.create(street: "sonnenallee")
2931
+ person.addresses.create!(street: "sonnenallee")
2682
2932
  end
2683
2933
 
2684
2934
  let!(:address_two) do
2685
- person.addresses.create(street: "hermannstr")
2935
+ person.addresses.create!(street: "hermannstr")
2686
2936
  end
2687
2937
 
2688
2938
  let!(:shifted) do
@@ -2705,11 +2955,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2705
2955
  context "when an integer is provided" do
2706
2956
 
2707
2957
  let!(:address_one) do
2708
- person.addresses.create(street: "sonnenallee")
2958
+ person.addresses.create!(street: "sonnenallee")
2709
2959
  end
2710
2960
 
2711
2961
  let!(:address_two) do
2712
- person.addresses.create(street: "hermannstr")
2962
+ person.addresses.create!(street: "hermannstr")
2713
2963
  end
2714
2964
 
2715
2965
  context "when the number is zero" do
@@ -2857,11 +3107,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2857
3107
  describe "##{method}" do
2858
3108
 
2859
3109
  let(:person) do
2860
- Person.create
3110
+ Person.create!
2861
3111
  end
2862
3112
 
2863
3113
  before do
2864
- person.addresses.create(street: "Upper")
3114
+ person.addresses.create!(street: "Upper")
2865
3115
  person.addresses.build(street: "Bond")
2866
3116
  end
2867
3117
 
@@ -2899,7 +3149,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2899
3149
  context "when there are no documents present" do
2900
3150
 
2901
3151
  let(:person) do
2902
- Person.create
3152
+ Person.create!
2903
3153
  end
2904
3154
 
2905
3155
  it "updates nothing" do
@@ -2910,11 +3160,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2910
3160
  context "when documents are present" do
2911
3161
 
2912
3162
  let(:person) do
2913
- Person.create
3163
+ Person.create!
2914
3164
  end
2915
3165
 
2916
3166
  let!(:address) do
2917
- person.addresses.create(street: "Hobrecht", number: 27)
3167
+ person.addresses.create!(street: "Hobrecht", number: 27)
2918
3168
  end
2919
3169
 
2920
3170
  context "when updating with a where clause" do
@@ -2949,16 +3199,16 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2949
3199
  context "when updating the bottom level" do
2950
3200
 
2951
3201
  let!(:person) do
2952
- Person.create
3202
+ Person.create!
2953
3203
  end
2954
3204
 
2955
3205
  let!(:address) do
2956
- person.addresses.create(street: "Joachimstr")
3206
+ person.addresses.create!(street: "Joachimstr")
2957
3207
  end
2958
3208
 
2959
3209
  let!(:location) do
2960
- address.locations.create(name: "vacation", number: 0)
2961
- address.locations.create(name: "work", number: 3)
3210
+ address.locations.create!(name: "vacation", number: 0)
3211
+ address.locations.create!(name: "work", number: 3)
2962
3212
  end
2963
3213
 
2964
3214
  context "when updating with replacement of embedded array" do
@@ -2966,7 +3216,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2966
3216
  context "when updating with a hash" do
2967
3217
 
2968
3218
  before do
2969
- address.update_attributes(locations: [{ name: "home" }])
3219
+ address.update_attributes!(locations: [{ name: "home" }])
2970
3220
  end
2971
3221
 
2972
3222
  it "updates the attributes" do
@@ -2987,7 +3237,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
2987
3237
 
2988
3238
  before do
2989
3239
  location.number = 7
2990
- location.save
3240
+ location.save!
2991
3241
  end
2992
3242
 
2993
3243
  let(:updated_location_number) do
@@ -3120,7 +3370,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3120
3370
  context "when creating a persisted tree" do
3121
3371
 
3122
3372
  let(:quiz) do
3123
- Quiz.create
3373
+ Quiz.create!
3124
3374
  end
3125
3375
 
3126
3376
  let(:page) do
@@ -3185,7 +3435,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3185
3435
  context "when saving the root" do
3186
3436
 
3187
3437
  before do
3188
- person.save
3438
+ person.save!
3189
3439
  end
3190
3440
 
3191
3441
  it "persists the first level document" do
@@ -3339,11 +3589,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3339
3589
  context "when accessing the parent in a destroy callback" do
3340
3590
 
3341
3591
  let!(:league) do
3342
- League.create
3592
+ League.create!
3343
3593
  end
3344
3594
 
3345
3595
  let!(:division) do
3346
- league.divisions.create
3596
+ league.divisions.create!
3347
3597
  end
3348
3598
 
3349
3599
  before do
@@ -3358,15 +3608,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3358
3608
  context "when updating the parent with all attributes" do
3359
3609
 
3360
3610
  let!(:person) do
3361
- Person.create
3611
+ Person.create!
3362
3612
  end
3363
3613
 
3364
3614
  let!(:address) do
3365
- person.addresses.create
3615
+ person.addresses.create!
3366
3616
  end
3367
3617
 
3368
3618
  before do
3369
- person.update_attributes(person.attributes)
3619
+ person.update_attributes!(person.attributes)
3370
3620
  end
3371
3621
 
3372
3622
  it "does not duplicate the embedded documents" do
@@ -3381,13 +3631,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3381
3631
  context "when embedding children named versions" do
3382
3632
 
3383
3633
  let(:acolyte) do
3384
- Acolyte.create(name: "test")
3634
+ Acolyte.create!(name: "test")
3385
3635
  end
3386
3636
 
3387
3637
  context "when creating a child" do
3388
3638
 
3389
3639
  let(:version) do
3390
- acolyte.versions.create(number: 1)
3640
+ acolyte.versions.create!(number: 1)
3391
3641
  end
3392
3642
 
3393
3643
  it "allows the operation" do
@@ -3412,7 +3662,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3412
3662
  let!(:account) do
3413
3663
  Account.new(name: "Testing").tap do |acct|
3414
3664
  acct.memberships.build
3415
- acct.save
3665
+ acct.save!
3416
3666
  end
3417
3667
  end
3418
3668
 
@@ -3424,10 +3674,10 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3424
3674
 
3425
3675
  before do
3426
3676
  account.name = ""
3427
- account.save
3428
3677
  end
3429
3678
 
3430
3679
  it "does not lose the parent reference" do
3680
+ expect(account.save).to eq false
3431
3681
  expect(from_db.memberships.first.account).to eq(account)
3432
3682
  end
3433
3683
  end
@@ -3447,15 +3697,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3447
3697
  context "when moving an embedded document from one parent to another" do
3448
3698
 
3449
3699
  let!(:person_one) do
3450
- Person.create
3700
+ Person.create!
3451
3701
  end
3452
3702
 
3453
3703
  let!(:person_two) do
3454
- Person.create
3704
+ Person.create!
3455
3705
  end
3456
3706
 
3457
3707
  let!(:address) do
3458
- person_one.addresses.create(street: "Kudamm")
3708
+ person_one.addresses.create!(street: "Kudamm")
3459
3709
  end
3460
3710
 
3461
3711
  before do
@@ -3490,7 +3740,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3490
3740
  context "when the relation has a default scope" do
3491
3741
 
3492
3742
  let!(:person) do
3493
- Person.create
3743
+ Person.create!
3494
3744
  end
3495
3745
 
3496
3746
  context "when the default scope is a sort" do
@@ -3560,7 +3810,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3560
3810
  context "when indexing the documents" do
3561
3811
 
3562
3812
  let!(:person) do
3563
- Person.create
3813
+ Person.create!
3564
3814
  end
3565
3815
 
3566
3816
  context "when the documents have a limiting default scope" do
@@ -3609,18 +3859,18 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3609
3859
  context "when the embedded document has an array field" do
3610
3860
 
3611
3861
  let!(:person) do
3612
- Person.create
3862
+ Person.create!
3613
3863
  end
3614
3864
 
3615
3865
  let!(:video) do
3616
- person.videos.create
3866
+ person.videos.create!
3617
3867
  end
3618
3868
 
3619
3869
  context "when saving the array on a persisted document" do
3620
3870
 
3621
3871
  before do
3622
3872
  video.genres = [ "horror", "scifi" ]
3623
- video.save
3873
+ video.save!
3624
3874
  end
3625
3875
 
3626
3876
  it "sets the value" do
@@ -3645,7 +3895,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3645
3895
 
3646
3896
  before do
3647
3897
  loaded_video.genres = [ "comedy" ]
3648
- loaded_video.save
3898
+ loaded_video.save!
3649
3899
  end
3650
3900
 
3651
3901
  it "sets the new value" do
@@ -3663,15 +3913,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3663
3913
  context "when destroying an embedded document" do
3664
3914
 
3665
3915
  let(:person) do
3666
- Person.create
3916
+ Person.create!
3667
3917
  end
3668
3918
 
3669
3919
  let!(:address_one) do
3670
- person.addresses.create(street: "hobrecht")
3920
+ person.addresses.create!(street: "hobrecht")
3671
3921
  end
3672
3922
 
3673
3923
  let!(:address_two) do
3674
- person.addresses.create(street: "maybachufer")
3924
+ person.addresses.create!(street: "maybachufer")
3675
3925
  end
3676
3926
 
3677
3927
  before do
@@ -3743,7 +3993,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3743
3993
  context "when the association has an order defined" do
3744
3994
 
3745
3995
  let(:person) do
3746
- Person.create
3996
+ Person.create!
3747
3997
  end
3748
3998
 
3749
3999
  let(:message_one) do
@@ -3774,11 +4024,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3774
4024
 
3775
4025
  before do
3776
4026
  person.aliases = [ { name: "A", priority: 3 }, { name: "B", priority: 4 }]
3777
- person.save
4027
+ person.save!
3778
4028
  end
3779
4029
 
3780
4030
  let!(:person2) do
3781
- Person.create( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
4031
+ Person.create!( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
3782
4032
  end
3783
4033
 
3784
4034
  it "allows ordering on a key of an embedded document" do
@@ -3813,7 +4063,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3813
4063
  context "when updating multiple levels in one update" do
3814
4064
 
3815
4065
  let!(:person) do
3816
- Person.create(
4066
+ Person.create!(
3817
4067
  addresses: [
3818
4068
  { locations: [{ name: "home" }]}
3819
4069
  ]
@@ -3827,7 +4077,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3827
4077
  end
3828
4078
 
3829
4079
  before do
3830
- from_db.update_attributes(
4080
+ from_db.update_attributes!(
3831
4081
  addresses: [
3832
4082
  { locations: [{ name: "work" }]}
3833
4083
  ]
@@ -3847,15 +4097,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3847
4097
  context "when the embedded relation sorts on a boolean" do
3848
4098
 
3849
4099
  let(:circuit) do
3850
- Circuit.create
4100
+ Circuit.create!
3851
4101
  end
3852
4102
 
3853
4103
  let!(:bus_one) do
3854
- circuit.buses.create(saturday: true)
4104
+ circuit.buses.create!(saturday: true)
3855
4105
  end
3856
4106
 
3857
4107
  let!(:bus_two) do
3858
- circuit.buses.create(saturday: false)
4108
+ circuit.buses.create!(saturday: false)
3859
4109
  end
3860
4110
 
3861
4111
  it "orders properly with the boolean" do
@@ -3866,7 +4116,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3866
4116
  context "when batch replacing multiple relations in a single update" do
3867
4117
 
3868
4118
  let(:document) do
3869
- Person.create
4119
+ Person.create!
3870
4120
  end
3871
4121
 
3872
4122
  let(:person) do
@@ -3874,23 +4124,23 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
3874
4124
  end
3875
4125
 
3876
4126
  let!(:symptom_one) do
3877
- person.symptoms.create
4127
+ person.symptoms.create!
3878
4128
  end
3879
4129
 
3880
4130
  let!(:symptom_two) do
3881
- person.symptoms.create
4131
+ person.symptoms.create!
3882
4132
  end
3883
4133
 
3884
4134
  let!(:appointment_one) do
3885
- person.appointments.create
4135
+ person.appointments.create!
3886
4136
  end
3887
4137
 
3888
4138
  let!(:appointment_two) do
3889
- person.appointments.create
4139
+ person.appointments.create!
3890
4140
  end
3891
4141
 
3892
4142
  before do
3893
- person.update_attributes(
4143
+ person.update_attributes!(
3894
4144
  appointments: [ appointment_one.as_document, appointment_two.as_document ],
3895
4145
  symptoms: [ symptom_one.as_document, symptom_two.as_document ]
3896
4146
  )
@@ -4223,7 +4473,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4223
4473
  context "when the parent has an after create callback" do
4224
4474
 
4225
4475
  before do
4226
- server.save
4476
+ server.save!
4227
4477
  end
4228
4478
 
4229
4479
  it "does not push the embedded documents twice" do
@@ -4235,7 +4485,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4235
4485
  context "when embedded documents are stored without ids" do
4236
4486
 
4237
4487
  let!(:band) do
4238
- Band.create(name: "Moderat")
4488
+ Band.create!(name: "Moderat")
4239
4489
  end
4240
4490
 
4241
4491
  before do
@@ -4285,7 +4535,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4285
4535
  company = Company.new
4286
4536
  4.times { |i| company.staffs << Staff.new(age: 50 + i)}
4287
4537
  2.times { |i| company.staffs << Staff.new(age: 40)}
4288
- company.save
4538
+ company.save!
4289
4539
  company.staffs.delete_if {|x| x.age >= 50}
4290
4540
  expect(company.staffs.count).to eq(2)
4291
4541
  end
@@ -4362,7 +4612,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4362
4612
  context "when the parent is persisted" do
4363
4613
 
4364
4614
  let(:zone) do
4365
- DNS::Zone.create
4615
+ DNS::Zone.create!
4366
4616
  end
4367
4617
 
4368
4618
  let(:soa_1) do
@@ -4400,4 +4650,24 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
4400
4650
  end
4401
4651
  end
4402
4652
  end
4653
+
4654
+ context "when using assign_attributes with an already populated array" do
4655
+ let(:post) { EmmPost.create! }
4656
+
4657
+ before do
4658
+ post.assign_attributes(company_tags: [{id: BSON::ObjectId.new, title: 'a'}],
4659
+ user_tags: [{id: BSON::ObjectId.new, title: 'b'}])
4660
+ post.save!
4661
+ post.reload
4662
+ post.assign_attributes(company_tags: [{id: BSON::ObjectId.new, title: 'c'}],
4663
+ user_tags: [])
4664
+ post.save!
4665
+ post.reload
4666
+ end
4667
+
4668
+ it "has the correct embedded documents" do
4669
+ expect(post.company_tags.length).to eq(1)
4670
+ expect(post.company_tags.first.title).to eq("c")
4671
+ end
4672
+ end
4403
4673
  end