mongoid 7.3.4 → 7.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (884) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +17 -17
  4. data/README.md +2 -2
  5. data/lib/config/locales/en.yml +21 -20
  6. data/lib/mongoid/association/accessors.rb +0 -27
  7. data/lib/mongoid/association/bindable.rb +0 -21
  8. data/lib/mongoid/association/builders.rb +0 -9
  9. data/lib/mongoid/association/constrainable.rb +0 -3
  10. data/lib/mongoid/association/depending.rb +0 -7
  11. data/lib/mongoid/association/eager_loadable.rb +0 -3
  12. data/lib/mongoid/association/embedded/batchable.rb +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 +5 -6
  91. data/lib/mongoid/config/options.rb +0 -11
  92. data/lib/mongoid/config/validators/client.rb +0 -17
  93. data/lib/mongoid/config/validators/option.rb +0 -3
  94. data/lib/mongoid/config/validators.rb +0 -1
  95. data/lib/mongoid/config.rb +37 -29
  96. data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
  97. data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
  98. data/lib/mongoid/contextual/aggregable/none.rb +65 -0
  99. data/lib/mongoid/contextual/aggregable.rb +17 -0
  100. data/lib/mongoid/contextual/atomic.rb +0 -25
  101. data/lib/mongoid/contextual/command.rb +0 -5
  102. data/lib/mongoid/contextual/geo_near.rb +1 -34
  103. data/lib/mongoid/contextual/map_reduce.rb +0 -31
  104. data/lib/mongoid/contextual/memory.rb +4 -59
  105. data/lib/mongoid/contextual/mongo.rb +132 -78
  106. data/lib/mongoid/contextual/none.rb +39 -28
  107. data/lib/mongoid/contextual/queryable.rb +0 -3
  108. data/lib/mongoid/contextual.rb +0 -5
  109. data/lib/mongoid/copyable.rb +0 -5
  110. data/lib/mongoid/criteria/findable.rb +0 -13
  111. data/lib/mongoid/criteria/includable.rb +0 -9
  112. data/lib/mongoid/criteria/inspectable.rb +0 -3
  113. data/lib/mongoid/criteria/marshalable.rb +0 -5
  114. data/lib/mongoid/criteria/modifiable.rb +0 -19
  115. data/lib/mongoid/criteria/options.rb +0 -3
  116. data/lib/mongoid/criteria/permission.rb +0 -1
  117. data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
  118. data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
  119. data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
  120. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
  121. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
  122. data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
  123. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
  124. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
  125. data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
  126. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
  127. data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
  128. data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
  129. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
  130. data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
  131. data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
  132. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
  133. data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
  134. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
  135. data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
  136. data/lib/mongoid/criteria/queryable/key.rb +1 -14
  137. data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
  138. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
  139. data/lib/mongoid/criteria/queryable/optional.rb +0 -45
  140. data/lib/mongoid/criteria/queryable/options.rb +0 -19
  141. data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
  142. data/lib/mongoid/criteria/queryable/selectable.rb +20 -67
  143. data/lib/mongoid/criteria/queryable/selector.rb +0 -17
  144. data/lib/mongoid/criteria/queryable/smash.rb +0 -11
  145. data/lib/mongoid/criteria/queryable/storable.rb +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 +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 +64 -53
  291. data/lib/mongoid/validatable/associated.rb +0 -3
  292. data/lib/mongoid/validatable/format.rb +0 -1
  293. data/lib/mongoid/validatable/length.rb +0 -1
  294. data/lib/mongoid/validatable/localizable.rb +0 -3
  295. data/lib/mongoid/validatable/macros.rb +0 -7
  296. data/lib/mongoid/validatable/presence.rb +1 -8
  297. data/lib/mongoid/validatable/queryable.rb +0 -3
  298. data/lib/mongoid/validatable/uniqueness.rb +15 -30
  299. data/lib/mongoid/validatable.rb +1 -22
  300. data/lib/mongoid/version.rb +1 -2
  301. data/lib/mongoid.rb +0 -15
  302. data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
  303. data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
  304. data/lib/rails/generators/mongoid_generator.rb +0 -1
  305. data/lib/rails/mongoid.rb +0 -3
  306. data/spec/integration/app_spec.rb +0 -1
  307. data/spec/integration/associations/belongs_to_spec.rb +0 -1
  308. data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
  309. data/spec/integration/associations/embedded_spec.rb +0 -1
  310. data/spec/integration/associations/embeds_many_spec.rb +0 -1
  311. data/spec/integration/associations/embeds_one_spec.rb +0 -1
  312. data/spec/integration/associations/foreign_key_spec.rb +0 -1
  313. data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
  314. data/spec/integration/associations/has_many_spec.rb +0 -1
  315. data/spec/integration/associations/has_one_spec.rb +0 -1
  316. data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
  317. data/spec/integration/associations/reverse_population_spec.rb +0 -1
  318. data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
  319. data/spec/integration/associations/scope_option_spec.rb +101 -0
  320. data/spec/integration/atomic/modifiers_spec.rb +0 -1
  321. data/spec/integration/bson_regexp_raw_spec.rb +0 -1
  322. data/spec/integration/callbacks_models.rb +12 -0
  323. data/spec/integration/callbacks_spec.rb +18 -6
  324. data/spec/integration/contextual/empty_spec.rb +0 -1
  325. data/spec/integration/criteria/alias_query_spec.rb +161 -0
  326. data/spec/integration/criteria/date_field_spec.rb +0 -1
  327. data/spec/integration/criteria/default_scope_spec.rb +51 -0
  328. data/spec/integration/criteria/logical_spec.rb +30 -0
  329. data/spec/integration/criteria/range_spec.rb +265 -0
  330. data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
  331. data/spec/integration/discriminator_key_spec.rb +0 -1
  332. data/spec/integration/discriminator_value_spec.rb +0 -1
  333. data/spec/integration/document_spec.rb +0 -1
  334. data/spec/integration/i18n_fallbacks_spec.rb +0 -1
  335. data/spec/integration/matcher_examples_spec.rb +0 -1
  336. data/spec/integration/matcher_operator_spec.rb +27 -3
  337. data/spec/integration/matcher_spec.rb +95 -1
  338. data/spec/integration/server_query_spec.rb +0 -1
  339. data/spec/integration/shardable_spec.rb +0 -1
  340. data/spec/integration/stringified_symbol_field_spec.rb +14 -1
  341. data/spec/lite_spec_helper.rb +8 -2
  342. data/spec/mongoid/association/accessors_spec.rb +44 -15
  343. data/spec/mongoid/association/auto_save_spec.rb +72 -34
  344. data/spec/mongoid/association/builders_spec.rb +1 -2
  345. data/spec/mongoid/association/constrainable_spec.rb +0 -1
  346. data/spec/mongoid/association/counter_cache_spec.rb +32 -33
  347. data/spec/mongoid/association/depending_spec.rb +12 -13
  348. data/spec/mongoid/association/eager_spec.rb +4 -5
  349. data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
  350. data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
  351. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
  352. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
  353. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
  354. data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
  355. data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
  356. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
  357. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
  358. data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
  359. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
  360. data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
  361. data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
  362. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
  363. data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
  364. data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
  365. data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
  366. data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +0 -1
  367. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
  368. data/spec/mongoid/association/macros_spec.rb +9 -10
  369. data/spec/mongoid/association/nested/many_spec.rb +0 -1
  370. data/spec/mongoid/association/nested/one_spec.rb +0 -1
  371. data/spec/mongoid/association/options_spec.rb +0 -1
  372. data/spec/mongoid/association/polymorphic_spec.rb +0 -1
  373. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
  374. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
  375. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
  376. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
  377. data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -1
  378. data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
  379. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
  380. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
  381. data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
  382. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
  383. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
  384. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
  385. data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
  386. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
  387. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
  388. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
  389. data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
  390. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +59 -33
  391. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
  392. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +221 -158
  393. data/spec/mongoid/association/referenced/has_many_models.rb +18 -1
  394. data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
  395. data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
  396. data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
  397. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
  398. data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
  399. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
  400. data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
  401. data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
  402. data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
  403. data/spec/mongoid/association/reflections_spec.rb +0 -1
  404. data/spec/mongoid/association/syncable_spec.rb +31 -32
  405. data/spec/mongoid/association_spec.rb +0 -1
  406. data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
  407. data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
  408. data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
  409. data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
  410. data/spec/mongoid/atomic/paths_spec.rb +0 -1
  411. data/spec/mongoid/atomic_spec.rb +6 -7
  412. data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
  413. data/spec/mongoid/attributes/nested_spec.rb +66 -67
  414. data/spec/mongoid/attributes/projector_spec.rb +5 -2
  415. data/spec/mongoid/attributes/readonly_spec.rb +22 -23
  416. data/spec/mongoid/attributes_spec.rb +32 -33
  417. data/spec/mongoid/cacheable_spec.rb +1 -2
  418. data/spec/mongoid/changeable_spec.rb +35 -36
  419. data/spec/mongoid/clients/factory_spec.rb +0 -1
  420. data/spec/mongoid/clients/options_spec.rb +4 -5
  421. data/spec/mongoid/clients/sessions_spec.rb +22 -23
  422. data/spec/mongoid/clients/transactions_spec.rb +49 -27
  423. data/spec/mongoid/clients_spec.rb +6 -7
  424. data/spec/mongoid/composable_spec.rb +0 -1
  425. data/spec/mongoid/config/environment_spec.rb +0 -1
  426. data/spec/mongoid/config/options_spec.rb +0 -1
  427. data/spec/mongoid/config_spec.rb +105 -1
  428. data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
  429. data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
  430. data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
  431. data/spec/mongoid/contextual/atomic_spec.rb +46 -47
  432. data/spec/mongoid/contextual/geo_near_spec.rb +17 -18
  433. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
  434. data/spec/mongoid/contextual/memory_spec.rb +23 -24
  435. data/spec/mongoid/contextual/mongo_spec.rb +339 -77
  436. data/spec/mongoid/contextual/none_spec.rb +7 -82
  437. data/spec/mongoid/copyable_spec.rb +12 -13
  438. data/spec/mongoid/copyable_spec_models.rb +0 -1
  439. data/spec/mongoid/criteria/findable_spec.rb +23 -24
  440. data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
  441. data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
  442. data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
  443. data/spec/mongoid/criteria/options_spec.rb +0 -1
  444. data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
  445. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
  446. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
  447. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
  448. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
  449. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
  450. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
  451. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
  452. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
  453. data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
  454. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
  455. data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
  456. data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
  457. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
  458. data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
  459. data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
  460. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
  461. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
  462. data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
  463. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
  464. data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
  465. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
  466. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
  467. data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
  468. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
  469. data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
  470. data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
  471. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
  472. data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
  473. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
  474. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
  475. data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
  476. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
  477. data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
  478. data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
  479. data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
  480. data/spec/mongoid/criteria/scopable_spec.rb +127 -1
  481. data/spec/mongoid/criteria_projection_spec.rb +3 -4
  482. data/spec/mongoid/criteria_spec.rb +546 -186
  483. data/spec/mongoid/document_fields_spec.rb +0 -1
  484. data/spec/mongoid/document_persistence_context_spec.rb +0 -1
  485. data/spec/mongoid/document_query_spec.rb +0 -1
  486. data/spec/mongoid/document_spec.rb +11 -33
  487. data/spec/mongoid/equality_spec.rb +142 -41
  488. data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
  489. data/spec/mongoid/errors/callback_spec.rb +0 -1
  490. data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
  491. data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
  492. data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
  493. data/spec/mongoid/errors/eager_load_spec.rb +0 -1
  494. data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
  495. data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -1
  496. data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
  497. data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
  498. data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
  499. data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
  500. data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
  501. data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
  502. data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
  503. data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
  504. data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
  505. data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
  506. data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
  507. data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
  508. data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
  509. data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
  510. data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
  511. data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
  512. data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
  513. data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
  514. data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
  515. data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
  516. data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
  517. data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
  518. data/spec/mongoid/errors/no_environment_spec.rb +0 -1
  519. data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
  520. data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
  521. data/spec/mongoid/errors/no_parent_spec.rb +0 -1
  522. data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
  523. data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
  524. data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
  525. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
  526. data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
  527. data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
  528. data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
  529. data/spec/mongoid/errors/validations_spec.rb +0 -1
  530. data/spec/mongoid/extensions/array_spec.rb +0 -1
  531. data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
  532. data/spec/mongoid/extensions/binary_spec.rb +0 -1
  533. data/spec/mongoid/extensions/boolean_spec.rb +0 -1
  534. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
  535. data/spec/mongoid/extensions/date_spec.rb +0 -1
  536. data/spec/mongoid/extensions/date_time_spec.rb +0 -1
  537. data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
  538. data/spec/mongoid/extensions/false_class_spec.rb +0 -1
  539. data/spec/mongoid/extensions/float_spec.rb +0 -1
  540. data/spec/mongoid/extensions/hash_spec.rb +0 -1
  541. data/spec/mongoid/extensions/integer_spec.rb +0 -1
  542. data/spec/mongoid/extensions/module_spec.rb +0 -1
  543. data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
  544. data/spec/mongoid/extensions/object_id_spec.rb +0 -1
  545. data/spec/mongoid/extensions/object_spec.rb +0 -1
  546. data/spec/mongoid/extensions/range_spec.rb +0 -1
  547. data/spec/mongoid/extensions/regexp_spec.rb +0 -1
  548. data/spec/mongoid/extensions/set_spec.rb +0 -1
  549. data/spec/mongoid/extensions/string_spec.rb +2 -3
  550. data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
  551. data/spec/mongoid/extensions/symbol_spec.rb +0 -1
  552. data/spec/mongoid/extensions/time_spec.rb +0 -1
  553. data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
  554. data/spec/mongoid/extensions/true_class_spec.rb +0 -1
  555. data/spec/mongoid/extensions_spec.rb +14 -3
  556. data/spec/mongoid/factory_spec.rb +1 -1
  557. data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
  558. data/spec/mongoid/fields/localized_spec.rb +0 -1
  559. data/spec/mongoid/fields/standard_spec.rb +0 -1
  560. data/spec/mongoid/fields_spec.rb +326 -31
  561. data/spec/mongoid/findable_spec.rb +21 -22
  562. data/spec/mongoid/indexable/specification_spec.rb +0 -1
  563. data/spec/mongoid/indexable_spec.rb +0 -1
  564. data/spec/mongoid/inspectable_spec.rb +0 -1
  565. data/spec/mongoid/interceptable_spec.rb +102 -95
  566. data/spec/mongoid/loggable_spec.rb +0 -1
  567. data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
  568. data/spec/mongoid/persistable/creatable_spec.rb +2 -3
  569. data/spec/mongoid/persistable/deletable_spec.rb +18 -19
  570. data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
  571. data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
  572. data/spec/mongoid/persistable/logical_spec.rb +4 -5
  573. data/spec/mongoid/persistable/poppable_spec.rb +4 -5
  574. data/spec/mongoid/persistable/pullable_spec.rb +8 -9
  575. data/spec/mongoid/persistable/pushable_spec.rb +8 -9
  576. data/spec/mongoid/persistable/renamable_spec.rb +3 -4
  577. data/spec/mongoid/persistable/savable_spec.rb +15 -11
  578. data/spec/mongoid/persistable/settable_spec.rb +9 -10
  579. data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
  580. data/spec/mongoid/persistable/updatable_spec.rb +41 -24
  581. data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
  582. data/spec/mongoid/persistable_spec.rb +1 -2
  583. data/spec/mongoid/persistence_context_spec.rb +0 -1
  584. data/spec/mongoid/positional_spec.rb +0 -1
  585. data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
  586. data/spec/mongoid/query_cache_spec.rb +32 -10
  587. data/spec/mongoid/relations/proxy_spec.rb +6 -7
  588. data/spec/mongoid/reloadable_spec.rb +209 -23
  589. data/spec/mongoid/scopable_spec.rb +65 -22
  590. data/spec/mongoid/selectable_spec.rb +6 -7
  591. data/spec/mongoid/serializable_spec.rb +9 -10
  592. data/spec/mongoid/shardable_spec.rb +2 -3
  593. data/spec/mongoid/stateful_spec.rb +1 -2
  594. data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
  595. data/spec/mongoid/tasks/database_spec.rb +0 -1
  596. data/spec/mongoid/threaded_spec.rb +2 -3
  597. data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
  598. data/spec/mongoid/timestamps/created_spec.rb +1 -2
  599. data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
  600. data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
  601. data/spec/mongoid/timestamps/updated_spec.rb +3 -4
  602. data/spec/mongoid/timestamps_spec.rb +6 -7
  603. data/spec/mongoid/touchable_spec.rb +15 -20
  604. data/spec/mongoid/touchable_spec_models.rb +0 -1
  605. data/spec/mongoid/traversable_spec.rb +65 -2
  606. data/spec/mongoid/validatable/associated_spec.rb +0 -1
  607. data/spec/mongoid/validatable/format_spec.rb +0 -1
  608. data/spec/mongoid/validatable/length_spec.rb +0 -1
  609. data/spec/mongoid/validatable/numericality_spec.rb +0 -1
  610. data/spec/mongoid/validatable/presence_spec.rb +26 -23
  611. data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
  612. data/spec/mongoid/validatable_spec.rb +2 -3
  613. data/spec/mongoid_spec.rb +0 -1
  614. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
  615. data/spec/rails/mongoid_spec.rb +0 -1
  616. data/spec/shared/lib/mrss/cluster_config.rb +6 -1
  617. data/spec/shared/lib/mrss/constraints.rb +2 -1
  618. data/spec/shared/lib/mrss/docker_runner.rb +1 -1
  619. data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
  620. data/spec/shared/lib/mrss/session_registry.rb +69 -0
  621. data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
  622. data/spec/shared/share/Dockerfile.erb +22 -6
  623. data/spec/shared/shlib/distro.sh +2 -1
  624. data/spec/shared/shlib/server.sh +15 -3
  625. data/spec/shared/shlib/set_env.sh +6 -5
  626. data/spec/spec_helper.rb +12 -22
  627. data/spec/support/authorization.rb +0 -1
  628. data/spec/support/constraints.rb +0 -1
  629. data/spec/support/expectations.rb +0 -1
  630. data/spec/support/macros.rb +22 -1
  631. data/spec/support/models/account.rb +1 -2
  632. data/spec/support/models/acolyte.rb +0 -1
  633. data/spec/support/models/actor.rb +0 -1
  634. data/spec/support/models/actress.rb +0 -1
  635. data/spec/support/models/address.rb +0 -1
  636. data/spec/support/models/address_component.rb +0 -1
  637. data/spec/support/models/address_number.rb +0 -1
  638. data/spec/support/models/agency.rb +0 -1
  639. data/spec/support/models/agent.rb +0 -1
  640. data/spec/support/models/album.rb +0 -1
  641. data/spec/support/models/alert.rb +0 -1
  642. data/spec/support/models/animal.rb +0 -1
  643. data/spec/support/models/answer.rb +0 -1
  644. data/spec/support/models/appointment.rb +0 -1
  645. data/spec/support/models/armrest.rb +0 -1
  646. data/spec/support/models/array_field.rb +0 -1
  647. data/spec/support/models/article.rb +0 -1
  648. data/spec/support/models/artist.rb +2 -1
  649. data/spec/support/models/artwork.rb +0 -1
  650. data/spec/support/models/audible_sound.rb +3 -0
  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 +0 -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/shared/time.rb +0 -1
  879. data/spec/support/spec_config.rb +3 -1
  880. data.tar.gz.sig +0 -0
  881. metadata +604 -587
  882. metadata.gz.sig +0 -0
  883. data/lib/support/ruby_version.rb +0 -29
  884. 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 "rake"
