mongoid 7.3.2 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (886) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -17
  4. data/README.md +2 -2
  5. data/lib/config/locales/en.yml +30 -16
  6. data/lib/mongoid/association/accessors.rb +0 -27
  7. data/lib/mongoid/association/bindable.rb +0 -21
  8. data/lib/mongoid/association/builders.rb +0 -9
  9. data/lib/mongoid/association/constrainable.rb +0 -3
  10. data/lib/mongoid/association/depending.rb +0 -7
  11. data/lib/mongoid/association/eager_loadable.rb +0 -3
  12. data/lib/mongoid/association/embedded/batchable.rb +11 -39
  13. data/lib/mongoid/association/embedded/cyclic.rb +2 -11
  14. data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
  15. data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
  16. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
  17. data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
  18. data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
  19. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
  20. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
  21. data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
  22. data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
  23. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
  24. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
  25. data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
  26. data/lib/mongoid/association/embedded.rb +0 -1
  27. data/lib/mongoid/association/macros.rb +6 -5
  28. data/lib/mongoid/association/many.rb +0 -17
  29. data/lib/mongoid/association/marshalable.rb +0 -5
  30. data/lib/mongoid/association/nested/many.rb +0 -11
  31. data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
  32. data/lib/mongoid/association/nested/one.rb +1 -16
  33. data/lib/mongoid/association/nested.rb +0 -3
  34. data/lib/mongoid/association/one.rb +1 -10
  35. data/lib/mongoid/association/options.rb +0 -33
  36. data/lib/mongoid/association/proxy.rb +0 -21
  37. data/lib/mongoid/association/referenced/auto_save.rb +0 -9
  38. data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
  39. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
  40. data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
  41. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
  42. data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
  43. data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
  44. data/lib/mongoid/association/referenced/eager.rb +3 -24
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
  50. data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
  51. data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
  52. data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
  53. data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
  54. data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
  55. data/lib/mongoid/association/referenced/has_many.rb +12 -39
  56. data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
  57. data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
  58. data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
  59. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
  60. data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
  61. data/lib/mongoid/association/referenced/has_one.rb +9 -32
  62. data/lib/mongoid/association/referenced/syncable.rb +0 -17
  63. data/lib/mongoid/association/referenced.rb +0 -1
  64. data/lib/mongoid/association/reflections.rb +0 -1
  65. data/lib/mongoid/association/relatable.rb +2 -61
  66. data/lib/mongoid/association.rb +0 -17
  67. data/lib/mongoid/atomic/modifiers.rb +4 -51
  68. data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
  69. data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
  70. data/lib/mongoid/atomic/paths/embedded.rb +0 -3
  71. data/lib/mongoid/atomic/paths/root.rb +0 -5
  72. data/lib/mongoid/atomic/paths.rb +0 -1
  73. data/lib/mongoid/atomic.rb +27 -44
  74. data/lib/mongoid/attributes/dynamic.rb +0 -17
  75. data/lib/mongoid/attributes/nested.rb +0 -5
  76. data/lib/mongoid/attributes/processing.rb +1 -18
  77. data/lib/mongoid/attributes/projector.rb +0 -1
  78. data/lib/mongoid/attributes/readonly.rb +0 -5
  79. data/lib/mongoid/attributes.rb +0 -33
  80. data/lib/mongoid/cacheable.rb +1 -6
  81. data/lib/mongoid/changeable.rb +3 -59
  82. data/lib/mongoid/clients/factory.rb +0 -7
  83. data/lib/mongoid/clients/options.rb +0 -5
  84. data/lib/mongoid/clients/sessions.rb +0 -7
  85. data/lib/mongoid/clients/storage_options.rb +0 -7
  86. data/lib/mongoid/clients/validators/storage.rb +0 -9
  87. data/lib/mongoid/clients/validators.rb +0 -1
  88. data/lib/mongoid/clients.rb +0 -9
  89. data/lib/mongoid/composable.rb +0 -7
  90. data/lib/mongoid/config/environment.rb +13 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +7 -27
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +42 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +11 -7
  146. data/lib/mongoid/criteria/queryable.rb +0 -7
  147. data/lib/mongoid/criteria/scopable.rb +25 -19
  148. data/lib/mongoid/criteria.rb +0 -57
  149. data/lib/mongoid/document.rb +3 -53
  150. data/lib/mongoid/equality.rb +26 -10
  151. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  152. data/lib/mongoid/errors/callback.rb +0 -3
  153. data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
  154. data/lib/mongoid/errors/delete_restriction.rb +0 -3
  155. data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
  156. data/lib/mongoid/errors/document_not_found.rb +0 -9
  157. data/lib/mongoid/errors/eager_load.rb +0 -3
  158. data/lib/mongoid/errors/empty_config_file.rb +25 -0
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
  160. data/lib/mongoid/errors/invalid_collection.rb +0 -1
  161. data/lib/mongoid/errors/invalid_config_file.rb +25 -0
  162. data/lib/mongoid/errors/invalid_config_option.rb +0 -3
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
  164. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
  165. data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
  166. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
  167. data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
  168. data/lib/mongoid/errors/invalid_field.rb +0 -5
  169. data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
  170. data/lib/mongoid/errors/invalid_field_option.rb +0 -3
  171. data/lib/mongoid/errors/invalid_find.rb +0 -3
  172. data/lib/mongoid/errors/invalid_includes.rb +0 -3
  173. data/lib/mongoid/errors/invalid_index.rb +0 -3
  174. data/lib/mongoid/errors/invalid_options.rb +0 -3
  175. data/lib/mongoid/errors/invalid_path.rb +0 -3
  176. data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
  177. data/lib/mongoid/errors/invalid_query.rb +0 -1
  178. data/lib/mongoid/errors/invalid_relation.rb +0 -7
  179. data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
  180. data/lib/mongoid/errors/invalid_scope.rb +0 -3
  181. data/lib/mongoid/errors/invalid_session_use.rb +1 -6
  182. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
  183. data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
  184. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
  185. data/lib/mongoid/errors/invalid_time.rb +0 -3
  186. data/lib/mongoid/errors/invalid_value.rb +0 -1
  187. data/lib/mongoid/errors/inverse_not_found.rb +0 -3
  188. data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
  189. data/lib/mongoid/errors/mixed_relations.rb +0 -3
  190. data/lib/mongoid/errors/mongoid_error.rb +0 -9
  191. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
  192. data/lib/mongoid/errors/no_client_config.rb +0 -3
  193. data/lib/mongoid/errors/no_client_database.rb +0 -3
  194. data/lib/mongoid/errors/no_client_hosts.rb +0 -3
  195. data/lib/mongoid/errors/no_clients_config.rb +0 -3
  196. data/lib/mongoid/errors/no_default_client.rb +0 -3
  197. data/lib/mongoid/errors/no_environment.rb +0 -3
  198. data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
  199. data/lib/mongoid/errors/no_metadata.rb +0 -3
  200. data/lib/mongoid/errors/no_parent.rb +0 -3
  201. data/lib/mongoid/errors/readonly_attribute.rb +0 -3
  202. data/lib/mongoid/errors/readonly_document.rb +1 -6
  203. data/lib/mongoid/errors/scope_overwrite.rb +0 -1
  204. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
  205. data/lib/mongoid/errors/unknown_attribute.rb +0 -3
  206. data/lib/mongoid/errors/unknown_model.rb +0 -3
  207. data/lib/mongoid/errors/unsaved_document.rb +1 -2
  208. data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
  209. data/lib/mongoid/errors/validations.rb +0 -1
  210. data/lib/mongoid/errors.rb +2 -1
  211. data/lib/mongoid/evolvable.rb +0 -3
  212. data/lib/mongoid/extensions/array.rb +3 -29
  213. data/lib/mongoid/extensions/big_decimal.rb +0 -11
  214. data/lib/mongoid/extensions/boolean.rb +0 -3
  215. data/lib/mongoid/extensions/date.rb +0 -9
  216. data/lib/mongoid/extensions/date_time.rb +0 -9
  217. data/lib/mongoid/extensions/decimal128.rb +0 -5
  218. data/lib/mongoid/extensions/false_class.rb +1 -6
  219. data/lib/mongoid/extensions/float.rb +0 -7
  220. data/lib/mongoid/extensions/hash.rb +0 -27
  221. data/lib/mongoid/extensions/integer.rb +0 -9
  222. data/lib/mongoid/extensions/module.rb +0 -3
  223. data/lib/mongoid/extensions/nil_class.rb +0 -5
  224. data/lib/mongoid/extensions/object.rb +1 -40
  225. data/lib/mongoid/extensions/object_id.rb +0 -7
  226. data/lib/mongoid/extensions/range.rb +0 -11
  227. data/lib/mongoid/extensions/regexp.rb +0 -3
  228. data/lib/mongoid/extensions/set.rb +0 -7
  229. data/lib/mongoid/extensions/string.rb +1 -30
  230. data/lib/mongoid/extensions/symbol.rb +0 -7
  231. data/lib/mongoid/extensions/time.rb +0 -11
  232. data/lib/mongoid/extensions/time_with_zone.rb +13 -9
  233. data/lib/mongoid/extensions/true_class.rb +1 -6
  234. data/lib/mongoid/extensions.rb +15 -3
  235. data/lib/mongoid/factory.rb +1 -2
  236. data/lib/mongoid/fields/foreign_key.rb +0 -21
  237. data/lib/mongoid/fields/localized.rb +0 -11
  238. data/lib/mongoid/fields/standard.rb +0 -33
  239. data/lib/mongoid/fields/validators/macro.rb +0 -9
  240. data/lib/mongoid/fields/validators.rb +0 -1
  241. data/lib/mongoid/fields.rb +64 -57
  242. data/lib/mongoid/findable.rb +0 -5
  243. data/lib/mongoid/indexable/specification.rb +0 -15
  244. data/lib/mongoid/indexable/validators/options.rb +0 -7
  245. data/lib/mongoid/indexable.rb +1 -18
  246. data/lib/mongoid/inspectable.rb +1 -10
  247. data/lib/mongoid/interceptable.rb +0 -25
  248. data/lib/mongoid/loggable.rb +0 -9
  249. data/lib/mongoid/matchable.rb +0 -5
  250. data/lib/mongoid/matcher/eq_impl.rb +37 -2
  251. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
  252. data/lib/mongoid/persistable/creatable.rb +1 -20
  253. data/lib/mongoid/persistable/deletable.rb +0 -17
  254. data/lib/mongoid/persistable/destroyable.rb +0 -7
  255. data/lib/mongoid/persistable/incrementable.rb +0 -5
  256. data/lib/mongoid/persistable/logical.rb +0 -5
  257. data/lib/mongoid/persistable/poppable.rb +0 -5
  258. data/lib/mongoid/persistable/pullable.rb +0 -7
  259. data/lib/mongoid/persistable/pushable.rb +0 -7
  260. data/lib/mongoid/persistable/renamable.rb +0 -5
  261. data/lib/mongoid/persistable/savable.rb +0 -7
  262. data/lib/mongoid/persistable/settable.rb +0 -5
  263. data/lib/mongoid/persistable/unsettable.rb +0 -5
  264. data/lib/mongoid/persistable/updatable.rb +2 -17
  265. data/lib/mongoid/persistable/upsertable.rb +0 -7
  266. data/lib/mongoid/persistable.rb +0 -23
  267. data/lib/mongoid/persistence_context.rb +3 -28
  268. data/lib/mongoid/positional.rb +0 -5
  269. data/lib/mongoid/query_cache.rb +11 -34
  270. data/lib/mongoid/railtie.rb +0 -15
  271. data/lib/mongoid/railties/controller_runtime.rb +0 -1
  272. data/lib/mongoid/reloadable.rb +4 -16
  273. data/lib/mongoid/scopable.rb +6 -34
  274. data/lib/mongoid/selectable.rb +0 -9
  275. data/lib/mongoid/serializable.rb +0 -15
  276. data/lib/mongoid/shardable.rb +0 -7
  277. data/lib/mongoid/stateful.rb +0 -9
  278. data/lib/mongoid/stringified_symbol.rb +2 -3
  279. data/lib/mongoid/tasks/database.rb +1 -6
  280. data/lib/mongoid/threaded/lifecycle.rb +0 -21
  281. data/lib/mongoid/threaded.rb +0 -55
  282. data/lib/mongoid/timestamps/created/short.rb +0 -1
  283. data/lib/mongoid/timestamps/created.rb +0 -1
  284. data/lib/mongoid/timestamps/short.rb +0 -1
  285. data/lib/mongoid/timestamps/timeless.rb +0 -7
  286. data/lib/mongoid/timestamps/updated/short.rb +0 -1
  287. data/lib/mongoid/timestamps/updated.rb +0 -3
  288. data/lib/mongoid/timestamps.rb +0 -1
  289. data/lib/mongoid/touchable.rb +10 -7
  290. data/lib/mongoid/traversable.rb +64 -53
  291. data/lib/mongoid/validatable/associated.rb +0 -3
  292. data/lib/mongoid/validatable/format.rb +0 -1
  293. data/lib/mongoid/validatable/length.rb +0 -1
  294. data/lib/mongoid/validatable/localizable.rb +0 -3
  295. data/lib/mongoid/validatable/macros.rb +0 -7
  296. data/lib/mongoid/validatable/presence.rb +1 -8
  297. data/lib/mongoid/validatable/queryable.rb +0 -3
  298. data/lib/mongoid/validatable/uniqueness.rb +15 -30
  299. data/lib/mongoid/validatable.rb +1 -22
  300. data/lib/mongoid/version.rb +1 -2
  301. data/lib/mongoid.rb +0 -15
  302. data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
  303. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  304. data/lib/rails/generators/mongoid_generator.rb +0 -1
  305. data/lib/rails/mongoid.rb +0 -3
  306. data/spec/integration/app_spec.rb +0 -1
  307. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  308. data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
  309. data/spec/integration/associations/embedded_spec.rb +0 -1
  310. data/spec/integration/associations/embeds_many_spec.rb +139 -1
  311. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  312. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  314. data/spec/integration/associations/has_many_spec.rb +0 -1
  315. data/spec/integration/associations/has_one_spec.rb +0 -1
  316. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  317. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  319. data/spec/integration/associations/scope_option_spec.rb +101 -0
  320. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  321. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  322. data/spec/integration/callbacks_models.rb +12 -0
  323. data/spec/integration/callbacks_spec.rb +18 -6
  324. data/spec/integration/contextual/empty_spec.rb +141 -0
  325. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  326. data/spec/integration/criteria/date_field_spec.rb +0 -1
  327. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  328. data/spec/integration/criteria/logical_spec.rb +30 -0
  329. data/spec/integration/criteria/range_spec.rb +265 -0
  330. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  331. data/spec/integration/discriminator_key_spec.rb +0 -1
  332. data/spec/integration/discriminator_value_spec.rb +0 -1
  333. data/spec/integration/document_spec.rb +0 -1
  334. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  335. data/spec/integration/matcher_examples_spec.rb +0 -1
  336. data/spec/integration/matcher_operator_spec.rb +27 -3
  337. data/spec/integration/matcher_spec.rb +95 -1
  338. data/spec/integration/server_query_spec.rb +0 -1
  339. data/spec/integration/shardable_spec.rb +0 -1
  340. data/spec/integration/stringified_symbol_field_spec.rb +16 -3
  341. data/spec/lite_spec_helper.rb +8 -2
  342. data/spec/mongoid/association/accessors_spec.rb +44 -15
  343. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  344. data/spec/mongoid/association/builders_spec.rb +1 -2
  345. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  346. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  347. data/spec/mongoid/association/depending_spec.rb +12 -13
  348. data/spec/mongoid/association/eager_spec.rb +4 -5
  349. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  350. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  352. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  354. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  355. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
  358. data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
  359. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  360. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  364. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  365. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  368. data/spec/mongoid/association/macros_spec.rb +9 -10
  369. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  370. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  371. data/spec/mongoid/association/options_spec.rb +0 -1
  372. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  373. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  375. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  376. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  377. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
  378. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  379. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  387. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  388. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  389. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  390. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
  391. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  392. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
  393. data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
  394. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  395. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  396. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  397. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  398. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  399. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  400. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  401. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  402. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  403. data/spec/mongoid/association/reflections_spec.rb +0 -1
  404. data/spec/mongoid/association/syncable_spec.rb +31 -32
  405. data/spec/mongoid/association_spec.rb +0 -1
  406. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  407. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  411. data/spec/mongoid/atomic_spec.rb +6 -7
  412. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  413. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  414. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  415. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  416. data/spec/mongoid/attributes_spec.rb +32 -33
  417. data/spec/mongoid/cacheable_spec.rb +1 -2
  418. data/spec/mongoid/changeable_spec.rb +35 -36
  419. data/spec/mongoid/clients/factory_spec.rb +9 -4
  420. data/spec/mongoid/clients/options_spec.rb +15 -10
  421. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  422. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  423. data/spec/mongoid/clients_spec.rb +6 -7
  424. data/spec/mongoid/composable_spec.rb +0 -1
  425. data/spec/mongoid/config/environment_spec.rb +86 -9
  426. data/spec/mongoid/config/options_spec.rb +0 -1
  427. data/spec/mongoid/config_spec.rb +194 -17
  428. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  429. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  430. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  431. data/spec/mongoid/contextual/atomic_spec.rb +109 -71
  432. data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
  433. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  434. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  435. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  436. data/spec/mongoid/contextual/none_spec.rb +7 -82
  437. data/spec/mongoid/copyable_spec.rb +11 -12
  438. data/spec/mongoid/copyable_spec_models.rb +0 -1
  439. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  440. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  441. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  443. data/spec/mongoid/criteria/options_spec.rb +0 -1
  444. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  445. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  446. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  460. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  470. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  471. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  473. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  474. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  476. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  477. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  480. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  481. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  482. data/spec/mongoid/criteria_spec.rb +546 -186
  483. data/spec/mongoid/document_fields_spec.rb +0 -1
  484. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  485. data/spec/mongoid/document_query_spec.rb +0 -1
  486. data/spec/mongoid/document_spec.rb +32 -34
  487. data/spec/mongoid/equality_spec.rb +142 -41
  488. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  489. data/spec/mongoid/errors/callback_spec.rb +0 -1
  490. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  491. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  493. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  494. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
  496. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  506. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  507. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  509. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  510. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  512. data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
  513. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  514. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  522. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  524. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  525. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  526. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  527. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  528. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  529. data/spec/mongoid/errors/validations_spec.rb +0 -1
  530. data/spec/mongoid/extensions/array_spec.rb +0 -1
  531. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  532. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  533. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  534. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  537. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  538. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  539. data/spec/mongoid/extensions/float_spec.rb +0 -1
  540. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  541. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  542. data/spec/mongoid/extensions/module_spec.rb +0 -1
  543. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  544. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_spec.rb +0 -1
  546. data/spec/mongoid/extensions/range_spec.rb +0 -1
  547. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  548. data/spec/mongoid/extensions/set_spec.rb +0 -1
  549. data/spec/mongoid/extensions/string_spec.rb +2 -3
  550. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  551. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/time_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  554. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  555. data/spec/mongoid/extensions_spec.rb +14 -3
  556. data/spec/mongoid/factory_spec.rb +1 -1
  557. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  558. data/spec/mongoid/fields/localized_spec.rb +0 -1
  559. data/spec/mongoid/fields/standard_spec.rb +0 -1
  560. data/spec/mongoid/fields_spec.rb +326 -31
  561. data/spec/mongoid/findable_spec.rb +21 -22
  562. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  563. data/spec/mongoid/indexable_spec.rb +0 -1
  564. data/spec/mongoid/inspectable_spec.rb +0 -1
  565. data/spec/mongoid/interceptable_spec.rb +102 -95
  566. data/spec/mongoid/loggable_spec.rb +0 -1
  567. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  568. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  569. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  570. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  571. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  573. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  574. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  575. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  577. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  578. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  579. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  580. data/spec/mongoid/persistable/updatable_spec.rb +43 -24
  581. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  582. data/spec/mongoid/persistable_spec.rb +1 -2
  583. data/spec/mongoid/persistence_context_spec.rb +0 -1
  584. data/spec/mongoid/positional_spec.rb +0 -1
  585. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  586. data/spec/mongoid/query_cache_spec.rb +56 -10
  587. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  588. data/spec/mongoid/reloadable_spec.rb +209 -23
  589. data/spec/mongoid/scopable_spec.rb +65 -22
  590. data/spec/mongoid/selectable_spec.rb +6 -7
  591. data/spec/mongoid/serializable_spec.rb +9 -10
  592. data/spec/mongoid/shardable_spec.rb +2 -3
  593. data/spec/mongoid/stateful_spec.rb +1 -2
  594. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  595. data/spec/mongoid/tasks/database_spec.rb +0 -1
  596. data/spec/mongoid/threaded_spec.rb +2 -3
  597. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  598. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  600. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  601. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  602. data/spec/mongoid/timestamps_spec.rb +6 -7
  603. data/spec/mongoid/touchable_spec.rb +33 -20
  604. data/spec/mongoid/touchable_spec_models.rb +2 -1
  605. data/spec/mongoid/traversable_spec.rb +65 -2
  606. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  607. data/spec/mongoid/validatable/format_spec.rb +0 -1
  608. data/spec/mongoid/validatable/length_spec.rb +0 -1
  609. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  610. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  611. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  612. data/spec/mongoid/validatable_spec.rb +2 -3
  613. data/spec/mongoid_spec.rb +0 -1
  614. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  615. data/spec/rails/mongoid_spec.rb +0 -1
  616. data/spec/shared/lib/mrss/cluster_config.rb +6 -1
  617. data/spec/shared/lib/mrss/constraints.rb +23 -5
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
  620. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  621. data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
  622. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  623. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  624. data/spec/shared/share/Dockerfile.erb +27 -10
  625. data/spec/shared/shlib/distro.sh +2 -1
  626. data/spec/shared/shlib/server.sh +85 -23
  627. data/spec/shared/shlib/set_env.sh +6 -5
  628. data/spec/spec_helper.rb +12 -22
  629. data/spec/support/authorization.rb +0 -1
  630. data/spec/support/constraints.rb +0 -1
  631. data/spec/support/expectations.rb +0 -1
  632. data/spec/support/macros.rb +22 -1
  633. data/spec/support/models/account.rb +1 -2
  634. data/spec/support/models/acolyte.rb +0 -1
  635. data/spec/support/models/actor.rb +0 -1
  636. data/spec/support/models/actress.rb +0 -1
  637. data/spec/support/models/address.rb +0 -1
  638. data/spec/support/models/address_component.rb +0 -1
  639. data/spec/support/models/address_number.rb +0 -1
  640. data/spec/support/models/agency.rb +0 -1
  641. data/spec/support/models/agent.rb +0 -1
  642. data/spec/support/models/album.rb +0 -1
  643. data/spec/support/models/alert.rb +0 -1
  644. data/spec/support/models/animal.rb +0 -1
  645. data/spec/support/models/answer.rb +0 -1
  646. data/spec/support/models/appointment.rb +0 -1
  647. data/spec/support/models/armrest.rb +0 -1
  648. data/spec/support/models/array_field.rb +0 -1
  649. data/spec/support/models/article.rb +0 -1
  650. data/spec/support/models/artist.rb +2 -1
  651. data/spec/support/models/artwork.rb +0 -1
  652. data/spec/support/models/audible_sound.rb +3 -0
  653. data/spec/support/models/audio.rb +0 -1
  654. data/spec/support/models/augmentation.rb +0 -1
  655. data/spec/support/models/author.rb +0 -1
  656. data/spec/support/models/baby.rb +0 -1
  657. data/spec/support/models/band.rb +4 -1
  658. data/spec/support/models/bar.rb +0 -1
  659. data/spec/support/models/basic.rb +0 -1
  660. data/spec/support/models/bed.rb +0 -1
  661. data/spec/support/models/big_palette.rb +0 -1
  662. data/spec/support/models/birthday.rb +0 -1
  663. data/spec/support/models/bolt.rb +0 -1
  664. data/spec/support/models/bomb.rb +0 -1
  665. data/spec/support/models/book.rb +0 -1
  666. data/spec/support/models/breed.rb +0 -1
  667. data/spec/support/models/browser.rb +0 -1
  668. data/spec/support/models/building.rb +0 -1
  669. data/spec/support/models/building_address.rb +0 -1
  670. data/spec/support/models/bus.rb +0 -1
  671. data/spec/support/models/business.rb +0 -1
  672. data/spec/support/models/callback_test.rb +0 -1
  673. data/spec/support/models/canvas.rb +0 -1
  674. data/spec/support/models/car.rb +0 -1
  675. data/spec/support/models/cat.rb +0 -1
  676. data/spec/support/models/category.rb +0 -1
  677. data/spec/support/models/child.rb +0 -1
  678. data/spec/support/models/child_doc.rb +3 -4
  679. data/spec/support/models/church.rb +0 -1
  680. data/spec/support/models/circle.rb +0 -1
  681. data/spec/support/models/circuit.rb +0 -1
  682. data/spec/support/models/circus.rb +0 -1
  683. data/spec/support/models/code.rb +0 -1
  684. data/spec/support/models/coding/pull_request.rb +0 -1
  685. data/spec/support/models/coding.rb +0 -1
  686. data/spec/support/models/comment.rb +0 -1
  687. data/spec/support/models/company.rb +0 -1
  688. data/spec/support/models/consumption_period.rb +0 -1
  689. data/spec/support/models/contextable_item.rb +0 -1
  690. data/spec/support/models/contractor.rb +0 -1
  691. data/spec/support/models/cookie.rb +0 -1
  692. data/spec/support/models/country_code.rb +2 -1
  693. data/spec/support/models/courier_job.rb +0 -1
  694. data/spec/support/models/crate.rb +0 -1
  695. data/spec/support/models/customer.rb +0 -1
  696. data/spec/support/models/customer_address.rb +0 -1
  697. data/spec/support/models/deed.rb +0 -1
  698. data/spec/support/models/definition.rb +0 -1
  699. data/spec/support/models/delegating_patient.rb +0 -1
  700. data/spec/support/models/description.rb +0 -1
  701. data/spec/support/models/dictionary.rb +0 -1
  702. data/spec/support/models/division.rb +0 -1
  703. data/spec/support/models/doctor.rb +0 -1
  704. data/spec/support/models/dog.rb +0 -1
  705. data/spec/support/models/dokument.rb +0 -1
  706. data/spec/support/models/draft.rb +0 -1
  707. data/spec/support/models/dragon.rb +0 -1
  708. data/spec/support/models/driver.rb +0 -1
  709. data/spec/support/models/drug.rb +0 -1
  710. data/spec/support/models/dungeon.rb +0 -1
  711. data/spec/support/models/edit.rb +0 -1
  712. data/spec/support/models/email.rb +0 -1
  713. data/spec/support/models/employer.rb +0 -1
  714. data/spec/support/models/entry.rb +0 -1
  715. data/spec/support/models/eraser.rb +0 -1
  716. data/spec/support/models/even.rb +0 -1
  717. data/spec/support/models/event.rb +0 -1
  718. data/spec/support/models/exhibition.rb +0 -1
  719. data/spec/support/models/exhibitor.rb +0 -1
  720. data/spec/support/models/explosion.rb +0 -1
  721. data/spec/support/models/eye.rb +0 -1
  722. data/spec/support/models/eye_bowl.rb +0 -1
  723. data/spec/support/models/face.rb +0 -1
  724. data/spec/support/models/favorite.rb +0 -1
  725. data/spec/support/models/filesystem.rb +0 -1
  726. data/spec/support/models/fire_hydrant.rb +0 -1
  727. data/spec/support/models/firefox.rb +0 -1
  728. data/spec/support/models/fish.rb +0 -1
  729. data/spec/support/models/folder.rb +0 -1
  730. data/spec/support/models/folder_item.rb +0 -1
  731. data/spec/support/models/fruits.rb +0 -1
  732. data/spec/support/models/game.rb +0 -1
  733. data/spec/support/models/ghost.rb +0 -1
  734. data/spec/support/models/guitar.rb +0 -1
  735. data/spec/support/models/hole.rb +0 -1
  736. data/spec/support/models/home.rb +0 -1
  737. data/spec/support/models/house.rb +0 -1
  738. data/spec/support/models/html_writer.rb +0 -1
  739. data/spec/support/models/id_key.rb +0 -1
  740. data/spec/support/models/idnodef.rb +0 -1
  741. data/spec/support/models/image.rb +0 -1
  742. data/spec/support/models/implant.rb +0 -1
  743. data/spec/support/models/instrument.rb +0 -1
  744. data/spec/support/models/item.rb +0 -1
  745. data/spec/support/models/jar.rb +0 -1
  746. data/spec/support/models/kaleidoscope.rb +0 -1
  747. data/spec/support/models/kangaroo.rb +0 -1
  748. data/spec/support/models/label.rb +2 -2
  749. data/spec/support/models/language.rb +0 -1
  750. data/spec/support/models/lat_lng.rb +0 -1
  751. data/spec/support/models/league.rb +0 -1
  752. data/spec/support/models/learner.rb +0 -1
  753. data/spec/support/models/line_item.rb +0 -1
  754. data/spec/support/models/location.rb +0 -1
  755. data/spec/support/models/login.rb +0 -1
  756. data/spec/support/models/manufacturer.rb +0 -1
  757. data/spec/support/models/meat.rb +0 -1
  758. data/spec/support/models/membership.rb +0 -1
  759. data/spec/support/models/message.rb +0 -1
  760. data/spec/support/models/minim.rb +0 -1
  761. data/spec/support/models/mixed_drink.rb +0 -1
  762. data/spec/support/models/mop.rb +0 -1
  763. data/spec/support/models/movie.rb +0 -1
  764. data/spec/support/models/my_hash.rb +0 -1
  765. data/spec/support/models/name.rb +0 -1
  766. data/spec/support/models/name_only.rb +0 -1
  767. data/spec/support/models/node.rb +0 -1
  768. data/spec/support/models/note.rb +0 -1
  769. data/spec/support/models/nut.rb +0 -1
  770. data/spec/support/models/odd.rb +0 -1
  771. data/spec/support/models/order.rb +2 -1
  772. data/spec/support/models/ordered_post.rb +1 -2
  773. data/spec/support/models/ordered_preference.rb +0 -1
  774. data/spec/support/models/oscar.rb +0 -1
  775. data/spec/support/models/other_owner_object.rb +0 -1
  776. data/spec/support/models/override.rb +0 -1
  777. data/spec/support/models/ownable.rb +0 -1
  778. data/spec/support/models/owner.rb +0 -1
  779. data/spec/support/models/pack.rb +0 -1
  780. data/spec/support/models/page.rb +0 -1
  781. data/spec/support/models/page_question.rb +0 -1
  782. data/spec/support/models/palette.rb +0 -1
  783. data/spec/support/models/parent.rb +0 -1
  784. data/spec/support/models/parent_doc.rb +0 -1
  785. data/spec/support/models/passport.rb +5 -1
  786. data/spec/support/models/patient.rb +0 -1
  787. data/spec/support/models/pdf_writer.rb +0 -1
  788. data/spec/support/models/pencil.rb +0 -1
  789. data/spec/support/models/person.rb +1 -1
  790. data/spec/support/models/pet.rb +0 -1
  791. data/spec/support/models/pet_owner.rb +0 -1
  792. data/spec/support/models/phone.rb +2 -2
  793. data/spec/support/models/piano.rb +0 -1
  794. data/spec/support/models/pizza.rb +0 -1
  795. data/spec/support/models/player.rb +0 -1
  796. data/spec/support/models/post.rb +0 -1
  797. data/spec/support/models/post_genre.rb +0 -1
  798. data/spec/support/models/powerup.rb +0 -1
  799. data/spec/support/models/preference.rb +0 -1
  800. data/spec/support/models/princess.rb +0 -1
  801. data/spec/support/models/product.rb +0 -1
  802. data/spec/support/models/profile.rb +0 -1
  803. data/spec/support/models/pronunciation.rb +0 -1
  804. data/spec/support/models/pub.rb +0 -1
  805. data/spec/support/models/publication/encyclopedia.rb +0 -1
  806. data/spec/support/models/publication/review.rb +0 -1
  807. data/spec/support/models/publication.rb +0 -1
  808. data/spec/support/models/purchase.rb +0 -1
  809. data/spec/support/models/purchased_item.rb +10 -0
  810. data/spec/support/models/question.rb +0 -1
  811. data/spec/support/models/quiz.rb +0 -1
  812. data/spec/support/models/rating.rb +0 -1
  813. data/spec/support/models/record.rb +0 -1
  814. data/spec/support/models/registry.rb +0 -1
  815. data/spec/support/models/role.rb +0 -1
  816. data/spec/support/models/root_category.rb +0 -1
  817. data/spec/support/models/sandwich.rb +0 -1
  818. data/spec/support/models/scheduler.rb +0 -1
  819. data/spec/support/models/scribe.rb +0 -1
  820. data/spec/support/models/sealer.rb +0 -1
  821. data/spec/support/models/seat.rb +0 -1
  822. data/spec/support/models/seo.rb +0 -1
  823. data/spec/support/models/series.rb +0 -1
  824. data/spec/support/models/server.rb +0 -1
  825. data/spec/support/models/service.rb +0 -1
  826. data/spec/support/models/shape.rb +0 -1
  827. data/spec/support/models/shelf.rb +0 -1
  828. data/spec/support/models/shipment_address.rb +0 -1
  829. data/spec/support/models/shipping_container.rb +0 -1
  830. data/spec/support/models/shipping_pack.rb +0 -1
  831. data/spec/support/models/shirt.rb +0 -1
  832. data/spec/support/models/shop.rb +0 -1
  833. data/spec/support/models/short_agent.rb +0 -1
  834. data/spec/support/models/short_quiz.rb +0 -1
  835. data/spec/support/models/simple.rb +0 -1
  836. data/spec/support/models/slave.rb +0 -1
  837. data/spec/support/models/song.rb +0 -1
  838. data/spec/support/models/sound.rb +0 -1
  839. data/spec/support/models/spacer.rb +0 -1
  840. data/spec/support/models/square.rb +0 -1
  841. data/spec/support/models/staff.rb +0 -1
  842. data/spec/support/models/store_as_dup_test1.rb +0 -1
  843. data/spec/support/models/store_as_dup_test2.rb +0 -1
  844. data/spec/support/models/store_as_dup_test3.rb +0 -1
  845. data/spec/support/models/store_as_dup_test4.rb +0 -1
  846. data/spec/support/models/strategy.rb +0 -1
  847. data/spec/support/models/sub_item.rb +0 -1
  848. data/spec/support/models/subscription.rb +0 -1
  849. data/spec/support/models/survey.rb +0 -1
  850. data/spec/support/models/symptom.rb +0 -1
  851. data/spec/support/models/tag.rb +0 -1
  852. data/spec/support/models/target.rb +0 -1
  853. data/spec/support/models/template.rb +0 -1
  854. data/spec/support/models/thing.rb +0 -1
  855. data/spec/support/models/threadlocker.rb +0 -1
  856. data/spec/support/models/title.rb +0 -1
  857. data/spec/support/models/tool.rb +0 -1
  858. data/spec/support/models/topping.rb +0 -1
  859. data/spec/support/models/toy.rb +0 -1
  860. data/spec/support/models/track.rb +0 -1
  861. data/spec/support/models/translation.rb +0 -1
  862. data/spec/support/models/tree.rb +0 -1
  863. data/spec/support/models/truck.rb +0 -1
  864. data/spec/support/models/updatable.rb +0 -1
  865. data/spec/support/models/user.rb +0 -1
  866. data/spec/support/models/user_account.rb +0 -1
  867. data/spec/support/models/validation_callback.rb +0 -1
  868. data/spec/support/models/vehicle.rb +0 -1
  869. data/spec/support/models/version.rb +0 -1
  870. data/spec/support/models/vertex.rb +0 -1
  871. data/spec/support/models/vet_visit.rb +0 -1
  872. data/spec/support/models/video.rb +0 -1
  873. data/spec/support/models/video_game.rb +0 -1
  874. data/spec/support/models/washer.rb +0 -1
  875. data/spec/support/models/weapon.rb +0 -1
  876. data/spec/support/models/wiki_page.rb +0 -1
  877. data/spec/support/models/word.rb +0 -1
  878. data/spec/support/models/word_origin.rb +0 -1
  879. data/spec/support/models/writer.rb +0 -1
  880. data/spec/support/shared/time.rb +0 -1
  881. data/spec/support/spec_config.rb +3 -1
  882. data.tar.gz.sig +0 -0
  883. metadata +642 -610
  884. metadata.gz.sig +0 -0
  885. data/lib/support/ruby_version.rb +0 -29
  886. data/spec/support/session_registry.rb +0 -50
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -27,7 +26,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
27
26
  context "when the inverse_of is nil" do
