mongoid 7.3.5 → 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 (880) 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 +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 +12 -59
  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 +0 -24
  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 +5 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +0 -25
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +39 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +20 -67
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +6 -2
  146. data/lib/mongoid/criteria/queryable.rb +0 -7
  147. data/lib/mongoid/criteria/scopable.rb +25 -19
  148. data/lib/mongoid/criteria.rb +0 -57
  149. data/lib/mongoid/document.rb +0 -51
  150. data/lib/mongoid/equality.rb +26 -10
  151. data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
  152. data/lib/mongoid/errors/callback.rb +0 -3
  153. data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
  154. data/lib/mongoid/errors/delete_restriction.rb +0 -3
  155. data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
  156. data/lib/mongoid/errors/document_not_found.rb +0 -9
  157. data/lib/mongoid/errors/eager_load.rb +0 -3
  158. data/lib/mongoid/errors/empty_config_file.rb +0 -1
  159. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
  160. data/lib/mongoid/errors/invalid_collection.rb +0 -1
  161. data/lib/mongoid/errors/invalid_config_file.rb +0 -1
  162. data/lib/mongoid/errors/invalid_config_option.rb +0 -3
  163. data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
  164. data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
  165. data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
  166. data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
  167. data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
  168. data/lib/mongoid/errors/invalid_field.rb +0 -5
  169. data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
  170. data/lib/mongoid/errors/invalid_field_option.rb +0 -3
  171. data/lib/mongoid/errors/invalid_find.rb +0 -3
  172. data/lib/mongoid/errors/invalid_includes.rb +0 -3
  173. data/lib/mongoid/errors/invalid_index.rb +0 -3
  174. data/lib/mongoid/errors/invalid_options.rb +0 -3
  175. data/lib/mongoid/errors/invalid_path.rb +0 -3
  176. data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
  177. data/lib/mongoid/errors/invalid_query.rb +0 -1
  178. data/lib/mongoid/errors/invalid_relation.rb +0 -7
  179. data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
  180. data/lib/mongoid/errors/invalid_scope.rb +0 -3
  181. data/lib/mongoid/errors/invalid_session_use.rb +1 -6
  182. data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
  183. data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
  184. data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
  185. data/lib/mongoid/errors/invalid_time.rb +0 -3
  186. data/lib/mongoid/errors/invalid_value.rb +0 -1
  187. data/lib/mongoid/errors/inverse_not_found.rb +0 -3
  188. data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
  189. data/lib/mongoid/errors/mixed_relations.rb +0 -3
  190. data/lib/mongoid/errors/mongoid_error.rb +0 -9
  191. data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
  192. data/lib/mongoid/errors/no_client_config.rb +0 -3
  193. data/lib/mongoid/errors/no_client_database.rb +0 -3
  194. data/lib/mongoid/errors/no_client_hosts.rb +0 -3
  195. data/lib/mongoid/errors/no_clients_config.rb +0 -3
  196. data/lib/mongoid/errors/no_default_client.rb +0 -3
  197. data/lib/mongoid/errors/no_environment.rb +0 -3
  198. data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
  199. data/lib/mongoid/errors/no_metadata.rb +0 -3
  200. data/lib/mongoid/errors/no_parent.rb +0 -3
  201. data/lib/mongoid/errors/readonly_attribute.rb +0 -3
  202. data/lib/mongoid/errors/readonly_document.rb +1 -6
  203. data/lib/mongoid/errors/scope_overwrite.rb +0 -1
  204. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
  205. data/lib/mongoid/errors/unknown_attribute.rb +0 -3
  206. data/lib/mongoid/errors/unknown_model.rb +0 -3
  207. data/lib/mongoid/errors/unsaved_document.rb +1 -2
  208. data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
  209. data/lib/mongoid/errors/validations.rb +0 -1
  210. data/lib/mongoid/errors.rb +0 -1
  211. data/lib/mongoid/evolvable.rb +0 -3
  212. data/lib/mongoid/extensions/array.rb +3 -29
  213. data/lib/mongoid/extensions/big_decimal.rb +0 -11
  214. data/lib/mongoid/extensions/boolean.rb +0 -3
  215. data/lib/mongoid/extensions/date.rb +0 -9
  216. data/lib/mongoid/extensions/date_time.rb +0 -9
  217. data/lib/mongoid/extensions/decimal128.rb +0 -5
  218. data/lib/mongoid/extensions/false_class.rb +1 -6
  219. data/lib/mongoid/extensions/float.rb +0 -7
  220. data/lib/mongoid/extensions/hash.rb +0 -27
  221. data/lib/mongoid/extensions/integer.rb +0 -9
  222. data/lib/mongoid/extensions/module.rb +0 -3
  223. data/lib/mongoid/extensions/nil_class.rb +0 -5
  224. data/lib/mongoid/extensions/object.rb +1 -40
  225. data/lib/mongoid/extensions/object_id.rb +0 -7
  226. data/lib/mongoid/extensions/range.rb +0 -11
  227. data/lib/mongoid/extensions/regexp.rb +0 -3
  228. data/lib/mongoid/extensions/set.rb +0 -7
  229. data/lib/mongoid/extensions/string.rb +1 -30
  230. data/lib/mongoid/extensions/symbol.rb +0 -7
  231. data/lib/mongoid/extensions/time.rb +0 -11
  232. data/lib/mongoid/extensions/time_with_zone.rb +13 -9
  233. data/lib/mongoid/extensions/true_class.rb +1 -6
  234. data/lib/mongoid/extensions.rb +15 -3
  235. data/lib/mongoid/factory.rb +1 -2
  236. data/lib/mongoid/fields/foreign_key.rb +0 -21
  237. data/lib/mongoid/fields/localized.rb +0 -11
  238. data/lib/mongoid/fields/standard.rb +0 -33
  239. data/lib/mongoid/fields/validators/macro.rb +0 -9
  240. data/lib/mongoid/fields/validators.rb +0 -1
  241. data/lib/mongoid/fields.rb +64 -57
  242. data/lib/mongoid/findable.rb +0 -5
  243. data/lib/mongoid/indexable/specification.rb +0 -15
  244. data/lib/mongoid/indexable/validators/options.rb +0 -7
  245. data/lib/mongoid/indexable.rb +1 -18
  246. data/lib/mongoid/inspectable.rb +1 -10
  247. data/lib/mongoid/interceptable.rb +0 -25
  248. data/lib/mongoid/loggable.rb +0 -9
  249. data/lib/mongoid/matchable.rb +0 -5
  250. data/lib/mongoid/matcher/eq_impl.rb +37 -2
  251. data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
  252. data/lib/mongoid/persistable/creatable.rb +1 -20
  253. data/lib/mongoid/persistable/deletable.rb +0 -17
  254. data/lib/mongoid/persistable/destroyable.rb +0 -7
  255. data/lib/mongoid/persistable/incrementable.rb +0 -5
  256. data/lib/mongoid/persistable/logical.rb +0 -5
  257. data/lib/mongoid/persistable/poppable.rb +0 -5
  258. data/lib/mongoid/persistable/pullable.rb +0 -7
  259. data/lib/mongoid/persistable/pushable.rb +0 -7
  260. data/lib/mongoid/persistable/renamable.rb +0 -5
  261. data/lib/mongoid/persistable/savable.rb +0 -7
  262. data/lib/mongoid/persistable/settable.rb +0 -5
  263. data/lib/mongoid/persistable/unsettable.rb +0 -5
  264. data/lib/mongoid/persistable/updatable.rb +2 -17
  265. data/lib/mongoid/persistable/upsertable.rb +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 +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/config/templates/mongoid.yml +2 -7
  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/integration/app_spec.rb +0 -1
  308. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  309. data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
  310. data/spec/integration/associations/embedded_spec.rb +0 -1
  311. data/spec/integration/associations/embeds_many_spec.rb +0 -1
  312. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  314. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  315. data/spec/integration/associations/has_many_spec.rb +0 -1
  316. data/spec/integration/associations/has_one_spec.rb +0 -1
  317. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  319. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  320. data/spec/integration/associations/scope_option_spec.rb +101 -0
  321. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  322. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  323. data/spec/integration/callbacks_models.rb +12 -0
  324. data/spec/integration/callbacks_spec.rb +18 -6
  325. data/spec/integration/contextual/empty_spec.rb +0 -1
  326. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  327. data/spec/integration/criteria/date_field_spec.rb +0 -1
  328. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  329. data/spec/integration/criteria/logical_spec.rb +30 -0
  330. data/spec/integration/criteria/range_spec.rb +265 -0
  331. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  332. data/spec/integration/discriminator_key_spec.rb +0 -1
  333. data/spec/integration/discriminator_value_spec.rb +0 -1
  334. data/spec/integration/document_spec.rb +0 -1
  335. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  336. data/spec/integration/matcher_examples_spec.rb +0 -1
  337. data/spec/integration/matcher_operator_spec.rb +27 -3
  338. data/spec/integration/matcher_spec.rb +95 -1
  339. data/spec/integration/server_query_spec.rb +0 -1
  340. data/spec/integration/shardable_spec.rb +0 -1
  341. data/spec/integration/stringified_symbol_field_spec.rb +14 -1
  342. data/spec/lite_spec_helper.rb +0 -1
  343. data/spec/mongoid/association/accessors_spec.rb +44 -15
  344. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  345. data/spec/mongoid/association/builders_spec.rb +1 -2
  346. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  347. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  348. data/spec/mongoid/association/depending_spec.rb +12 -13
  349. data/spec/mongoid/association/eager_spec.rb +4 -5
  350. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  352. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  354. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  355. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  358. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -156
  359. data/spec/mongoid/association/embedded/embeds_many_models.rb +0 -122
  360. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  364. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  365. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  368. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  369. data/spec/mongoid/association/macros_spec.rb +9 -10
  370. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  371. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  372. data/spec/mongoid/association/options_spec.rb +0 -1
  373. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  375. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  376. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  377. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  378. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -1
  379. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -162
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  387. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  388. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  389. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  390. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  391. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +59 -33
  392. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  393. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +225 -178
  394. data/spec/mongoid/association/referenced/has_many_models.rb +18 -1
  395. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  396. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  397. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  398. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  399. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  400. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  401. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  402. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  403. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  404. data/spec/mongoid/association/reflections_spec.rb +0 -1
  405. data/spec/mongoid/association/syncable_spec.rb +31 -32
  406. data/spec/mongoid/association_spec.rb +0 -1
  407. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  411. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  412. data/spec/mongoid/atomic_spec.rb +6 -7
  413. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  414. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  415. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  416. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  417. data/spec/mongoid/attributes_spec.rb +32 -33
  418. data/spec/mongoid/cacheable_spec.rb +1 -2
  419. data/spec/mongoid/changeable_spec.rb +35 -36
  420. data/spec/mongoid/clients/factory_spec.rb +0 -1
  421. data/spec/mongoid/clients/options_spec.rb +4 -5
  422. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  423. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  424. data/spec/mongoid/clients_spec.rb +6 -7
  425. data/spec/mongoid/composable_spec.rb +0 -1
  426. data/spec/mongoid/config/environment_spec.rb +0 -1
  427. data/spec/mongoid/config/options_spec.rb +0 -1
  428. data/spec/mongoid/config_spec.rb +105 -1
  429. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  430. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  431. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  432. data/spec/mongoid/contextual/atomic_spec.rb +46 -47
  433. data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
  434. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  435. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  436. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  437. data/spec/mongoid/contextual/none_spec.rb +7 -82
  438. data/spec/mongoid/copyable_spec.rb +12 -13
  439. data/spec/mongoid/copyable_spec_models.rb +0 -1
  440. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  441. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  443. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  444. data/spec/mongoid/criteria/options_spec.rb +0 -1
  445. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  446. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  460. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  470. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  471. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  473. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  474. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  476. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  477. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  480. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  481. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  482. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  483. data/spec/mongoid/criteria_spec.rb +515 -187
  484. data/spec/mongoid/document_fields_spec.rb +0 -1
  485. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  486. data/spec/mongoid/document_query_spec.rb +0 -1
  487. data/spec/mongoid/document_spec.rb +11 -33
  488. data/spec/mongoid/equality_spec.rb +142 -41
  489. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  490. data/spec/mongoid/errors/callback_spec.rb +0 -1
  491. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  493. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  494. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  496. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  506. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  507. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  509. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  510. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  512. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  513. data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
  514. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  522. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  524. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  525. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  526. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  527. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  528. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  529. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  530. data/spec/mongoid/errors/validations_spec.rb +0 -1
  531. data/spec/mongoid/extensions/array_spec.rb +0 -1
  532. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  533. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  534. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_spec.rb +0 -1
  537. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  538. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  539. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  540. data/spec/mongoid/extensions/float_spec.rb +0 -1
  541. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  542. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  543. data/spec/mongoid/extensions/module_spec.rb +0 -1
  544. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  546. data/spec/mongoid/extensions/object_spec.rb +0 -1
  547. data/spec/mongoid/extensions/range_spec.rb +0 -1
  548. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  549. data/spec/mongoid/extensions/set_spec.rb +0 -1
  550. data/spec/mongoid/extensions/string_spec.rb +2 -3
  551. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_spec.rb +0 -1
  554. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  555. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  556. data/spec/mongoid/extensions_spec.rb +14 -3
  557. data/spec/mongoid/factory_spec.rb +1 -1
  558. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  559. data/spec/mongoid/fields/localized_spec.rb +0 -1
  560. data/spec/mongoid/fields/standard_spec.rb +0 -1
  561. data/spec/mongoid/fields_spec.rb +326 -31
  562. data/spec/mongoid/findable_spec.rb +21 -22
  563. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  564. data/spec/mongoid/indexable_spec.rb +0 -1
  565. data/spec/mongoid/inspectable_spec.rb +0 -1
  566. data/spec/mongoid/interceptable_spec.rb +102 -95
  567. data/spec/mongoid/loggable_spec.rb +0 -1
  568. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  569. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  570. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  571. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  573. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  574. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  575. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  577. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  578. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  579. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  580. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  581. data/spec/mongoid/persistable/updatable_spec.rb +41 -24
  582. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  583. data/spec/mongoid/persistable_spec.rb +1 -2
  584. data/spec/mongoid/persistence_context_spec.rb +0 -1
  585. data/spec/mongoid/positional_spec.rb +0 -1
  586. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  587. data/spec/mongoid/query_cache_spec.rb +30 -8
  588. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  589. data/spec/mongoid/reloadable_spec.rb +209 -23
  590. data/spec/mongoid/scopable_spec.rb +54 -22
  591. data/spec/mongoid/selectable_spec.rb +6 -7
  592. data/spec/mongoid/serializable_spec.rb +9 -10
  593. data/spec/mongoid/shardable_spec.rb +2 -3
  594. data/spec/mongoid/stateful_spec.rb +1 -2
  595. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  596. data/spec/mongoid/tasks/database_spec.rb +0 -1
  597. data/spec/mongoid/threaded_spec.rb +2 -3
  598. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  600. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  601. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  602. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  603. data/spec/mongoid/timestamps_spec.rb +6 -7
  604. data/spec/mongoid/touchable_spec.rb +15 -20
  605. data/spec/mongoid/touchable_spec_models.rb +0 -1
  606. data/spec/mongoid/traversable_spec.rb +65 -2
  607. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  608. data/spec/mongoid/validatable/format_spec.rb +0 -1
  609. data/spec/mongoid/validatable/length_spec.rb +0 -1
  610. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  611. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  612. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  613. data/spec/mongoid/validatable_spec.rb +2 -3
  614. data/spec/mongoid_spec.rb +0 -1
  615. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  616. data/spec/rails/mongoid_spec.rb +0 -1
  617. data/spec/shared/lib/mrss/constraints.rb +2 -1
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  620. data/spec/shared/share/Dockerfile.erb +25 -9
  621. data/spec/shared/shlib/distro.sh +2 -1
  622. data/spec/shared/shlib/server.sh +16 -4
  623. data/spec/shared/shlib/set_env.sh +6 -5
  624. data/spec/spec_helper.rb +12 -22
  625. data/spec/support/authorization.rb +0 -1
  626. data/spec/support/constraints.rb +0 -1
  627. data/spec/support/expectations.rb +0 -1
  628. data/spec/support/macros.rb +22 -1
  629. data/spec/support/models/account.rb +1 -2
  630. data/spec/support/models/acolyte.rb +0 -1
  631. data/spec/support/models/actor.rb +0 -1
  632. data/spec/support/models/actress.rb +0 -1
  633. data/spec/support/models/address.rb +0 -1
  634. data/spec/support/models/address_component.rb +0 -1
  635. data/spec/support/models/address_number.rb +0 -1
  636. data/spec/support/models/agency.rb +0 -1
  637. data/spec/support/models/agent.rb +0 -1
  638. data/spec/support/models/album.rb +0 -1
  639. data/spec/support/models/alert.rb +0 -1
  640. data/spec/support/models/animal.rb +0 -1
  641. data/spec/support/models/answer.rb +0 -1
  642. data/spec/support/models/appointment.rb +0 -1
  643. data/spec/support/models/armrest.rb +0 -1
  644. data/spec/support/models/array_field.rb +0 -1
  645. data/spec/support/models/article.rb +0 -1
  646. data/spec/support/models/artist.rb +2 -1
  647. data/spec/support/models/artwork.rb +0 -1
  648. data/spec/support/models/audio.rb +0 -1
  649. data/spec/support/models/augmentation.rb +0 -1
  650. data/spec/support/models/author.rb +0 -1
  651. data/spec/support/models/baby.rb +0 -1
  652. data/spec/support/models/band.rb +4 -1
  653. data/spec/support/models/bar.rb +0 -1
  654. data/spec/support/models/basic.rb +0 -1
  655. data/spec/support/models/bed.rb +0 -1
  656. data/spec/support/models/big_palette.rb +0 -1
  657. data/spec/support/models/birthday.rb +0 -1
  658. data/spec/support/models/bolt.rb +0 -1
  659. data/spec/support/models/bomb.rb +0 -1
  660. data/spec/support/models/book.rb +0 -1
  661. data/spec/support/models/breed.rb +0 -1
  662. data/spec/support/models/browser.rb +0 -1
  663. data/spec/support/models/building.rb +0 -1
  664. data/spec/support/models/building_address.rb +0 -1
  665. data/spec/support/models/bus.rb +0 -1
  666. data/spec/support/models/business.rb +0 -1
  667. data/spec/support/models/callback_test.rb +0 -1
  668. data/spec/support/models/canvas.rb +0 -1
  669. data/spec/support/models/car.rb +0 -1
  670. data/spec/support/models/cat.rb +0 -1
  671. data/spec/support/models/category.rb +0 -1
  672. data/spec/support/models/child.rb +0 -1
  673. data/spec/support/models/child_doc.rb +3 -4
  674. data/spec/support/models/church.rb +0 -1
  675. data/spec/support/models/circle.rb +0 -1
  676. data/spec/support/models/circuit.rb +0 -1
  677. data/spec/support/models/circus.rb +0 -1
  678. data/spec/support/models/code.rb +0 -1
  679. data/spec/support/models/coding/pull_request.rb +0 -1
  680. data/spec/support/models/coding.rb +0 -1
  681. data/spec/support/models/comment.rb +0 -1
  682. data/spec/support/models/company.rb +0 -1
  683. data/spec/support/models/consumption_period.rb +0 -1
  684. data/spec/support/models/contextable_item.rb +0 -1
  685. data/spec/support/models/contractor.rb +0 -1
  686. data/spec/support/models/cookie.rb +0 -1
  687. data/spec/support/models/country_code.rb +2 -1
  688. data/spec/support/models/courier_job.rb +0 -1
  689. data/spec/support/models/crate.rb +0 -1
  690. data/spec/support/models/customer.rb +0 -1
  691. data/spec/support/models/customer_address.rb +0 -1
  692. data/spec/support/models/deed.rb +0 -1
  693. data/spec/support/models/definition.rb +0 -1
  694. data/spec/support/models/delegating_patient.rb +0 -1
  695. data/spec/support/models/description.rb +0 -1
  696. data/spec/support/models/dictionary.rb +0 -1
  697. data/spec/support/models/division.rb +0 -1
  698. data/spec/support/models/doctor.rb +0 -1
  699. data/spec/support/models/dog.rb +0 -1
  700. data/spec/support/models/dokument.rb +0 -1
  701. data/spec/support/models/draft.rb +0 -1
  702. data/spec/support/models/dragon.rb +0 -1
  703. data/spec/support/models/driver.rb +0 -1
  704. data/spec/support/models/drug.rb +0 -1
  705. data/spec/support/models/dungeon.rb +0 -1
  706. data/spec/support/models/edit.rb +0 -1
  707. data/spec/support/models/email.rb +0 -1
  708. data/spec/support/models/employer.rb +0 -1
  709. data/spec/support/models/entry.rb +0 -1
  710. data/spec/support/models/eraser.rb +0 -1
  711. data/spec/support/models/even.rb +0 -1
  712. data/spec/support/models/event.rb +0 -1
  713. data/spec/support/models/exhibition.rb +0 -1
  714. data/spec/support/models/exhibitor.rb +0 -1
  715. data/spec/support/models/explosion.rb +0 -1
  716. data/spec/support/models/eye.rb +0 -1
  717. data/spec/support/models/eye_bowl.rb +0 -1
  718. data/spec/support/models/face.rb +0 -1
  719. data/spec/support/models/favorite.rb +0 -1
  720. data/spec/support/models/filesystem.rb +0 -1
  721. data/spec/support/models/fire_hydrant.rb +0 -1
  722. data/spec/support/models/firefox.rb +0 -1
  723. data/spec/support/models/fish.rb +0 -1
  724. data/spec/support/models/folder.rb +0 -1
  725. data/spec/support/models/folder_item.rb +0 -1
  726. data/spec/support/models/fruits.rb +0 -1
  727. data/spec/support/models/game.rb +0 -1
  728. data/spec/support/models/ghost.rb +0 -1
  729. data/spec/support/models/guitar.rb +0 -1
  730. data/spec/support/models/hole.rb +0 -1
  731. data/spec/support/models/home.rb +0 -1
  732. data/spec/support/models/house.rb +0 -1
  733. data/spec/support/models/html_writer.rb +0 -1
  734. data/spec/support/models/id_key.rb +0 -1
  735. data/spec/support/models/idnodef.rb +0 -1
  736. data/spec/support/models/image.rb +0 -1
  737. data/spec/support/models/implant.rb +0 -1
  738. data/spec/support/models/instrument.rb +0 -1
  739. data/spec/support/models/item.rb +0 -1
  740. data/spec/support/models/jar.rb +0 -1
  741. data/spec/support/models/kaleidoscope.rb +0 -1
  742. data/spec/support/models/kangaroo.rb +0 -1
  743. data/spec/support/models/label.rb +2 -2
  744. data/spec/support/models/language.rb +0 -1
  745. data/spec/support/models/lat_lng.rb +0 -1
  746. data/spec/support/models/league.rb +0 -1
  747. data/spec/support/models/learner.rb +0 -1
  748. data/spec/support/models/line_item.rb +0 -1
  749. data/spec/support/models/location.rb +0 -1
  750. data/spec/support/models/login.rb +0 -1
  751. data/spec/support/models/manufacturer.rb +0 -1
  752. data/spec/support/models/meat.rb +0 -1
  753. data/spec/support/models/membership.rb +0 -1
  754. data/spec/support/models/message.rb +0 -1
  755. data/spec/support/models/minim.rb +0 -1
  756. data/spec/support/models/mixed_drink.rb +0 -1
  757. data/spec/support/models/mop.rb +0 -1
  758. data/spec/support/models/movie.rb +0 -1
  759. data/spec/support/models/my_hash.rb +0 -1
  760. data/spec/support/models/name.rb +0 -1
  761. data/spec/support/models/name_only.rb +0 -1
  762. data/spec/support/models/node.rb +0 -1
  763. data/spec/support/models/note.rb +0 -1
  764. data/spec/support/models/nut.rb +0 -1
  765. data/spec/support/models/odd.rb +0 -1
  766. data/spec/support/models/order.rb +2 -1
  767. data/spec/support/models/ordered_post.rb +1 -2
  768. data/spec/support/models/ordered_preference.rb +0 -1
  769. data/spec/support/models/oscar.rb +0 -1
  770. data/spec/support/models/other_owner_object.rb +0 -1
  771. data/spec/support/models/override.rb +0 -1
  772. data/spec/support/models/ownable.rb +0 -1
  773. data/spec/support/models/owner.rb +0 -1
  774. data/spec/support/models/pack.rb +0 -1
  775. data/spec/support/models/page.rb +0 -1
  776. data/spec/support/models/page_question.rb +0 -1
  777. data/spec/support/models/palette.rb +0 -1
  778. data/spec/support/models/parent.rb +0 -1
  779. data/spec/support/models/parent_doc.rb +0 -1
  780. data/spec/support/models/passport.rb +5 -1
  781. data/spec/support/models/patient.rb +0 -1
  782. data/spec/support/models/pdf_writer.rb +0 -1
  783. data/spec/support/models/pencil.rb +0 -1
  784. data/spec/support/models/person.rb +1 -1
  785. data/spec/support/models/pet.rb +0 -1
  786. data/spec/support/models/pet_owner.rb +0 -1
  787. data/spec/support/models/phone.rb +2 -2
  788. data/spec/support/models/piano.rb +0 -1
  789. data/spec/support/models/pizza.rb +0 -1
  790. data/spec/support/models/player.rb +0 -1
  791. data/spec/support/models/post.rb +0 -1
  792. data/spec/support/models/post_genre.rb +0 -1
  793. data/spec/support/models/powerup.rb +0 -1
  794. data/spec/support/models/preference.rb +0 -1
  795. data/spec/support/models/princess.rb +0 -1
  796. data/spec/support/models/product.rb +0 -1
  797. data/spec/support/models/profile.rb +0 -1
  798. data/spec/support/models/pronunciation.rb +0 -1
  799. data/spec/support/models/pub.rb +0 -1
  800. data/spec/support/models/publication/encyclopedia.rb +0 -1
  801. data/spec/support/models/publication/review.rb +0 -1
  802. data/spec/support/models/publication.rb +0 -1
  803. data/spec/support/models/purchase.rb +0 -1
  804. data/spec/support/models/purchased_item.rb +10 -0
  805. data/spec/support/models/question.rb +0 -1
  806. data/spec/support/models/quiz.rb +0 -1
  807. data/spec/support/models/rating.rb +0 -1
  808. data/spec/support/models/record.rb +0 -1
  809. data/spec/support/models/registry.rb +0 -1
  810. data/spec/support/models/role.rb +0 -1
  811. data/spec/support/models/root_category.rb +0 -1
  812. data/spec/support/models/sandwich.rb +0 -1
  813. data/spec/support/models/scheduler.rb +0 -1
  814. data/spec/support/models/scribe.rb +0 -1
  815. data/spec/support/models/sealer.rb +0 -1
  816. data/spec/support/models/seat.rb +0 -1
  817. data/spec/support/models/seo.rb +0 -1
  818. data/spec/support/models/series.rb +0 -1
  819. data/spec/support/models/server.rb +0 -1
  820. data/spec/support/models/service.rb +0 -1
  821. data/spec/support/models/shape.rb +0 -1
  822. data/spec/support/models/shelf.rb +0 -1
  823. data/spec/support/models/shipment_address.rb +0 -1
  824. data/spec/support/models/shipping_container.rb +0 -1
  825. data/spec/support/models/shipping_pack.rb +0 -1
  826. data/spec/support/models/shirt.rb +0 -1
  827. data/spec/support/models/shop.rb +0 -1
  828. data/spec/support/models/short_agent.rb +0 -1
  829. data/spec/support/models/short_quiz.rb +0 -1
  830. data/spec/support/models/simple.rb +0 -1
  831. data/spec/support/models/slave.rb +0 -1
  832. data/spec/support/models/song.rb +0 -1
  833. data/spec/support/models/sound.rb +0 -1
  834. data/spec/support/models/spacer.rb +0 -1
  835. data/spec/support/models/square.rb +0 -1
  836. data/spec/support/models/staff.rb +0 -1
  837. data/spec/support/models/store_as_dup_test1.rb +0 -1
  838. data/spec/support/models/store_as_dup_test2.rb +0 -1
  839. data/spec/support/models/store_as_dup_test3.rb +0 -1
  840. data/spec/support/models/store_as_dup_test4.rb +0 -1
  841. data/spec/support/models/strategy.rb +0 -1
  842. data/spec/support/models/sub_item.rb +0 -1
  843. data/spec/support/models/subscription.rb +0 -1
  844. data/spec/support/models/survey.rb +0 -1
  845. data/spec/support/models/symptom.rb +0 -1
  846. data/spec/support/models/tag.rb +0 -1
  847. data/spec/support/models/target.rb +0 -1
  848. data/spec/support/models/template.rb +0 -1
  849. data/spec/support/models/thing.rb +0 -1
  850. data/spec/support/models/threadlocker.rb +0 -1
  851. data/spec/support/models/title.rb +0 -1
  852. data/spec/support/models/tool.rb +0 -1
  853. data/spec/support/models/topping.rb +0 -1
  854. data/spec/support/models/toy.rb +0 -1
  855. data/spec/support/models/track.rb +0 -1
  856. data/spec/support/models/translation.rb +0 -1
  857. data/spec/support/models/tree.rb +0 -1
  858. data/spec/support/models/truck.rb +0 -1
  859. data/spec/support/models/updatable.rb +0 -1
  860. data/spec/support/models/user.rb +0 -1
  861. data/spec/support/models/user_account.rb +0 -1
  862. data/spec/support/models/validation_callback.rb +0 -1
  863. data/spec/support/models/vehicle.rb +0 -1
  864. data/spec/support/models/version.rb +0 -1
  865. data/spec/support/models/vertex.rb +0 -1
  866. data/spec/support/models/vet_visit.rb +0 -1
  867. data/spec/support/models/video.rb +0 -1
  868. data/spec/support/models/video_game.rb +0 -1
  869. data/spec/support/models/washer.rb +0 -1
  870. data/spec/support/models/weapon.rb +0 -1
  871. data/spec/support/models/wiki_page.rb +0 -1
  872. data/spec/support/models/word.rb +0 -1
  873. data/spec/support/models/word_origin.rb +0 -1
  874. data/spec/support/models/writer.rb +0 -1
  875. data/spec/support/shared/time.rb +0 -1
  876. data/spec/support/spec_config.rb +3 -1
  877. data.tar.gz.sig +0 -0
  878. metadata +25 -12
  879. metadata.gz.sig +0 -0
  880. data/lib/support/ruby_version.rb +0 -29
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -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
@@ -2395,18 +2394,14 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2395
2394
  it "removes the ids from the foreign key" do