5
4
  require "spec_helper"
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -19,7 +18,7 @@ describe Mongoid::Threaded do
19
18
  described_class.stack("load").clear
20
19
  end
21
20
 
22
- it "adds a boolen to the load stack" do
21
+ it "adds a boolean to the load stack" do
23
22
  expect(described_class.stack("load")).to eq([ true ])
24
23
  end
25
24
  end
@@ -104,7 +103,7 @@ describe Mongoid::Threaded do
104
103
  described_class.stack("load").clear
105
104
  end
106
105
 
107
- it "removes a boolen from the stack" do
106
+ it "removes a boolean from the stack" do
108
107
  expect(described_class.stack("load")).to be_empty
109
108
  end
110
109
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -40,7 +39,7 @@ describe Mongoid::Timestamps::Created::Short do
40
39
  context "when the document is created" do
41
40
 
42
41
  let(:quiz) do
43
- ShortQuiz.create
42
+ ShortQuiz.create!
44
43
  end
45
44
 
46
45
  it "runs the created callbacks" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -36,7 +35,7 @@ describe Mongoid::Timestamps::Created do
36
35
  context "when the document is created" do
37
36
 
38
37
  let(:quiz) do
39
- Quiz.create
38
+ Quiz.create!
40
39
  end
41
40
 