28
27
 
29
28
  let!(:article) do
30
- Article.create
29
+ Article.create!
31
30
  end
32
31
 
33
32
  context "when the child document is new" do
@@ -48,7 +47,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
48
47
  context "when the child document is not new" do
49
48
 
50
49
  let(:preference) do
51
- Preference.create
50
+ Preference.create!
52
51
  end
53
52
 
54
53
  it "does not persist the child document" do
@@ -80,7 +79,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
80
79
  context "when the parent is not a new record" do
81
80
 
82
81
  let(:person) do
83
- Person.create
82
+ Person.create!
84
83
  end
85
84
 
86
85
  let!(:preference) do
@@ -124,11 +123,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
124
123
  context "when appending in a parent create block" do
125
124
 
126
125
  let!(:preference) do
127
- Preference.create(name: "testing")
126
+ Preference.create!(name: "testing")
128
127
  end
129
128
 
130
129
  let!(:person) do
131
- Person.create do |doc|
130
+ Person.create! do |doc|
132
131
  doc.preferences << preference
133
132
  end
134
133
  end
@@ -213,7 +212,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
213
212
  context "when the child is already persisted" do
214
213
 
215
214
  let!(:persisted) do
216
- Preference.create(name: "testy")
215
+ Preference.create!(name: "testy")
217
216
  end