2396
2395
  expect(person.preference_ids).to eq([ preference_two.id ])
2397
2396
  end
2398
-
2399
- it "sets the association locally" do
2400
- expect(person.preferences).to eq([preference_two])
2401
- end
2402
2397
  end
2403
2398
 
2404
2399
  context "when conditions are not provided" do
2405
2400
 
2406
2401
  let(:person) do
2407
- Person.create.tap do |person|
2408
- person.preferences.create(name: "Testing")
2409
- person.preferences.create(name: "Test")
2402
+ Person.create!.tap do |person|
2403
+ person.preferences.create!(name: "Testing")
2404
+ person.preferences.create!(name: "Test")
2410
2405
  end
2411
2406
  end
2412
2407
 
@@ -2425,10 +2420,6 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2425
2420
  it "returns the number of documents deleted" do
2426
2421
  expect(deleted).to eq(2)
2427
2422
  end
2428
-
2429
- it "sets the association locally" do
2430
- expect(person.preferences).to eq([])
2431
- end
2432
2423
  end
2433
2424
  end
2434
2425
  end
@@ -2444,13 +2435,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2444
2435
  describe "#exists?" do
2445
2436
 
2446
2437
  let!(:person) do
2447
- Person.create
2438
+ Person.create!
2448
2439
  end