42
41
  it "runs the created callbacks" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -89,7 +88,7 @@ describe Mongoid::Timestamps::Timeless do
89
88
  end
90
89
 
91
90
  before do
92
- document.timeless.save
91
+ document.timeless.save!
93
92
  end
94
93
 
95
94
  it "does not set the created timestamp" do
@@ -119,7 +118,7 @@ describe Mongoid::Timestamps::Timeless do
119
118
  context "when used on the class" do
120
119
 
121
120
  let!(:document) do
122
- Dokument.timeless.create
121
+ Dokument.timeless.create!
123
122
  end
124
123
 
125
124
  it "does not set the created timestamp" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -50,7 +49,7 @@ describe Mongoid::Timestamps::Updated::Short do
50
49
  end
51
50
 
52
51
  let(:doc) do
53
- ShortAgent.create(updated_at: time)
52
+ ShortAgent.create!(updated_at: time)
54
53
  end
55
54
 
56
55
  it "does not override it with the default" do
@@ -75,14 +74,14 @@ describe Mongoid::Timestamps::Updated::Short do
75
74
 
76
75
  it "does not run the update callbacks" do
77
76
  expect(agent).to receive(:updated_at=).never
78
- agent.save
77
+ agent.save!
79
78
  end
80
79
  end
81
80
 