218
217
 
219
218
  let(:preference) do
@@ -222,7 +221,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
222
221
 
223
222
  before do
224
223
  person.preferences.send(method, preference)
225
- person.save
224
+ person.save!
226
225
  end
227
226
 
228
227
  it "adds the documents to the relation" do
@@ -253,7 +252,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
253
252
  context "when setting via the associated ids" do
254
253
 
255
254
  let!(:persisted) do
256
- Preference.create(name: "testy")
255
+ Preference.create!(name: "testy")
257
256
  end
258
257
 
259
258
  let(:preference) do
@@ -265,7 +264,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
265
264
  end
266
265
 
267
266
  before do
268
- person.save
267
+ person.save!
269
268
  end
270
269
 
271
270
  it "adds the documents to the relation" do
@@ -293,7 +292,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
293
292
  context "when the parent is not a new record" do
294
293
 
295
294
  let(:person) do
296
- Person.create
295
+ Person.create!
297
296
  end
298
297
 
299
298
  let(:preference) do
@@ -375,11 +374,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
375
374
  context "when both sides have been persisted" do
376
375
 
377
376
  let(:person) do
378
- Person.create
377
+ Person.create!
379
378
  end
380
379
 
381
380
  let(:event) do
382
- Event.create
381
+ Event.create!
383
382
  end