2449
2440
 
2450
2441
  context "when documents exist in the database" do
2451
2442
 
2452
2443
  before do
2453
- person.preferences.create
2444
+ person.preferences.create!
2454
2445
  end
2455
2446
 
2456
2447
  it "returns true" do
@@ -2475,23 +2466,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2475
2466
  context "when the relation is not polymorphic" do
2476
2467
 
2477
2468
  let(:person) do
2478
- Person.create
2469
+ Person.create!
2479
2470
  end
2480
2471
 
2481
2472
  let!(:preference_one) do
2482
- person.preferences.create(name: "Test")
2473
+ person.preferences.create!(name: "Test")
2483
2474
  end
2484
2475
 
2485
2476
  let!(:preference_two) do
2486
- person.preferences.create(name: "OMG I has relations")
2477
+ person.preferences.create!(name: "OMG I has relations")
2487
2478
  end
2488
2479
 
2489
2480
  let!(:unrelated_pref) do
2490
- Preference.create(name: "orphan annie")
2481
+ Preference.create!(name: "orphan annie")
2491
2482
  end
2492
2483
 
2493
2484
  let!(:unrelated_pref_two) do
2494
- Preference.create(name: "orphan two")
2485
+ Preference.create!(name: "orphan two")
2495
2486
  end