82
81
  context "when the document is created" do
83
82
 
84
83
  let(:agent) do
85
- ShortAgent.create
84
+ ShortAgent.create!
86
85
  end
87
86
 
88
87
  it "runs the update callbacks" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -42,7 +41,7 @@ describe Mongoid::Timestamps::Updated do
42
41
  end
43
42
 
44
43
  let(:doc) do
45
- Dokument.create(updated_at: time)
44
+ Dokument.create!(updated_at: time)
46
45
  end
47
46
 
48
47
  it "does not override it with the default" do
@@ -67,14 +66,14 @@ describe Mongoid::Timestamps::Updated do
67
66
 
68
67
  it "does not run the update callbacks" do
69
68
  expect(agent).to receive(:updated_at=).never
70
- agent.save
69
+ agent.save!
71
70
  end
72
71
  end
73
72
 
74
73
  context "when the document is created" do
75
74
 
76
75
  let(:agent) do
77
- Agent.create
76
+ Agent.create!
78
77
  end
79
78
 
80
79
  it "runs the update callbacks" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -53,7 +52,7 @@ describe Mongoid::Timestamps do
53
52
 
54
53
  it "does not run the update callbacks" do
55
54
  expect(document).to receive(:updated_at=).never
56
- document.save
55
+ document.save!
57
56
  end