384
383
 
385
384
  before do
@@ -428,15 +427,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
428
427
  context "when the relation also includes a has_many relation" do
429
428
 
430
429
  let(:artwork) do
431
- Artwork.create
430
+ Artwork.create!
432
431
  end
433
432
 
434
433
  let(:exhibition) do
435
- Exhibition.create
434
+ Exhibition.create!
436
435
  end
437
436
 
438
437
  let(:exhibitor) do
439
- Exhibitor.create(exhibition: exhibition)
438
+ Exhibitor.create!(exhibition: exhibition)
440
439
  end
441
440
 
442
441
  before do
@@ -451,11 +450,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
451
450
  context "when the relation is self referencing" do
452
451
 
453
452
  let(:tag_one) do
454
- Tag.create(text: "one")
453
+ Tag.create!(text: "one")
455
454
  end
456
455
 
457
456
  let(:tag_two) do
458
- Tag.create(text: "two")
457
+ Tag.create!(text: "two")
459
458
  end
460
459
 
461
460
  before do
@@ -564,7 +563,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
564
563
  end
565
564
 
566
565
  let(:preference) do
567
- Preference.create(name: "one")
566
+ Preference.create!(name: "one")
568
567
  end
569
568
 
570
569
  before do
@@ -585,7 +584,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
585
584
  context "when the document is persisted" do
