mongoid 7.3.5 → 7.4.3

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