58
57
  end
59
58
 
@@ -70,14 +69,14 @@ describe Mongoid::Timestamps do
70
69
 
71
70
  it "does not set updated at" do
72
71
  expect(document).to receive(:updated_at=).never
73
- document.save
72
+ document.save!
74
73
  end
75
74
  end
76
75
 
77
76
  context "when the document is created" do
78
77
 
79
78
  let!(:document) do
80
- Dokument.create
79
+ Dokument.create!
81
80
  end
82
81
 
83
82
  it "runs the update callbacks" do
@@ -88,11 +87,11 @@ describe Mongoid::Timestamps do
88
87
  context "when only embedded documents have changed" do
89
88
 
90
89
  let!(:document) do
91
- Dokument.create(updated_at: 2.days.ago)
90
+ Dokument.create!(updated_at: 2.days.ago)
92
91
  end
93
92
 
94
93
  let!(:address) do
95
- document.addresses.create(street: "Karl Marx Strasse")
94
+ document.addresses.create!(street: "Karl Marx Strasse")
96
95
  end
97
96
 
98
97
  let!(:updated_at) do
@@ -101,7 +100,7 @@ describe Mongoid::Timestamps do
101
100
 
102
101
  before do
103
102
  address.number = 1
104
- document.save
103
+ document.save!
105
104
  end