586
585
 
587
586
  before do
588
- person.save
587
+ person.save!
589
588
  end
590
589
 
591
590
  it "does not add the duplicates" do
@@ -656,7 +655,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
656
655
  end
657
656
 
658
657
  let!(:preference) do
659
- Preference.create
658
+ Preference.create!
660
659
  end
661
660
 
662
661
  before do
@@ -703,7 +702,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
703
702
  context "when the parent is not a new record" do
704
703
 
705
704
  let(:person) do
706
- Person.create
705
+ Person.create!
707
706
  end
708
707
 
709
708
  let(:preference) do
@@ -787,7 +786,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
787
786
  expect(person.preferences).to eq([ another_preference ])
788
787
  end
789
788
 
790
- it "persists the relation between another_prefrence and person" do
789
+ it "persists the relation between another_preference and person" do
791
790
  expect(another_preference.people).to eq([ person ])
792
791
  end
793
792
 
@@ -799,7 +798,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
799
798
  context "and person is saved" do
800
799
 
801
800
  before do
802
- person.save
801
+ person.save!
803
802
  person.reload
804
803
  another_preference.reload
805
804
  end
@@ -808,7 +807,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
808
807
  expect(person.preferences).to eq([ another_preference ])
809
808
  end
810
809
 
811
- it "persists the relation between another_prefrence and person" do
810
+ it "persists the relation between another_preference and person" do
812
811
  expect(another_preference.people).to eq([ person ])
813
812
  end
814
813
 
@@ -823,11 +822,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
823
822
 
824
823
  describe "when self-referencing" do
825
824
  let!(:parent) do
826
- Vertex.create
825
+ Vertex.create!
827
826
  end
828
827
 
829
828
  let!(:child) do
830
- Vertex.create(parents: [parent])
829
+ Vertex.create!(parents: [parent])
831
830
  end
832
831
 
833
832
  before do
@@ -964,7 +963,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
964
963
  context "when the relation has been loaded" do
965
964
 
966
965
  let(:person) do
967
- Person.create
966
+ Person.create!
968
967
  end
969
968
 
970
969
  let(:preference) do
@@ -1004,7 +1003,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1004
1003
  end
1005
1004
 
1006
1005
  let(:person) do
1007
- Person.create.tap do |p|
1006
+ Person.create!.tap do |p|
1008
1007
  p.preferences = [ preference ]
1009
1008
  end
1010
1009
  end
@@ -1074,7 +1073,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1074
1073
  context "when the parent is not a new record" do
1075
1074
 
1076
1075
  let(:person) do
1077
- Person.create
1076
+ Person.create!
1078
1077
  end
1079
1078
 
1080
1079
  let!(:preference) do
@@ -1112,7 +1111,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1112
1111
  context "when saving the target" do
1113
1112
 
1114
1113
  before do
1115
- preference.save
1114
+ preference.save!
1116
1115
  end
1117
1116
 
1118
1117
  it "persists the parent keys" do
@@ -1131,13 +1130,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1131
1130
  context "when the parent has been persisted" do
1132
1131
 
1133
1132
  let!(:person) do
1134
- Person.create
1133
+ Person.create!
1135
1134
  end
1136
1135
 
1137
1136
  context "when the children are persisted" do
1138
1137
 
1139
1138
  let!(:preference) do
1140
- person.preferences.create(name: "settings")
1139
+ person.preferences.create!(name: "settings")
1141
1140
  end
1142
1141
 
1143
1142
  let!(:relation) do
@@ -1309,7 +1308,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1309
1308
  context "when the parent is not a new record" do
1310
1309
 
1311
1310
  let(:person) do
1312
- Person.create
1311
+ Person.create!
1313
1312
  end
1314
1313
 
1315
1314
  let!(:preference) do
@@ -1353,11 +1352,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1353
1352
  context "when appending in a parent create block" do
1354
1353
 
1355
1354
  let!(:preference) do
1356
- Preference.create(name: "testing")
1355
+ Preference.create!(name: "testing")
1357
1356
  end
1358
1357
 
1359
1358
  let!(:person) do
1360
- Person.create do |doc|
1359
+ Person.create! do |doc|
1361
1360
  doc.preferences.concat([ preference ])
1362
1361
  end
1363
1362
  end
@@ -1442,7 +1441,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1442
1441
  context "when the child is already persisted" do
1443
1442
 
1444
1443
  let!(:persisted) do
1445
- Preference.create(name: "testy")
1444
+ Preference.create!(name: "testy")
1446
1445
  end
1447
1446
 
1448
1447
  let(:preference) do
@@ -1451,7 +1450,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1451
1450
 
1452
1451
  before do
1453
1452
  person.preferences.concat([ preference ])
1454
- person.save
1453
+ person.save!
1455
1454
  end
1456
1455
 
1457
1456
  it "adds the documents to the relation" do
@@ -1482,7 +1481,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1482
1481
  context "when setting via the associated ids" do
1483
1482
 
1484
1483
  let!(:persisted) do
1485
- Preference.create(name: "testy")
1484
+ Preference.create!(name: "testy")
1486
1485
  end
1487
1486
 