2496
2487
 
2497
2488
  context "when providing an id" do
@@ -2569,7 +2560,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2569
2560
  end
2570
2561
  end
2571
2562
 
2572
- context "when the ids matche unreferenced documents" do
2563
+ context "when the ids match unreferenced documents" do
2573
2564
 
2574
2565
  let(:preferences) do
2575
2566
  person.preferences.find(
@@ -2627,11 +2618,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2627
2618
  context "when the relation is not polymorphic" do
2628
2619
 
2629
2620
  let(:person) do
2630
- Person.create
2621
+ Person.create!
2631
2622
  end
2632
2623
 
2633
2624
  let!(:preference) do
2634
- person.preferences.create(name: "Testing")
2625
+ person.preferences.create!(name: "Testing")
2635
2626
  end
2636
2627
 
2637
2628
  context "when the document exists" do
@@ -2667,11 +2658,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2667
2658
  context "when the relation is not polymorphic" do
2668
2659
 
2669
2660
  let(:person) do
2670
- Person.create
2661
+ Person.create!
2671
2662
  end
2672
2663
 
2673
2664
  let!(:preference) do
2674
- person.preferences.create(name: "Testing")
2665
+ person.preferences.create!(name: "Testing")
2675
2666
  end
2676
2667
 
2677
2668
  context "when the document exists" do
@@ -2716,11 +2707,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2716
2707
  context "when the relation is not polymorphic" do
2717
2708
 
2718
2709
  let(:person) do
2719
- Person.create
2710
+ Person.create!
2720
2711
  end
2721
2712
 
2722
2713
  let!(:preference) do
2723
- person.preferences.create(name: "Testing")
2714
+ person.preferences.create!(name: "Testing")
2724
2715
  end
2725
2716
 
2726
2717
  context "when the document exists" do
@@ -2754,15 +2745,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2754
2745
  describe "#max" do
2755
2746
 
2756
2747
  let(:person) do
2757
- Person.create
2748
+ Person.create!
2758
2749
  end
2759
2750
 
2760
2751
  let(:preference_one) do
2761
- Preference.create(ranking: 5)
2752
+ Preference.create!(ranking: 5)
2762
2753
  end
2763
2754
 
2764
2755
  let(:preference_two) do
2765
- Preference.create(ranking: 10)
2756
+ Preference.create!(ranking: 10)
2766
2757
  end
2767
2758
 
2768
2759
  before do
@@ -2783,15 +2774,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2783
2774
  describe "#max_by" do
2784
2775
 
2785
2776
  let(:person) do
2786
- Person.create
2777
+ Person.create!
2787
2778
  end
2788
2779
 
2789
2780
  let(:preference_one) do
2790
- Preference.create(ranking: 5)
2781
+ Preference.create!(ranking: 5)
2791
2782
  end
2792
2783
 
2793
2784
  let(:preference_two) do
2794
- Preference.create(ranking: 10)
2785
+ Preference.create!(ranking: 10)
2795
2786
  end
2796
2787
 
2797
2788
  before do
@@ -2810,19 +2801,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2810
2801
  describe "#method_missing" do
2811
2802
 
2812
2803
  let!(:person) do
2813
- Person.create
2804
+ Person.create!
2814
2805
  end
2815
2806
 
2816
2807
  let!(:preference_one) do
2817
- person.preferences.create(name: "First", value: "Posting")
2808
+ person.preferences.create!(name: "First", value: "Posting")
2818
2809
  end
2819
2810
 
2820
2811
  let!(:preference_two) do
2821
- person.preferences.create(name: "Second", value: "Testing")
2812
+ person.preferences.create!(name: "Second", value: "Testing")
2822
2813
  end
2823
2814
 
2824
2815
  let!(:unrelated) do
2825
- Preference.create(name: "Third")
2816
+ Preference.create!(name: "Third")
2826
2817
  end
2827
2818
 
2828
2819
  context "when providing a single criteria" do
@@ -2897,7 +2888,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2897
2888
  context "when the inverse relation is not defined" do
2898
2889
 
2899
2890
  let!(:house) do
2900
- person.houses.create(name: "Wayne Manor")
2891
+ person.houses.create!(name: "Wayne Manor")
2901
2892
  end
2902
2893
 
2903
2894
  it "returns the distinct values for the fields" do
@@ -2911,15 +2902,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2911
2902
  describe "#min" do
2912
2903
 
2913
2904
  let(:person) do
2914
- Person.create
2905
+ Person.create!
2915
2906
  end
2916
2907
 
2917
2908
  let(:preference_one) do
2918
- Preference.create(ranking: 5)
2909
+ Preference.create!(ranking: 5)
2919
2910
  end
2920
2911
 
2921
2912
  let(:preference_two) do
2922
- Preference.create(ranking: 10)
2913
+ Preference.create!(ranking: 10)
2923
2914
  end
2924
2915
 
2925
2916
  before do
@@ -2940,15 +2931,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2940
2931
  describe "#min_by" do
2941
2932
 
2942
2933
  let(:person) do
2943
- Person.create
2934
+ Person.create!
2944
2935
  end
2945
2936
 
2946
2937
  let(:preference_one) do
2947
- Preference.create(ranking: 5)
2938
+ Preference.create!(ranking: 5)
2948
2939
  end
2949
2940
 
2950
2941
  let(:preference_two) do
2951
- Preference.create(ranking: 10)
2942
+ Preference.create!(ranking: 10)
2952
2943
  end
2953
2944
 
2954
2945
  before do
@@ -2974,15 +2965,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
2974
2965
  describe "#nullify_all" do
2975
2966
 
2976
2967
  let(:person) do
2977
- Person.create
2968
+ Person.create!
2978
2969
  end
2979
2970
 
2980
2971
  let!(:preference_one) do
2981
- person.preferences.create(name: "One")
2972
+ person.preferences.create!(name: "One")
2982
2973
  end
2983
2974
 
2984
2975
  let!(:preference_two) do
2985
- person.preferences.create(name: "Two")
2976
+ person.preferences.create!(name: "Two")
2986
2977
  end
2987
2978
 
2988
2979
  before do
@@ -3103,13 +3094,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3103
3094
  describe "##{method}" do
3104
3095
 
3105
3096
  let(:person) do
3106
- Person.create
3097
+ Person.create!
3107
3098
  end
3108
3099
 
3109
3100
  context "when documents have been persisted" do
3110
3101
 
3111
3102
  let!(:preference) do
3112
- person.preferences.create(name: "Testing")
3103
+ person.preferences.create!(name: "Testing")
3113
3104
  end
3114
3105
 
3115
3106
  it "returns the number of documents" do
@@ -3121,7 +3112,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3121
3112
 
3122
3113
  before do
3123
3114
  person.preferences.build(name: "Test")
3124
- person.preferences.create(name: "Test 2")
3115
+ person.preferences.create!(name: "Test 2")
3125
3116
  end
3126
3117
 
3127
3118
  it "returns the total number of documents" do
@@ -3136,15 +3127,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3136
3127
  context "when the relation has no default scope" do
3137
3128
 
3138
3129
  let!(:person) do
3139
- Person.create
3130
+ Person.create!
3140
3131
  end
3141
3132
 
3142
3133
  let!(:preference_one) do
3143
- person.preferences.create(name: "first")
3134
+ person.preferences.create!(name: "first")
3144
3135
  end
3145
3136
 
3146
3137
  let!(:preference_two) do
3147
- Preference.create(name: "second")
3138
+ Preference.create!(name: "second")
3148
3139
  end
3149
3140
 
3150
3141
  let(:unscoped) do
@@ -3159,15 +3150,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3159
3150
  context "when the relation has a default scope" do
3160
3151
 
3161
3152
  let!(:person) do
3162
- Person.create
3153
+ Person.create!
3163
3154
  end
3164
3155
 
3165
3156
  let!(:house_one) do
3166
- person.houses.create(name: "first")
3157
+ person.houses.create!(name: "first")
3167
3158
  end
3168
3159
 
3169
3160
  let!(:house_two) do
3170
- House.create(name: "second")
3161
+ House.create!(name: "second")
3171
3162
  end
3172
3163
 
3173
3164
  let(:unscoped) do
@@ -3203,10 +3194,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3203
3194
  end
3204
3195
 
3205
3196
  before do
3206
- person.update_attributes(
3197
+ person.update_attributes!(
3207
3198
  houses: [ wife_house, exwife_house, girlfriend_house ]
3208
3199
  )
3209
- person.update_attributes(house_ids: [ girlfriend_house.id ])
3200
+ person.update_attributes!(house_ids: [ girlfriend_house.id ])
3210
3201
  end
3211
3202
 
3212
3203
  context "when reloading" do
@@ -3253,7 +3244,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3253
3244
  end
3254
3245
 
3255
3246
  let!(:business) do
3256
- Business.create(name: "serious", owners: [ user ])
3247
+ Business.create!(name: "serious", owners: [ user ])
3257
3248
  end
3258
3249
 
3259
3250
  before do
@@ -3296,11 +3287,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3296
3287
  context "when the documents are persisted" do
3297
3288
 
3298
3289
  let(:user) do
3299
- User.create(name: "tst")
3290
+ User.create!(name: "tst")
3300
3291
  end
3301
3292
 
3302
3293
  let(:business) do
3303
- Business.create(name: "srs", owners: [ user ])
3294
+ Business.create!(name: "srs", owners: [ user ])
3304
3295
  end
3305
3296
 
3306
3297
  before do
@@ -3344,11 +3335,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3344
3335
  context "when binding the relation multiple times" do
3345
3336
 
3346
3337
  let(:person) do
3347
- Person.create
3338
+ Person.create!
3348
3339
  end
3349
3340
 
3350
3341
  let(:preference) do
3351
- person.preferences.create(name: "testing")
3342
+ person.preferences.create!(name: "testing")
3352
3343
  end
3353
3344
 
3354
3345
  before do
@@ -3367,19 +3358,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3367
3358
  context "when the association has order criteria" do
3368
3359
 
3369
3360
  let(:person) do
3370
- Person.create
3361
+ Person.create!
3371
3362
  end
3372
3363
 
3373
3364
  let(:preference_one) do
3374
- OrderedPreference.create(name: 'preference-1', value: 10)
3365
+ OrderedPreference.create!(name: 'preference-1', value: 10)
3375
3366
  end
3376
3367
 
3377
3368
  let(:preference_two) do
3378
- OrderedPreference.create(name: 'preference-2', value: 20)
3369
+ OrderedPreference.create!(name: 'preference-2', value: 20)
3379
3370
  end
3380
3371
 
3381
3372
  let(:preference_three) do
3382
- OrderedPreference.create(name: 'preference-3', value: 20)
3373
+ OrderedPreference.create!(name: 'preference-3', value: 20)
3383
3374
  end
3384
3375
 
3385
3376
  before do
@@ -3403,7 +3394,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3403
3394
  context "when the parent is not a new record and freshly loaded" do
3404
3395
 
3405
3396
  let(:person) do
3406
- Person.create
3397
+ Person.create!
3407
3398
  end
3408
3399
 
3409
3400
  let(:preference) do
@@ -3412,7 +3403,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3412
3403
 
3413
3404
  before do
3414
3405
  person.preferences = [ preference ]
3415
- person.save
3406
+ person.save!
3416
3407
  person.reload
3417
3408
  person.preferences = nil
3418
3409
  end
@@ -3435,15 +3426,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3435
3426
  context "when reloading the relation" do
3436
3427
 
3437
3428
  let!(:person) do
3438
- Person.create
3429
+ Person.create!
3439
3430
  end
3440
3431
 
3441
3432
  let!(:preference_one) do
3442
- Preference.create(name: "one")
3433
+ Preference.create!(name: "one")
3443
3434
  end
3444
3435
 
3445
3436
  let!(:preference_two) do
3446
- Preference.create(name: "two")
3437
+ Preference.create!(name: "two")
3447
3438
  end
3448
3439
 
3449
3440
  before do
@@ -3487,7 +3478,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3487
3478
  context "when the document is new" do
3488
3479
 
3489
3480
  let!(:person) do
3490
- Person.create(preference_names: "one, two")
3481
+ Person.create!(preference_names: "one, two")
3491
3482
  end
3492
3483
 
3493
3484
  let(:preference_one) do
@@ -3523,23 +3514,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3523
3514
  end
3524
3515
 
3525
3516
  let(:preference_one) do
3526
- Preference.create(name: "one")
3517
+ Preference.create!(name: "one")
3527
3518
  end
3528
3519
 
3529
3520
  let(:preference_two) do
3530
- Preference.create(name: "two")
3521
+ Preference.create!(name: "two")
3531
3522
  end
3532
3523
 
3533
3524
  before do
3534
3525
  person.preference_ids = [ preference_one.id, preference_two.id ]
3535
- person.save
3526
+ person.save!
3536
3527
  end
3537
3528
 
3538
3529
  context "and the order is changed" do
3539
3530
 
3540
3531
  before do
3541
3532
  person.preference_ids = [ preference_two.id, preference_one.id ]
3542
- person.save
3533
+ person.save!
3543
3534
  end
3544
3535
 
3545
3536
  let(:reloaded) do
@@ -3556,13 +3547,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3556
3547
  context "and the order is changed and an element is added" do
3557
3548
 
3558
3549
  let(:preference_three) do
3559
- Preference.create(name: "three")
3550
+ Preference.create!(name: "three")
3560
3551
  end
3561
3552
 
3562
3553
  before do
3563
3554
  person.preference_ids =
3564
3555
  [ preference_two.id, preference_one.id, preference_three.id ]
3565
- person.save
3556
+ person.save!
3566
3557
  end
3567
3558
 
3568
3559
  let(:reloaded) do
@@ -3579,16 +3570,16 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3579
3570
  context "and the order is changed and an element is removed" do
3580
3571
 
3581
3572
  let(:preference_three) do
3582
- Preference.create(name: "three")
3573
+ Preference.create!(name: "three")
3583
3574
  end
3584
3575
 
3585
3576
  before do
3586
3577
  person.preference_ids =
3587
3578
  [ preference_one.id, preference_two.id, preference_three.id ]
3588
- person.save
3579
+ person.save!
3589
3580
  person.preference_ids =
3590
3581
  [ preference_three.id, preference_two.id ]
3591
- person.save
3582
+ person.save!
3592
3583
  end
3593
3584
 
3594
3585
  let(:reloaded) do
@@ -3638,15 +3629,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3638
3629
  context "when the relation exists" do
3639
3630
 
3640
3631
  let!(:person) do
3641
- Person.create
3632
+ Person.create!
3642
3633
  end
3643
3634
 
3644
3635
  let!(:pref_one) do
3645
- person.preferences.create
3636
+ person.preferences.create!
3646
3637
  end
3647
3638
 
3648
3639
  let!(:pref_two) do
3649
- Preference.create
3640
+ Preference.create!
3650
3641
  end
3651
3642
 
3652
3643
  before do
@@ -3662,15 +3653,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3662
3653
  context "when using a different primary key" do
3663
3654
 
3664
3655
  let(:dog) do
3665
- Dog.create(name: 'Doggie')
3656
+ Dog.create!(name: 'Doggie')
3666
3657
  end
3667
3658
 
3668
3659
  let(:cat) do
3669
- Cat.create(name: 'Kitty')
3660
+ Cat.create!(name: 'Kitty')
3661
+ end
3662
+
3663
+ let(:another_cat) do
3664
+ Cat.create!(name: 'Kitten')
3670
3665
  end
3671
3666
 
3672
3667
  let(:fire_hydrant) do
3673
- FireHydrant.create(location: '221B Baker Street')
3668
+ FireHydrant.create!(location: '221B Baker Street')
3674
3669
  end
3675
3670
 
3676
3671
  context "when adding to a one-way many to many" do
@@ -3684,6 +3679,28 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3684
3679
  end
3685
3680
  end
3686
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
+
3687
3704
  context "when adding to a two-way many to many" do
3688
3705
 
3689
3706
  before do
@@ -3740,10 +3757,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
3740
3757
  end
3741
3758
 
3742
3759
  it "should assign relation from both sides" do
3743
- p1 = Project.create name: 'Foo'
3744
- p2 = Project.create name: 'Bar'
3745
- d1 = Distributor.create name: 'Rock'
3746
- 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'
3747
3764
 
3748
3765
  p1.distributors << d1
3749
3766
  expect(p1.d_ids).to match_array([d1.id])