106
105
 
107
106
  it "updates the root document updated at" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
  require_relative './touchable_spec_models'
@@ -171,7 +170,7 @@ describe Mongoid::Touchable do
171
170
  context "when no updated at is defined" do
172
171
 
173
172
  let(:person) do
174
- Person.create
173
+ Person.create!
175
174
  end
176
175
 
177
176
  context "when no attribute is provided" do
@@ -231,7 +230,7 @@ describe Mongoid::Touchable do
231
230
  context "when an updated at is defined" do
232
231
 
233
232
  let!(:agent) do
234
- Agent.create(updated_at: 2.days.ago)
233
+ Agent.create!(updated_at: 2.days.ago)
235
234
  end
236
235
 
237
236
  context "when no attribute is provided" do
@@ -331,11 +330,7 @@ describe Mongoid::Touchable do
331
330
  end
332
331
 
333
332
  let(:frozen_error_cls) do
334
- if RUBY_VERSION >= '2.5'
335
- FrozenError
336
- else
337
- RuntimeError
338
- end
333
+ FrozenError
339
334
  end
340
335
 
341
336
  context "when no attribute is provided" do
@@ -397,11 +392,11 @@ describe Mongoid::Touchable do
397
392
  end
398
393
 
399
394
  let(:page) do
400
- WikiPage.create(title: "test")
395
+ WikiPage.create!(title: "test")
401
396
  end