1488
1487
  let(:preference) do
@@ -1494,7 +1493,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1494
1493
  end
1495
1494
 
1496
1495
  before do
1497
- person.save
1496
+ person.save!
1498
1497
  end
1499
1498
 
1500
1499
  it "adds the documents to the relation" do
@@ -1522,7 +1521,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1522
1521
  context "when the parent is not a new record" do
1523
1522
 
1524
1523
  let(:person) do
1525
- Person.create
1524
+ Person.create!
1526
1525
  end
1527
1526
 
1528
1527
  let(:preference) do
@@ -1604,11 +1603,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1604
1603
  context "when both sides have been persisted" do
1605
1604
 
1606
1605
  let(:person) do
1607
- Person.create
1606
+ Person.create!
1608
1607
  end
1609
1608
 
1610
1609
  let(:event) do
1611
- Event.create
1610
+ Event.create!
1612
1611
  end
1613
1612
 
1614
1613
  before do
@@ -1657,15 +1656,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1657
1656
  context "when the relation also includes a has_many relation" do
1658
1657
 
1659
1658
  let(:artwork) do
1660
- Artwork.create
1659
+ Artwork.create!
1661
1660
  end
1662
1661
 
1663
1662
  let(:exhibition) do
1664
- Exhibition.create
1663
+ Exhibition.create!
1665
1664
  end
1666
1665
 
1667
1666
  let(:exhibitor) do
1668
- Exhibitor.create(exhibition: exhibition)
1667
+ Exhibitor.create!(exhibition: exhibition)
1669
1668
  end
1670
1669
 
1671
1670
  before do
@@ -1680,11 +1679,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1680
1679
  context "when the relation is self referencing" do
1681
1680
 
1682
1681
  let(:tag_one) do
1683
- Tag.create(text: "one")
1682
+ Tag.create!(text: "one")
1684
1683
  end
1685
1684
 
1686
1685
  let(:tag_two) do
1687
- Tag.create(text: "two")
1686
+ Tag.create!(text: "two")
1688
1687
  end
1689
1688
 
1690
1689
  before do
@@ -1735,7 +1734,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1735
1734
  describe "#count" do
1736
1735
 
1737
1736
  let(:person) do
1738
- Person.create
1737
+ Person.create!
1739
1738
  end
1740
1739
 
1741
1740
  context "when nothing exists on the relation" do
@@ -1760,7 +1759,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1760
1759
  describe "#any?" do
1761
1760
 
1762
1761
  let(:person) do
1763
- Person.create
1762
+ Person.create!
1764
1763
  end
1765
1764
 
1766
1765
  context "when nothing exists on the relation" do
@@ -1797,7 +1796,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1797
1796
  context "when documents have been persisted" do
1798
1797
 
1799
1798
  let!(:preference) do
1800
- person.preferences.create(name: "setting")
1799
+ person.preferences.create!(name: "setting")
1801
1800
  end
1802
1801
 
1803
1802
  it "returns the number of persisted documents" do
@@ -1808,12 +1807,12 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1808
1807
  context "when appending to a loaded relation" do
1809
1808
 
1810
1809
  let!(:preference) do
1811
- person.preferences.create(name: "setting")
1810
+ person.preferences.create!(name: "setting")
1812
1811
  end
1813
1812
 
1814
1813
  before do
1815
1814
  person.preferences.count
1816
- person.preferences << Preference.create(name: "two")
1815
+ person.preferences << Preference.create!(name: "two")
1817
1816
  end
1818
1817
 
1819
1818
  it "returns the number of persisted documents" do
@@ -1837,7 +1836,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1837
1836
  context "when the documents are part of the relation" do
1838
1837
 
1839
1838
  before do
1840
- Preference.create(person_ids: [ person.id ])
1839
+ Preference.create!(person_ids: [ person.id ])
1841
1840
  end
1842
1841
 
1843
1842
  it "returns the count from the db" do
@@ -1848,7 +1847,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1848
1847
  context "when the documents are not part of the relation" do
1849
1848
 
1850
1849
  before do
1851
- Preference.create
1850
+ Preference.create!
1852
1851
  end
1853
1852
 
1854
1853
  it "returns the count from the db" do
@@ -1862,7 +1861,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1862
1861
  context "when documents have been persisted" do
1863
1862
 
1864
1863
  let!(:house) do
1865
- person.houses.create(name: "Wayne Manor")
1864
+ person.houses.create!(name: "Wayne Manor")
1866
1865
  end
1867
1866
 
1868
1867
  it "returns the number of persisted documents" do
@@ -1886,7 +1885,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1886
1885
  describe "#any?" do
1887
1886
 
1888
1887
  let(:sandwich) do
1889
- Sandwich.create
1888
+ Sandwich.create!
1890
1889
  end
1891
1890
 
1892
1891
  context "when nothing exists on the relation" do
@@ -1954,7 +1953,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1954
1953
  context "when documents have been persisted" do
1955
1954
 
1956
1955
  let!(:meat) do
1957
- sandwich.meats.create
1956
+ sandwich.meats.create!
1958
1957
  end
1959
1958
 
1960
1959
  it "returns true" do
@@ -1975,7 +1974,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1975
1974
 
1976
1975
  context "when new documents exist in the database" do
1977
1976
  before do
1978
- Meat.create(sandwiches: [sandwich])
1977
+ Meat.create!(sandwiches: [sandwich])
1979
1978
  end
1980
1979
 
1981
1980
  it "returns true" do
@@ -1993,15 +1992,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
1993
1992
  context "when using string keys" do
1994
1993
 
1995
1994
  let(:agent) do
1996
- Agent.create(number: "007")
1995
+ Agent.create!(number: "007")
1997
1996
  end
1998
1997
 
1999
1998
  before do
2000
- agent.accounts.create(name: "testing again")
1999
+ agent.accounts.send(method, name: "test again")
2001
2000
  end
2002
2001
 
2003
2002
  it "does not convert the string key to an object id" do
2004
- expect(agent.account_ids).to eq([ "testing-again" ])
2003
+ expect(agent.account_ids).to eq([ "test-again" ])
2005
2004
  end
2006
2005
  end
2007
2006
 
@@ -2073,7 +2072,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2073
2072
  context "when validation fails" do
2074
2073
 
2075
2074
  let(:person) do
2076
- Person.create
2075
+ Person.create!
2077
2076
  end
2078
2077
 
2079
2078
  context "when the relation is not polymorphic" do
@@ -2090,15 +2089,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2090
2089
  describe "#delete" do
2091
2090
 
2092
2091
  let(:person) do
2093
- Person.create
2092
+ Person.create!
2094
2093
  end
2095
2094
 
2096
2095
  let(:preference_one) do
2097
- Preference.create(name: "Testing")
2096
+ Preference.create!(name: "Testing")
2098
2097
  end
2099
2098
 
2100
2099
  let(:preference_two) do
2101
- Preference.create(name: "Test")
2100
+ Preference.create!(name: "Test")
2102
2101
  end
2103
2102
 
2104
2103
  before do
@@ -2173,7 +2172,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2173
2172
  context "when :inverse_of is set" do
2174
2173
 
2175
2174
  let(:event) do
2176
- Event.create
2175
+ Event.create!
2177
2176
  end
2178
2177
 
2179
2178
  before do
@@ -2189,11 +2188,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2189
2188
  context "when the relationships are self referencing" do
2190
2189
 
2191
2190
  let(:tag_one) do
2192
- Tag.create(text: "one")
2191
+ Tag.create!(text: "one")
2193
2192
  end
2194
2193
 
2195
2194
  let(:tag_two) do
2196
- Tag.create(text: "two")
2195
+ Tag.create!(text: "two")
2197
2196
  end
2198
2197
 
2199
2198
  before do
@@ -2362,15 +2361,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2362
2361
  context "when conditions are provided" do
2363
2362
 
2364
2363
  let(:person) do
2365
- Person.create
2364
+ Person.create!
2366
2365
  end
2367
2366
 
2368
2367
  let!(:preference_one) do
2369
- person.preferences.create(name: "Testing")
2368
+ person.preferences.create!(name: "Testing")
2370
2369
  end
2371
2370
 
2372
2371
  let!(:preference_two) do
2373
- person.preferences.create(name: "Test")
2372
+ person.preferences.create!(name: "Test")
2374
2373
  end
2375
2374
 
2376
2375
  let!(:deleted) do
@@ -2400,9 +2399,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2400
2399
  context "when conditions are not provided" do
2401
2400
 
2402
2401
  let(:person) do
2403
- Person.create.tap do |person|
2404
- person.preferences.create(name: "Testing")
2405
- person.preferences.create(name: "Test")
2402
+ Person.create!.tap do |person|
2403
+ person.preferences.create!(name: "Testing")
2404
+ person.preferences.create!(name: "Test")
2406
2405
  end
2407
2406
  end
2408
2407
 
@@ -2436,13 +2435,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2436
2435
  describe "#exists?" do
2437
2436
 
2438
2437
  let!(:person) do
2439
- Person.create
2438
+ Person.create!
2440
2439
  end
2441
2440
 
2442
2441
  context "when documents exist in the database" do
2443
2442
 
2444
2443
  before do
2445
- person.preferences.create
2444
+ person.preferences.create!
2446
2445
  end
2447
2446
 
2448
2447
  it "returns true" do
