mongoid 7.3.4 → 7.4.1

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