402
397
 
403
398
  let!(:edit) do
404
- page.edits.create
399
+ page.edits.create!
405
400
  end
406
401
 
407
402
  before do
@@ -426,7 +421,7 @@ describe Mongoid::Touchable do
426
421
 
427
422
  before do
428
423
  book.pages.new
429
- book.save
424
+ book.save!
430
425
  book.unset(:updated_at)
431
426
  book.pages.first.touch
432
427
  end
@@ -444,7 +439,7 @@ describe Mongoid::Touchable do
444
439
 
445
440
  before do
446
441
  2.times { book.pages.new }
447
- book.save
442
+ book.save!
448
443
  book.unset(:updated_at)
449
444
  book.pages.first.content = "foo"
450
445
  book.pages.second.content = "bar"
@@ -459,7 +454,7 @@ describe Mongoid::Touchable do
459
454
  context "when the relation is nil" do
460
455
 
461
456
  let!(:agent) do
462
- Agent.create
457
+ Agent.create!
463
458
  end
464
459
 
465
460
  context "when the relation autobuilds" do
@@ -477,7 +472,7 @@ describe Mongoid::Touchable do
477
472
  context "when the relation is not nil" do
478
473
 
479
474
  let!(:agent) do
480
- Agent.create
475
+ Agent.create!
481
476
  end
482
477
 
483
478
  let!(:agency) do
@@ -502,7 +497,7 @@ describe Mongoid::Touchable do
502
497
  context "when creating the child" do
503
498
 
504
499
  let!(:agency) do
505
- Agency.create
500
+ Agency.create!
506
501
  end
507
502
 
508
503
  let!(:updated) do
@@ -510,7 +505,7 @@ describe Mongoid::Touchable do
510
505
  end
511
506
 
512
507
  let!(:agent) do
513
- agency.agents.create
508
+ agency.agents.create!
514
509
  end
515
510
 
516
511
  it "updates the parent's updated at" do
@@ -530,7 +525,7 @@ describe Mongoid::Touchable do
530
525
 
531
526
  it "updates the parent's updated at" do
532
527
  expect {
533
- agent.update_attributes(number: '2')
528
+ agent.update_attributes!(number: '2')
534
529
  }.to change { agency.updated_at }
535
530
  end
536
531
  end
@@ -538,11 +533,11 @@ describe Mongoid::Touchable do
538
533
  context "when destroying the child" do
539
534
 
540
535
  let!(:agency) do
541
- Agency.create
536
+ Agency.create!
542
537
  end
543
538
 
544
539
  let!(:agent) do
545
- agency.agents.create
540
+ agency.agents.create!
546
541
  end
547
542
 
548
543
  let!(:updated) do
@@ -562,7 +557,7 @@ describe Mongoid::Touchable do
562
557
  context "when other document attributes have been changed" do
563
558
 
564
559
  let(:band) do
565
- Band.create(name: "Placebo")
560
+ Band.create!(name: "Placebo")
566
561
  end
567
562
 
568
563
  context "when an attribute is provided" do
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  module TouchableSpec
5
4
  module Embedded
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -63,8 +62,72 @@ describe Mongoid::Traversable do
63
62
  expect(person._children).to include(address)
64
63
  end
65
64
 
65
+ it "does not include embedded documents multiple levels deep" do
66
+ expect(person._children).not_to include(location)
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "#_descendants" do
72
+
73
+ let(:person) do
74
+ Person.new(title: "King")
75
+ end
76
+
77
+ context "with one level of embedding" do
78
+
79
+ let(:name) do
80
+ Name.new(first_name: "Titus")
81
+ end
82
+
83
+ let(:address) do
84
+ Address.new(street: "Queen St")
85
+ end
86
+
87
+ before do
88
+ person.name = name
89
+ person.addresses << address
90
+ end
91
+
92
+ it "includes embeds_one documents" do
93
+ expect(person._descendants).to include(name)
94
+ end
95
+
96
+ it "includes embeds_many documents" do
97
+ expect(person._descendants).to include(address)
98
+ end
99
+ end
100
+
101
+ context "with multiple levels of embedding" do
102
+
103
+ let(:name) do
104
+ Name.new(first_name: "Titus")
105
+ end
106
+
107
+ let(:address) do
108
+ Address.new(street: "Queen St")
109
+ end
110
+
111
+ let(:location) do
112
+ Location.new(name: "Work")
113
+ end
114
+
115
+ before do
116
+ person.name = name
117
+ address.locations << location
118
+ person.addresses << address
119
+ end
120
+
121
+ it "includes embeds_one documents" do
122
+ expect(person._descendants).to include(name)
123
+ end
124
+
125
+ it "includes embeds_many documents" do
126
+ expect(person._descendants).to include(address)
127
+ end
128
+
66
129
  it "includes embedded documents multiple levels deep" do