@@ -2467,23 +2466,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2467
2466
  context "when the relation is not polymorphic" do
2468
2467
 
2469
2468
  let(:person) do
2470
- Person.create
2469
+ Person.create!
2471
2470
  end
2472
2471
 
2473
2472
  let!(:preference_one) do
2474
- person.preferences.create(name: "Test")
2473
+ person.preferences.create!(name: "Test")
2475
2474
  end
2476
2475
 
2477
2476
  let!(:preference_two) do
2478
- person.preferences.create(name: "OMG I has relations")
2477
+ person.preferences.create!(name: "OMG I has relations")
2479
2478
  end
2480
2479
 
2481
2480
  let!(:unrelated_pref) do
2482
- Preference.create(name: "orphan annie")
2481
+ Preference.create!(name: "orphan annie")
2483
2482
  end
2484
2483
 
2485
2484
  let!(:unrelated_pref_two) do
2486
- Preference.create(name: "orphan two")
2485
+ Preference.create!(name: "orphan two")
2487
2486
  end
2488
2487
 
2489
2488
  context "when providing an id" do
@@ -2561,7 +2560,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2561
2560
  end
2562
2561
  end
2563
2562
 
2564
- context "when the ids matche unreferenced documents" do
2563
+ context "when the ids match unreferenced documents" do
2565
2564
 
2566
2565
  let(:preferences) do