67
- expect(person._children).to include(location)
130
+ expect(person._descendants).to include(location)
68
131
  end
69
132
  end
70
133
  end
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
5
4
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
- # encoding: utf-8
3
2
 
4
3
  require "spec_helper"
4
+ require_relative '../association/referenced/has_one_models'
5
5
 
6
6
  describe Mongoid::Validatable::PresenceValidator do
7
7
 
@@ -239,7 +239,7 @@ describe Mongoid::Validatable::PresenceValidator do
239
239
  context "when saving the base" do
240
240
 
241
241
  before do
242
- person.save
242
+ person.save!
243
243
  end
244
244
 
245
245
  it "saves the relation" do
@@ -250,41 +250,44 @@ describe Mongoid::Validatable::PresenceValidator do
250
250
  end
251
251
  end
252
252
 
253
- context "when the relation is a has one and autosave is false" do
253
+ context "when the association is a has one and autosave is false" do
254
254
 
255
255
  before do
256
- Person.relations["game"].options[:autosave] = false
257
- Person.validates :game, presence: true
256
+ HomCollege.validates :accreditation, presence: true
258
257
  end
259
258
 
260
259
  after do
261
- Person.reset_callbacks(:validate)
260
+ HomCollege.reset_callbacks(:validate)
262
261
  end
263
262
 
264
- it "does not change autosave on the relation" do
265
- expect(Person.relations["game"].autosave?).to be false
263
+ it "does not change autosave on the association" do
264
+ expect(HomCollege.relations["accreditation"].autosave?).to be false
266
265
  end
267
266
 
268
- context "when the relation is new" do
267
+ context "when the association target is new" do
269
268
 
270
- let(:person) do
271
- Person.new
269
+ let(:parent) do
270
+ HomCollege.new
272
271
  end
273
272
 
274
- context "when the base is valid" do
273
+ context "when the parent is valid" do
275
274
 
276
- let!(:game) do
277
- person.build_game
275
+ let!(:child) do
276
+ parent.build_accreditation
278
277
  end
279
278
 
280
- context "when saving the base" do
279
+ context "when saving the parent" do
281
280
 
282
281
  before do
283
- person.save
282
+ parent.associations[:accreditation].options[:autosave].should be_falsy
283
+
284
+ parent.save!
284
285
  end
285
286
 
286
- it "does not save the relation" do
287
- expect { game.reload }.to raise_error(Mongoid::Errors::DocumentNotFound)
287
+ it "does not save the association target" do
288
+ child.persisted?.should be false
289
+
290
+ expect { child.reload }.to raise_error(Mongoid::Errors::DocumentNotFound)
288
291
  end
289
292
  end
290
293
  end
@@ -294,17 +297,17 @@ describe Mongoid::Validatable::PresenceValidator do
294
297
  context "when the relation is a belongs to" do
295
298
 
296
299
  let(:product) do
297
- Product.create(name: "testing")
300
+ Product.create!(name: "testing")
298
301
  end
299
302
 
300
303
  context "when the relation is present" do
301
304
 
302
305
  let(:purchase) do
303
- Purchase.create
306
+ Purchase.create!
304
307
  end
305
308
 
306
309
  let(:line_item) do
307
- purchase.line_items.create(product: product)
310
+ purchase.line_items.create!(product: product)
308
311
  end
309
312
 
310
313
  context "when the foreign key is nil" do
@@ -334,11 +337,11 @@ describe Mongoid::Validatable::PresenceValidator do
334
337
  context "when the relation has documents" do
335
338
 
336
339
  let!(:house) do
337
- House.create
340
+ House.create!
338
341
  end
339
342
 
340
343
  let!(:person) do
341
- Person.create(houses: [ house ])
344
+ Person.create!(houses: [ house ])
342
345
  end
343
346
 
344
347
  context "when the relation is loaded from the db" do