2567
2566
  person.preferences.find(
@@ -2619,11 +2618,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2619
2618
  context "when the relation is not polymorphic" do
2620
2619
 
2621
2620
  let(:person) do
2622
- Person.create
2621
+ Person.create!
2623
2622
  end
2624
2623
 
2625
2624
  let!(:preference) do
2626
- person.preferences.create(name: "Testing")
2625
+ person.preferences.create!(name: "Testing")
2627
2626
  end
2628
2627
 
2629
2628
  context "when the document exists" do
@@ -2659,11 +2658,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2659
2658
  context "when the relation is not polymorphic" do
2660
2659
 
2661
2660
  let(:person) do
2662
- Person.create
2661
+ Person.create!
2663
2662
  end
2664
2663
 
2665
2664
  let!(:preference) do
2666
- person.preferences.create(name: "Testing")
2665
+ person.preferences.create!(name: "Testing")
2667
2666
  end
2668
2667
 
2669
2668
  context "when the document exists" do
@@ -2708,11 +2707,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2708
2707
  context "when the relation is not polymorphic" do
2709
2708
 
2710
2709
  let(:person) do
2711
- Person.create
2710
+ Person.create!
2712
2711
  end
2713
2712
 
2714
2713
  let!(:preference) do
2715
- person.preferences.create(name: "Testing")
2714
+ person.preferences.create!(name: "Testing")
2716
2715
  end
2717
2716
 
2718
2717
  context "when the document exists" do
@@ -2746,15 +2745,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2746
2745
  describe "#max" do
2747
2746
 
2748
2747
  let(:person) do
2749
- Person.create
2748
+ Person.create!
2750
2749
  end
2751
2750
 
2752
2751
  let(:preference_one) do
2753
- Preference.create(ranking: 5)
2752
+ Preference.create!(ranking: 5)
2754
2753
  end
2755
2754
 
2756
2755
  let(:preference_two) do
2757
- Preference.create(ranking: 10)
2756
+ Preference.create!(ranking: 10)
2758
2757
  end
2759
2758
 
2760
2759
  before do
@@ -2775,15 +2774,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2775
2774
  describe "#max_by" do
2776
2775
 
2777
2776
  let(:person) do
2778
- Person.create
2777
+ Person.create!
2779
2778
  end
2780
2779
 
2781
2780
  let(:preference_one) do
2782
- Preference.create(ranking: 5)
2781
+ Preference.create!(ranking: 5)
2783
2782
  end
2784
2783
 
2785
2784
  let(:preference_two) do
2786
- Preference.create(ranking: 10)
2785
+ Preference.create!(ranking: 10)
2787
2786
  end
2788
2787
 
2789
2788
  before do
@@ -2802,19 +2801,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2802
2801
  describe "#method_missing" do
2803
2802
 
2804
2803
  let!(:person) do
2805
- Person.create
2804
+ Person.create!
2806
2805
  end
2807
2806
 
2808
2807
  let!(:preference_one) do
2809
- person.preferences.create(name: "First", value: "Posting")
2808
+ person.preferences.create!(name: "First", value: "Posting")
2810
2809
  end
2811
2810
 
2812
2811
  let!(:preference_two) do
2813
- person.preferences.create(name: "Second", value: "Testing")
2812
+ person.preferences.create!(name: "Second", value: "Testing")
2814
2813
  end
2815
2814
 
2816
2815
  let!(:unrelated) do
2817
- Preference.create(name: "Third")
2816
+ Preference.create!(name: "Third")
2818
2817
  end
2819
2818
 
2820
2819
  context "when providing a single criteria" do
@@ -2889,7 +2888,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2889
2888
  context "when the inverse relation is not defined" do
2890
2889
 
2891
2890
  let!(:house) do
2892
- person.houses.create(name: "Wayne Manor")
2891
+ person.houses.create!(name: "Wayne Manor")
2893
2892
  end
2894
2893
 
2895
2894
  it "returns the distinct values for the fields" do
@@ -2903,15 +2902,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2903
2902
  describe "#min" do
2904
2903
 
2905
2904
  let(:person) do
2906
- Person.create
2905
+ Person.create!
2907
2906
  end
2908
2907
 
2909
2908
  let(:preference_one) do
2910
- Preference.create(ranking: 5)
2909
+ Preference.create!(ranking: 5)
2911
2910
  end
2912
2911
 
2913
2912
  let(:preference_two) do
2914
- Preference.create(ranking: 10)
2913
+ Preference.create!(ranking: 10)
2915
2914
  end
2916
2915
 
2917
2916
  before do
@@ -2932,15 +2931,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2932
2931
  describe "#min_by" do
2933
2932
 
2934
2933
  let(:person) do
2935
- Person.create
2934
+ Person.create!
2936
2935
  end
2937
2936
 
2938
2937
  let(:preference_one) do
2939
- Preference.create(ranking: 5)
2938
+ Preference.create!(ranking: 5)
2940
2939
  end
2941
2940
 
2942
2941
  let(:preference_two) do
2943
- Preference.create(ranking: 10)
2942
+ Preference.create!(ranking: 10)
2944
2943
  end
2945
2944
 
2946
2945
  before do
@@ -2966,15 +2965,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2966
2965
  describe "#nullify_all" do
2967
2966
 
2968
2967
  let(:person) do
2969
- Person.create
2968
+ Person.create!
2970
2969
  end
2971
2970
 
2972
2971
  let!(:preference_one) do
2973
- person.preferences.create(name: "One")
2972
+ person.preferences.create!(name: "One")
2974
2973
  end
2975
2974
 
2976
2975
  let!(:preference_two) do
2977
- person.preferences.create(name: "Two")
2976
+ person.preferences.create!(name: "Two")
2978
2977
  end
2979
2978
 
2980
2979
  before do
@@ -3095,13 +3094,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3095
3094
  describe "##{method}" do
3096
3095
 
3097
3096
  let(:person) do
3098
- Person.create
3097
+ Person.create!
3099
3098
  end
3100
3099
 
3101
3100
  context "when documents have been persisted" do
3102
3101
 
3103
3102
  let!(:preference) do
3104
- person.preferences.create(name: "Testing")
3103
+ person.preferences.create!(name: "Testing")
3105
3104
  end
3106
3105
 
3107
3106
  it "returns the number of documents" do
@@ -3113,7 +3112,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3113
3112
 
3114
3113
  before do
3115
3114
  person.preferences.build(name: "Test")
3116
- person.preferences.create(name: "Test 2")
3115
+ person.preferences.create!(name: "Test 2")
3117
3116
  end
3118
3117
 
3119
3118
  it "returns the total number of documents" do
@@ -3128,15 +3127,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3128
3127
  context "when the relation has no default scope" do
3129
3128
 
3130
3129
  let!(:person) do
3131
- Person.create
3130
+ Person.create!
3132
3131
  end
3133
3132
 
3134
3133
  let!(:preference_one) do
3135
- person.preferences.create(name: "first")
3134
+ person.preferences.create!(name: "first")
3136
3135
  end
3137
3136
 
3138
3137
  let!(:preference_two) do
3139
- Preference.create(name: "second")
3138
+ Preference.create!(name: "second")
3140
3139
  end
3141
3140
 
3142
3141
  let(:unscoped) do
@@ -3151,15 +3150,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3151
3150
  context "when the relation has a default scope" do
3152
3151
 
3153
3152
  let!(:person) do
3154
- Person.create
3153
+ Person.create!
3155
3154
  end
3156
3155
 
3157
3156
  let!(:house_one) do
3158
- person.houses.create(name: "first")
3157
+ person.houses.create!(name: "first")
3159
3158
  end
3160
3159
 
3161
3160
  let!(:house_two) do
3162
- House.create(name: "second")
3161
+ House.create!(name: "second")
3163
3162
  end
3164
3163
 
3165
3164
  let(:unscoped) do
@@ -3195,10 +3194,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3195
3194
  end
3196
3195
 
3197
3196
  before do
3198
- person.update_attributes(
3197
+ person.update_attributes!(
3199
3198
  houses: [ wife_house, exwife_house, girlfriend_house ]
3200
3199
  )
3201
- person.update_attributes(house_ids: [ girlfriend_house.id ])
3200
+ person.update_attributes!(house_ids: [ girlfriend_house.id ])
3202
3201
  end
3203
3202
 
3204
3203
  context "when reloading" do
@@ -3245,7 +3244,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3245
3244
  end
3246
3245
 
3247
3246
  let!(:business) do
3248
- Business.create(name: "serious", owners: [ user ])
3247
+ Business.create!(name: "serious", owners: [ user ])
3249
3248
  end
3250
3249
 
3251
3250
  before do
@@ -3288,11 +3287,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3288
3287
  context "when the documents are persisted" do
3289
3288
 
3290
3289
  let(:user) do
3291
- User.create(name: "tst")
3290
+ User.create!(name: "tst")
3292
3291
  end
3293
3292
 
3294
3293
  let(:business) do
3295
- Business.create(name: "srs", owners: [ user ])
3294
+ Business.create!(name: "srs", owners: [ user ])
3296
3295
  end
3297
3296
 
3298
3297
  before do
@@ -3336,11 +3335,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3336
3335
  context "when binding the relation multiple times" do
3337
3336
 
3338
3337
  let(:person) do
3339
- Person.create
3338
+ Person.create!
3340
3339
  end
3341
3340
 
3342
3341
  let(:preference) do
3343
- person.preferences.create(name: "testing")
3342
+ person.preferences.create!(name: "testing")
3344
3343
  end
3345
3344
 
3346
3345
  before do
@@ -3359,19 +3358,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3359
3358
  context "when the association has order criteria" do
3360
3359
 
3361
3360
  let(:person) do
3362
- Person.create
3361
+ Person.create!
3363
3362
  end
3364
3363
 
3365
3364
  let(:preference_one) do
3366
- OrderedPreference.create(name: 'preference-1', value: 10)
3365
+ OrderedPreference.create!(name: 'preference-1', value: 10)
3367
3366
  end
3368
3367
 
3369
3368
  let(:preference_two) do
3370
- OrderedPreference.create(name: 'preference-2', value: 20)
3369
+ OrderedPreference.create!(name: 'preference-2', value: 20)
3371
3370
  end
3372
3371
 
3373
3372
  let(:preference_three) do
3374
- OrderedPreference.create(name: 'preference-3', value: 20)
3373
+ OrderedPreference.create!(name: 'preference-3', value: 20)
3375
3374
  end
3376
3375
 
3377
3376
  before do
@@ -3395,7 +3394,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3395
3394
  context "when the parent is not a new record and freshly loaded" do
3396
3395
 
3397
3396
  let(:person) do
3398
- Person.create
3397
+ Person.create!
3399
3398
  end
3400
3399
 
3401
3400
  let(:preference) do
@@ -3404,7 +3403,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3404
3403
 
3405
3404
  before do
3406
3405
  person.preferences = [ preference ]
3407
- person.save
3406
+ person.save!
3408
3407
  person.reload
3409
3408
  person.preferences = nil
3410
3409
  end
@@ -3427,15 +3426,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3427
3426
  context "when reloading the relation" do
3428
3427
 
3429
3428
  let!(:person) do
3430
- Person.create
3429
+ Person.create!
3431
3430
  end
3432
3431
 
3433
3432
  let!(:preference_one) do
3434
- Preference.create(name: "one")
3433
+ Preference.create!(name: "one")
3435
3434
  end
3436
3435
 
3437
3436
  let!(:preference_two) do
3438
- Preference.create(name: "two")
3437
+ Preference.create!(name: "two")
3439
3438
  end
3440
3439
 
3441
3440
  before do
@@ -3479,7 +3478,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3479
3478
  context "when the document is new" do
3480
3479
 
3481
3480
  let!(:person) do
3482
- Person.create(preference_names: "one, two")
3481
+ Person.create!(preference_names: "one, two")
3483
3482
  end
3484
3483
 
3485
3484
  let(:preference_one) do
@@ -3515,23 +3514,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3515
3514
  end
3516
3515
 
3517
3516
  let(:preference_one) do
3518
- Preference.create(name: "one")
3517
+ Preference.create!(name: "one")
3519
3518
  end
3520
3519
 
3521
3520
  let(:preference_two) do
3522
- Preference.create(name: "two")
3521
+ Preference.create!(name: "two")
3523
3522
  end
3524
3523
 
3525
3524
  before do
3526
3525
  person.preference_ids = [ preference_one.id, preference_two.id ]
3527
- person.save
3526
+ person.save!
3528
3527
  end
3529
3528
 
3530
3529
  context "and the order is changed" do
3531
3530
 
3532
3531
  before do
3533
3532
  person.preference_ids = [ preference_two.id, preference_one.id ]
3534
- person.save
3533
+ person.save!
3535
3534
  end
3536
3535
 
3537
3536
  let(:reloaded) do
@@ -3548,13 +3547,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3548
3547
  context "and the order is changed and an element is added" do
3549
3548
 
3550
3549
  let(:preference_three) do
3551
- Preference.create(name: "three")
3550
+ Preference.create!(name: "three")
3552
3551
  end
3553
3552
 
3554
3553
  before do
3555
3554
  person.preference_ids =
3556
3555
  [ preference_two.id, preference_one.id, preference_three.id ]
3557
- person.save
3556
+ person.save!
3558
3557
  end
3559
3558
 
3560
3559
  let(:reloaded) do
@@ -3571,16 +3570,16 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3571
3570
  context "and the order is changed and an element is removed" do
3572
3571
 
3573
3572
  let(:preference_three) do
3574
- Preference.create(name: "three")
3573
+ Preference.create!(name: "three")
3575
3574
  end
3576
3575
 
3577
3576
  before do
3578
3577
  person.preference_ids =
3579
3578
  [ preference_one.id, preference_two.id, preference_three.id ]
3580
- person.save
3579
+ person.save!
3581
3580
  person.preference_ids =
3582
3581
  [ preference_three.id, preference_two.id ]
3583
- person.save
3582
+ person.save!
3584
3583
  end
3585
3584
 
3586
3585
  let(:reloaded) do
@@ -3630,15 +3629,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3630
3629
  context "when the relation exists" do
3631
3630
 
3632
3631
  let!(:person) do
3633
- Person.create
3632
+ Person.create!
3634
3633
  end
3635
3634
 
3636
3635
  let!(:pref_one) do
3637
- person.preferences.create
3636
+ person.preferences.create!
3638
3637
  end
3639
3638
 
3640
3639
  let!(:pref_two) do
3641
- Preference.create
3640
+ Preference.create!
3642
3641
  end
3643
3642
 
3644
3643
  before do
@@ -3654,15 +3653,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3654
3653
  context "when using a different primary key" do
3655
3654
 
3656
3655
  let(:dog) do
3657
- Dog.create(name: 'Doggie')
3656
+ Dog.create!(name: 'Doggie')
3658
3657
  end
3659
3658
 
3660
3659
  let(:cat) do
3661
- Cat.create(name: 'Kitty')
3660
+ Cat.create!(name: 'Kitty')
3661
+ end
3662
+
3663
+ let(:another_cat) do
3664
+ Cat.create!(name: 'Kitten')
3662
3665
  end
3663
3666
 
3664
3667
  let(:fire_hydrant) do
3665
- FireHydrant.create(location: '221B Baker Street')
3668
+ FireHydrant.create!(location: '221B Baker Street')
3666
3669
  end
3667
3670
 
3668
3671
  context "when adding to a one-way many to many" do
@@ -3676,6 +3679,28 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3676
3679
  end
3677
3680
  end
3678
3681
 
3682
+ context "when adding multiple documents to a one-way many to many" do
3683
+
3684
+ before do
3685
+ fire_hydrant.cats.push([cat, another_cat])
3686
+ end
3687
+
3688
+ it "adds the pk values to the fk set" do
3689
+ expect(fire_hydrant.cat_ids).to eq([cat.name, another_cat.name])
3690
+ end
3691
+ end
3692
+
3693
+ context "when adding a new document to a one-way many to many" do
3694
+
3695
+ before do
3696
+ fire_hydrant.cats.build name: 'Kitten'
3697
+ end
3698
+
3699
+ it "adds the pk values to the fk set" do
3700
+ expect(fire_hydrant.cat_ids).to eq(['Kitten'])
3701
+ end
3702
+ end
3703
+
3679
3704
  context "when adding to a two-way many to many" do
3680
3705
 
3681
3706
  before do
@@ -3732,10 +3757,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3732
3757
  end
3733
3758
 
3734
3759
  it "should assign relation from both sides" do
3735
- p1 = Project.create name: 'Foo'
3736
- p2 = Project.create name: 'Bar'
3737
- d1 = Distributor.create name: 'Rock'
3738
- d2 = Distributor.create name: 'Soul'
3760
+ p1 = Project.create! name: 'Foo'
3761
+ p2 = Project.create! name: 'Bar'
3762
+ d1 = Distributor.create! name: 'Rock'
3763
+ d2 = Distributor.create! name: 'Soul'
3739
3764
 
3740
3765
  p1.distributors << d1
3741
3766
  expect(p1.d_ids).to match_array([d1.id])