mongoid 6.4.8 → 7.0.0.beta

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 (315) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +0 -26
  5. data/lib/config/locales/en.yml +17 -21
  6. data/lib/mongoid.rb +2 -2
  7. data/lib/mongoid/association.rb +150 -0
  8. data/lib/mongoid/association/accessors.rb +339 -0
  9. data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
  10. data/lib/mongoid/association/builders.rb +92 -0
  11. data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
  12. data/lib/mongoid/association/depending.rb +116 -0
  13. data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
  14. data/lib/mongoid/association/embedded.rb +4 -0
  15. data/lib/mongoid/{relations → association}/embedded/batchable.rb +27 -53
  16. data/lib/mongoid/association/embedded/cyclic.rb +109 -0
  17. data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
  18. data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
  19. data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
  20. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
  21. data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
  22. data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
  23. data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
  24. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +529 -0
  25. data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
  26. data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
  27. data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
  28. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
  29. data/lib/mongoid/association/macros.rb +204 -0
  30. data/lib/mongoid/{relations → association}/many.rb +18 -52
  31. data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
  32. data/lib/mongoid/association/nested.rb +15 -0
  33. data/lib/mongoid/association/nested/many.rb +200 -0
  34. data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
  35. data/lib/mongoid/association/nested/one.rb +127 -0
  36. data/lib/mongoid/{relations → association}/one.rb +6 -6
  37. data/lib/mongoid/association/options.rb +152 -0
  38. data/lib/mongoid/{relations → association}/proxy.rb +31 -58
  39. data/lib/mongoid/association/referenced.rb +7 -0
  40. data/lib/mongoid/association/referenced/auto_save.rb +79 -0
  41. data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
  42. data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
  43. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
  44. data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
  45. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
  46. data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
  47. data/lib/mongoid/association/referenced/eager.rb +159 -0
  48. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
  49. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
  50. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
  51. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
  52. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +310 -0
  53. data/lib/mongoid/association/referenced/has_many.rb +273 -0
  54. data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
  55. data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
  56. data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
  57. data/lib/mongoid/association/referenced/has_many/enumerable.rb +479 -0
  58. data/lib/mongoid/association/referenced/has_many/proxy.rb +577 -0
  59. data/lib/mongoid/association/referenced/has_one.rb +204 -0
  60. data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
  61. data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
  62. data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
  63. data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
  64. data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
  65. data/lib/mongoid/association/referenced/syncable.rb +170 -0
  66. data/lib/mongoid/{relations → association}/reflections.rb +21 -17
  67. data/lib/mongoid/association/relatable.rb +415 -0
  68. data/lib/mongoid/association/touchable.rb +97 -0
  69. data/lib/mongoid/atomic.rb +6 -6
  70. data/lib/mongoid/atomic/modifiers.rb +8 -12
  71. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  72. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  73. data/lib/mongoid/attributes.rb +2 -1
  74. data/lib/mongoid/attributes/nested.rb +10 -10
  75. data/lib/mongoid/attributes/processing.rb +2 -2
  76. data/lib/mongoid/attributes/readonly.rb +2 -4
  77. data/lib/mongoid/clients.rb +0 -2
  78. data/lib/mongoid/clients/options.rb +1 -1
  79. data/lib/mongoid/clients/storage_options.rb +0 -1
  80. data/lib/mongoid/composable.rb +3 -4
  81. data/lib/mongoid/config.rb +1 -0
  82. data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
  83. data/lib/mongoid/contextual/atomic.rb +3 -6
  84. data/lib/mongoid/contextual/map_reduce.rb +3 -7
  85. data/lib/mongoid/contextual/memory.rb +5 -10
  86. data/lib/mongoid/contextual/mongo.rb +10 -27
  87. data/lib/mongoid/copyable.rb +6 -6
  88. data/lib/mongoid/criteria.rb +1 -2
  89. data/lib/mongoid/criteria/includable.rb +14 -14
  90. data/lib/mongoid/criteria/modifiable.rb +8 -14
  91. data/lib/mongoid/criteria/queryable/mergeable.rb +1 -3
  92. data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
  93. data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
  94. data/lib/mongoid/document.rb +6 -6
  95. data/lib/mongoid/errors.rb +3 -1
  96. data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
  97. data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
  98. data/lib/mongoid/errors/unknown_model.rb +25 -0
  99. data/lib/mongoid/extensions/array.rb +5 -5
  100. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  101. data/lib/mongoid/extensions/object.rb +4 -4
  102. data/lib/mongoid/extensions/range.rb +1 -0
  103. data/lib/mongoid/extensions/regexp.rb +0 -1
  104. data/lib/mongoid/extensions/string.rb +1 -3
  105. data/lib/mongoid/factory.rb +4 -3
  106. data/lib/mongoid/fields.rb +1 -1
  107. data/lib/mongoid/fields/foreign_key.rb +5 -5
  108. data/lib/mongoid/fields/standard.rb +2 -14
  109. data/lib/mongoid/fields/validators/macro.rb +1 -1
  110. data/lib/mongoid/indexable.rb +8 -5
  111. data/lib/mongoid/interceptable.rb +5 -5
  112. data/lib/mongoid/matchable.rb +0 -3
  113. data/lib/mongoid/persistable.rb +4 -5
  114. data/lib/mongoid/persistable/creatable.rb +2 -4
  115. data/lib/mongoid/persistable/deletable.rb +9 -10
  116. data/lib/mongoid/persistable/destroyable.rb +5 -1
  117. data/lib/mongoid/persistable/incrementable.rb +1 -1
  118. data/lib/mongoid/persistable/logical.rb +1 -1
  119. data/lib/mongoid/persistable/settable.rb +5 -5
  120. data/lib/mongoid/persistable/updatable.rb +2 -2
  121. data/lib/mongoid/persistable/upsertable.rb +1 -2
  122. data/lib/mongoid/persistence_context.rb +4 -9
  123. data/lib/mongoid/query_cache.rb +18 -65
  124. data/lib/mongoid/railtie.rb +0 -17
  125. data/lib/mongoid/reloadable.rb +1 -1
  126. data/lib/mongoid/scopable.rb +3 -3
  127. data/lib/mongoid/serializable.rb +3 -3
  128. data/lib/mongoid/tasks/database.rb +2 -3
  129. data/lib/mongoid/threaded.rb +0 -74
  130. data/lib/mongoid/traversable.rb +2 -2
  131. data/lib/mongoid/validatable.rb +8 -8
  132. data/lib/mongoid/validatable/presence.rb +2 -2
  133. data/lib/mongoid/validatable/uniqueness.rb +4 -4
  134. data/lib/mongoid/version.rb +1 -1
  135. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -4
  136. data/spec/app/models/animal.rb +2 -1
  137. data/spec/app/models/band.rb +0 -1
  138. data/spec/app/models/bomb.rb +1 -1
  139. data/spec/app/models/message.rb +1 -1
  140. data/spec/app/models/person.rb +5 -2
  141. data/spec/app/models/vertex.rb +6 -0
  142. data/spec/app/models/wiki_page.rb +1 -1
  143. data/spec/config/mongoid.yml +1 -0
  144. data/spec/mongoid/{relations → association}/accessors_spec.rb +1 -1
  145. data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
  146. data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
  147. data/spec/mongoid/association/constrainable_spec.rb +115 -0
  148. data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
  149. data/spec/mongoid/association/depending_spec.rb +613 -0
  150. data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
  151. data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
  152. data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
  153. data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
  154. data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
  155. data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
  156. data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
  157. data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
  158. data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
  159. data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +140 -428
  160. data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
  161. data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
  162. data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
  163. data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
  164. data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
  165. data/spec/mongoid/{relations → association}/macros_spec.rb +148 -93
  166. data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
  167. data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
  168. data/spec/mongoid/association/options_spec.rb +1321 -0
  169. data/spec/mongoid/{relations → association}/polymorphic_spec.rb +7 -34
  170. data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
  171. data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
  172. data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +9 -9
  173. data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
  174. data/spec/mongoid/association/referenced/belongs_to_spec.rb +1963 -0
  175. data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
  176. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
  177. data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +5 -5
  178. data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
  179. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
  180. data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
  181. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
  182. data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +11 -11
  183. data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +1 -109
  184. data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
  185. data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
  186. data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
  187. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
  188. data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
  189. data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
  190. data/spec/mongoid/association/referenced/has_one_spec.rb +1244 -0
  191. data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
  192. data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
  193. data/spec/mongoid/{relations → association}/touchable_spec.rb +19 -1
  194. data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
  195. data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
  196. data/spec/mongoid/atomic_spec.rb +17 -17
  197. data/spec/mongoid/attributes/nested_spec.rb +14 -12
  198. data/spec/mongoid/attributes/readonly_spec.rb +80 -125
  199. data/spec/mongoid/clients/factory_spec.rb +28 -52
  200. data/spec/mongoid/clients/options_spec.rb +65 -69
  201. data/spec/mongoid/config_spec.rb +24 -0
  202. data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
  203. data/spec/mongoid/contextual/mongo_spec.rb +4 -112
  204. data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
  205. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
  206. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
  207. data/spec/mongoid/criteria/queryable/selectable_spec.rb +6 -74
  208. data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
  209. data/spec/mongoid/criteria/scopable_spec.rb +0 -81
  210. data/spec/mongoid/criteria_spec.rb +16 -19
  211. data/spec/mongoid/document_spec.rb +2 -56
  212. data/spec/mongoid/extensions/array_spec.rb +11 -15
  213. data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
  214. data/spec/mongoid/extensions/object_spec.rb +7 -11
  215. data/spec/mongoid/extensions/range_spec.rb +7 -0
  216. data/spec/mongoid/extensions/regexp_spec.rb +0 -23
  217. data/spec/mongoid/extensions/string_spec.rb +7 -35
  218. data/spec/mongoid/factory_spec.rb +18 -11
  219. data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
  220. data/spec/mongoid/fields_spec.rb +2 -2
  221. data/spec/mongoid/findable_spec.rb +1 -1
  222. data/spec/mongoid/indexable_spec.rb +18 -8
  223. data/spec/mongoid/interceptable_spec.rb +21 -2
  224. data/spec/mongoid/matchable_spec.rb +1 -26
  225. data/spec/mongoid/persistable/deletable_spec.rb +0 -19
  226. data/spec/mongoid/persistable/destroyable_spec.rb +0 -19
  227. data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
  228. data/spec/mongoid/persistable/savable_spec.rb +3 -3
  229. data/spec/mongoid/persistable/settable_spec.rb +1 -35
  230. data/spec/mongoid/persistable/updatable_spec.rb +2 -2
  231. data/spec/mongoid/persistable_spec.rb +16 -16
  232. data/spec/mongoid/persistence_context_spec.rb +0 -14
  233. data/spec/mongoid/positional_spec.rb +10 -10
  234. data/spec/mongoid/query_cache_spec.rb +18 -87
  235. data/spec/mongoid/relations/proxy_spec.rb +124 -124
  236. data/spec/mongoid/scopable_spec.rb +0 -13
  237. data/spec/mongoid/threaded_spec.rb +0 -68
  238. data/spec/mongoid/validatable/associated_spec.rb +1 -1
  239. data/spec/mongoid/validatable/presence_spec.rb +7 -6
  240. data/spec/mongoid/validatable_spec.rb +1 -1
  241. data/spec/spec_helper.rb +7 -83
  242. metadata +586 -611
  243. metadata.gz.sig +2 -5
  244. data/lib/mongoid/clients/sessions.rb +0 -113
  245. data/lib/mongoid/errors/invalid_session_use.rb +0 -24
  246. data/lib/mongoid/matchable/nor.rb +0 -37
  247. data/lib/mongoid/railties/controller_runtime.rb +0 -86
  248. data/lib/mongoid/relations.rb +0 -148
  249. data/lib/mongoid/relations/accessors.rb +0 -267
  250. data/lib/mongoid/relations/auto_save.rb +0 -94
  251. data/lib/mongoid/relations/bindings.rb +0 -9
  252. data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
  253. data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
  254. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
  255. data/lib/mongoid/relations/builder.rb +0 -57
  256. data/lib/mongoid/relations/builders.rb +0 -106
  257. data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
  258. data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
  259. data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
  260. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
  261. data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
  262. data/lib/mongoid/relations/cascading.rb +0 -56
  263. data/lib/mongoid/relations/cascading/delete.rb +0 -44
  264. data/lib/mongoid/relations/cascading/destroy.rb +0 -43
  265. data/lib/mongoid/relations/cascading/nullify.rb +0 -35
  266. data/lib/mongoid/relations/cascading/restrict.rb +0 -39
  267. data/lib/mongoid/relations/conversions.rb +0 -34
  268. data/lib/mongoid/relations/counter_cache.rb +0 -160
  269. data/lib/mongoid/relations/cyclic.rb +0 -107
  270. data/lib/mongoid/relations/eager/base.rb +0 -153
  271. data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
  272. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
  273. data/lib/mongoid/relations/eager/has_many.rb +0 -38
  274. data/lib/mongoid/relations/eager/has_one.rb +0 -30
  275. data/lib/mongoid/relations/embedded/in.rb +0 -241
  276. data/lib/mongoid/relations/embedded/many.rb +0 -683
  277. data/lib/mongoid/relations/embedded/one.rb +0 -235
  278. data/lib/mongoid/relations/macros.rb +0 -367
  279. data/lib/mongoid/relations/metadata.rb +0 -1179
  280. data/lib/mongoid/relations/nested_builder.rb +0 -74
  281. data/lib/mongoid/relations/options.rb +0 -49
  282. data/lib/mongoid/relations/polymorphic.rb +0 -39
  283. data/lib/mongoid/relations/referenced/in.rb +0 -304
  284. data/lib/mongoid/relations/referenced/many.rb +0 -812
  285. data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
  286. data/lib/mongoid/relations/referenced/one.rb +0 -290
  287. data/lib/mongoid/relations/synchronization.rb +0 -169
  288. data/lib/mongoid/relations/targets.rb +0 -2
  289. data/lib/mongoid/relations/targets/enumerable.rb +0 -493
  290. data/lib/mongoid/relations/touchable.rb +0 -97
  291. data/spec/app/models/array_field.rb +0 -7
  292. data/spec/app/models/delegating_patient.rb +0 -16
  293. data/spec/integration/document_spec.rb +0 -22
  294. data/spec/mongoid/clients/sessions_spec.rb +0 -334
  295. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
  296. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
  297. data/spec/mongoid/matchable/nor_spec.rb +0 -209
  298. data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
  299. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
  300. data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
  301. data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
  302. data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
  303. data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
  304. data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
  305. data/spec/mongoid/relations/cascading_spec.rb +0 -355
  306. data/spec/mongoid/relations/constraint_spec.rb +0 -75
  307. data/spec/mongoid/relations/conversions_spec.rb +0 -128
  308. data/spec/mongoid/relations/metadata_spec.rb +0 -1985
  309. data/spec/mongoid/relations/options_spec.rb +0 -35
  310. data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -110
  311. data/spec/support/cluster_config.rb +0 -158
  312. data/spec/support/constraints.rb +0 -101
  313. data/spec/support/macros.rb +0 -20
  314. data/spec/support/session_registry.rb +0 -50
  315. data/spec/support/spec_config.rb +0 -42
@@ -816,7 +816,7 @@ describe Mongoid::Fields do
816
816
 
817
817
  context "when the field name conflicts with mongoid's internals" do
818
818
 
819
- [:__metadata, :invalid].each do |meth|
819
+ [:_association, :invalid].each do |meth|
820
820
  context "when the field is named #{meth}" do
821
821
 
822
822
  it "raises an error" do
@@ -1171,7 +1171,7 @@ describe Mongoid::Fields do
1171
1171
  end
1172
1172
 
1173
1173
  let(:decimal) do
1174
- BigDecimal("1000000.00")
1174
+ BigDecimal.new("1000000.00")
1175
1175
  end
1176
1176
 
1177
1177
  context "when setting to a big decimal" do
@@ -10,7 +10,7 @@ describe Mongoid::Findable do
10
10
  end
11
11
 
12
12
  it "returns the distinct values for the field" do
13
- expect(Band.distinct(:name).sort).to eq([ "Photek", "Tool" ])
13
+ expect(Band.distinct(:name)).to eq([ "Tool", "Photek" ])
14
14
  end
15
15
  end
16
16
 
@@ -89,8 +89,9 @@ describe Mongoid::Indexable do
89
89
  klass.create_indexes
90
90
  end
91
91
 
92
- it "creates the indexes" do
93
- expect(klass.collection.indexes.get(_type: 1)).to_not be_nil
92
+ it "creates the indexes by using specified background option" do
93
+ index = klass.collection.indexes.get(_type: 1)
94
+ expect(index[:background]).to eq(true)
94
95
  end
95
96
  end
96
97
 
@@ -104,12 +105,9 @@ describe Mongoid::Indexable do
104
105
  end
105
106
  end
106
107
 
107
- before do
108
- klass.create_indexes
109
- end
110
-
111
108
  after do
112
109
  klass.remove_indexes
110
+ Mongoid::Config.background_indexing = false
113
111
  end
114
112
 
115
113
  let(:indexes) do
@@ -118,8 +116,20 @@ describe Mongoid::Indexable do
118
116
  end
119
117
  end
120
118
 
121
- it "creates the indexes" do
122
- expect(indexes.get(_type: 1)).to_not be_nil
119
+ it "creates the indexes by using default background_indexing option" do
120
+ klass.create_indexes
121
+
122
+ index = indexes.get(_type: 1)
123
+ expect(index[:background]).to eq(Mongoid::Config.background_indexing)
124
+ end
125
+
126
+ it "creates the indexes by using specified background_indexing option" do
127
+ Mongoid::Config.background_indexing = true
128
+
129
+ klass.create_indexes
130
+
131
+ index = indexes.get(_type: 1)
132
+ expect(index[:background]).to eq(true)
123
133
  end
124
134
  end
125
135
 
@@ -526,7 +526,7 @@ describe Mongoid::Interceptable do
526
526
  end
527
527
 
528
528
  after(:all) do
529
- begin; Band.reset_callbacks(:rearrange); rescue; end
529
+ Band.reset_callbacks(:rearrange)
530
530
  end
531
531
 
532
532
  let(:attributes) do
@@ -597,7 +597,7 @@ describe Mongoid::Interceptable do
597
597
  it "raises an error" do
598
598
  expect {
599
599
  Band.has_and_belongs_to_many :tags, cascade_callbacks: true
600
- }.to raise_error(Mongoid::Errors::InvalidOptions)
600
+ }.to raise_error(Mongoid::Errors::InvalidRelationOption)
601
601
  end
602
602
  end
603
603
 
@@ -1181,6 +1181,25 @@ describe Mongoid::Interceptable do
1181
1181
  end
1182
1182
  end
1183
1183
 
1184
+ context 'when the parent is updated' do
1185
+
1186
+ let(:band) do
1187
+ Band.create(name: "Moderat")
1188
+ end
1189
+
1190
+ before do
1191
+ band.update(records: [ { name: 'Black on Both Sides' }])
1192
+ end
1193
+
1194
+ it 'executes the callback' do
1195
+ expect(band.records.first.before_validation_called).to be true
1196
+ end
1197
+
1198
+ it 'persists the change' do
1199
+ expect(band.reload.records.first.before_validation_called).to be true
1200
+ end
1201
+ end
1202
+
1184
1203
  context "when the child is persisted" do
1185
1204
 
1186
1205
  let(:band) do
@@ -86,7 +86,7 @@ describe Mongoid::Matchable do
86
86
  let(:selector) do
87
87
  { "occupants.0" => "Tim" }
88
88
  end
89
-
89
+
90
90
  it "returns true" do
91
91
  expect(document.locations.first._matches?(selector)).to be true
92
92
  end
@@ -774,31 +774,6 @@ describe Mongoid::Matchable do
774
774
  end
775
775
  end
776
776
 
777
- context "with an $nor selector" do
778
-
779
- context "when the attributes match" do
780
-
781
- let(:selector) do
782
- { "$nor" => [ { number: 10 }, { number: { "$gt" => 199 } } ] }
783
- end
784
-
785
- it "returns true" do
786
- expect(document._matches?(selector)).to be true
787
- end
788
- end
789
-
790
- context "when the attributes do not match" do
791
-
792
- let(:selector) do
793
- { "$nor" => [ { number: 10 }, { number: { "$gt" => 99 } } ] }
794
- end
795
-
796
- it "returns false" do
797
- expect(document._matches?(selector)).to be false
798
- end
799
- end
800
- end
801
-
802
777
  context "with a $size selector" do
803
778
 
804
779
  context "when the attributes match" do
@@ -228,25 +228,6 @@ describe Mongoid::Persistable::Deletable do
228
228
  expect(removed).to eq(1)
229
229
  end
230
230
  end
231
-
232
- context 'when the write concern is unacknowledged' do
233
-
234
- before do
235
- Person.create(title: 'miss')
236
- end
237
-
238
- let!(:deleted) do
239
- Person.with(write: { w: 0 }) { |klass| klass.delete_all(title: "sir") }
240
- end
241
-
242
- it "removes the matching documents" do
243
- expect(Person.where(title: 'miss').count).to eq(1)
244
- end
245
-
246
- it "returns 0" do
247
- expect(deleted).to eq(0)
248
- end
249
- end
250
231
  end
251
232
  end
252
233
  end
@@ -222,25 +222,6 @@ describe Mongoid::Persistable::Destroyable do
222
222
  end
223
223
  end
224
224
 
225
- context 'when the write concern is unacknowledged' do
226
-
227
- before do
228
- Person.create(title: 'miss')
229
- end
230
-
231
- let!(:removed) do
232
- Person.with(write: { w: 0 }) { |klass| klass.destroy_all(title: "sir") }
233
- end
234
-
235
- it "removes the matching documents" do
236
- expect(Person.where(title: 'miss').count).to eq(1)
237
- end
238
-
239
- it "returns 0" do
240
- expect(removed).to eq(0)
241
- end
242
- end
243
-
244
225
  context 'when removing a list of embedded documents' do
245
226
 
246
227
  context 'when the embedded documents list is reversed in memory' do
@@ -66,15 +66,15 @@ describe Mongoid::Persistable::Incrementable do
66
66
  context "when providing big decimal values" do
67
67
 
68
68
  let(:five) do
69
- BigDecimal("5.0")
69
+ BigDecimal.new("5.0")
70
70
  end
71
71
 
72
72
  let(:neg_ten) do
73
- BigDecimal("-10.0")
73
+ BigDecimal.new("-10.0")
74
74
  end
75
75
 
76
76
  let(:thirty) do
77
- BigDecimal("30.0")
77
+ BigDecimal.new("30.0")
78
78
  end
79
79
 
80
80
  let!(:inc) do
@@ -151,15 +151,15 @@ describe Mongoid::Persistable::Incrementable do
151
151
  context "when providing big decimal values" do
152
152
 
153
153
  let(:five) do
154
- BigDecimal("5.0")
154
+ BigDecimal.new("5.0")
155
155
  end
156
156
 
157
157
  let(:neg_ten) do
158
- BigDecimal("-10.0")
158
+ BigDecimal.new("-10.0")
159
159
  end
160
160
 
161
161
  let(:thirty) do
162
- BigDecimal("30.0")
162
+ BigDecimal.new("30.0")
163
163
  end
164
164
 
165
165
  let!(:inc) do
@@ -189,8 +189,8 @@ describe Mongoid::Persistable::Savable do
189
189
  "title" => "King",
190
190
  "name.first_name" => "Ryan"
191
191
  },
192
- "$push"=> {
193
- "addresses" => { '$each' => [ { "_id" => address.id, "street" => "Bond St" } ] }
192
+ "$pushAll"=> {
193
+ "addresses" => [ { "_id" => address.id, "street" => "Bond St" } ]
194
194
  }
195
195
  })
196
196
  end
@@ -309,7 +309,7 @@ describe Mongoid::Persistable::Savable do
309
309
  expect {
310
310
  person.username = 'unloaded-attribute'
311
311
  person.save
312
- }.to raise_error(Mongoid::Errors::ReadonlyAttribute)
312
+ }.to raise_error(ActiveModel::MissingAttributeError)
313
313
  end
314
314
 
315
315
  context 'when the changed attribute is aliased' do
@@ -278,22 +278,7 @@ describe Mongoid::Persistable::Settable do
278
278
  end
279
279
  end
280
280
 
281
- context 'when the field is a nested hash' do
282
-
283
- context 'when the field is reset to an empty hash' do
284
-
285
- before do
286
- church.set('location' => {})
287
- end
288
-
289
- it 'updates the field locally' do
290
- expect(church.location).to eq({})
291
- end
292
-
293
- it 'updates the field in the database' do
294
- expect(church.reload.location).to eq({})
295
- end
296
- end
281
+ context 'when the field is a bested hash' do
297
282
 
298
283
  context 'when a leaf value in the nested hash is updated' do
299
284
 
@@ -315,25 +300,6 @@ describe Mongoid::Persistable::Settable do
315
300
  end
316
301
  end
317
302
 
318
- context 'when a leaf value in the nested hash is updated to a number' do
319
-
320
- let(:church) do
321
- Church.new.tap do |a|
322
- a.location = {'address' => {'city' => 'Berlin', 'street' => 'Yorckstr'}}
323
- a.name = 'Church1'
324
- a.save
325
- end
326
- end
327
-
328
- before do
329
- church.set('location.address.city' => 12345)
330
- end
331
-
332
- it 'updates the nested value to the correct value' do
333
- expect(church.name).to eq('Church1')
334
- expect(church.location).to eql({'address' => {'city' => 12345, 'street' => 'Yorckstr'}})
335
- end
336
- end
337
303
 
338
304
  context 'when the nested hash is many levels deep' do
339
305
 
@@ -462,7 +462,7 @@ describe Mongoid::Persistable::Updatable do
462
462
 
463
463
  it "raises an error" do
464
464
  expect {
465
- person.update_attributes(map: { "$bad.key" => "value" })
465
+ person.update_attributes(map: { "bad.key" => "value" })
466
466
  }.to raise_error(Mongo::Error::OperationFailure)
467
467
  end
468
468
  end
@@ -498,7 +498,7 @@ describe Mongoid::Persistable::Updatable do
498
498
 
499
499
  it "raises an error" do
500
500
  expect {
501
- person.send(method, map: { "$bad.key" => "value" })
501
+ person.send(method, map: { "bad.key" => "value" })
502
502
  }.to raise_error(Mongo::Error::OperationFailure)
503
503
  end
504
504
  end
@@ -52,16 +52,16 @@ describe Mongoid::Persistable do
52
52
  context "when not chaining the operations" do
53
53
 
54
54
  let(:operations) do
55
- [{
55
+ {
56
56
  "$inc" => { "member_count" => 10 },
57
57
  "$bit" => { "likes" => { :and => 13 }},
58
58
  "$set" => { "name" => "Placebo" },
59
- "$unset" => { "origin" => true }},
60
- { session: nil }]
59
+ "$unset" => { "origin" => true }
60
+ }
61
61
  end
62
62
 
63
63
  before do
64
- expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(*operations).and_call_original
64
+ expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(operations).and_call_original
65
65
  end
66
66
 
67
67
  let!(:update) do
@@ -79,16 +79,16 @@ describe Mongoid::Persistable do
79
79
  context "when chaining the operations" do
80
80
 
81
81
  let(:operations) do
82
- [{
82
+ {
83
83
  "$inc" => { "member_count" => 10 },
84
84
  "$bit" => { "likes" => { :and => 13 }},
85
85
  "$set" => { "name" => "Placebo" },
86
- "$unset" => { "origin" => true }},
87
- { :session => nil } ]
86
+ "$unset" => { "origin" => true }
87
+ }
88
88
  end
89
89
 
90
90
  before do
91
- expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(*operations).and_call_original
91
+ expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(operations).and_call_original
92
92
  end
93
93
 
94
94
  let!(:update) do
@@ -107,16 +107,16 @@ describe Mongoid::Persistable do
107
107
  context "when given multiple operations of the same type" do
108
108
 
109
109
  let(:operations) do
110
- [{
110
+ {
111
111
  "$inc" => { "member_count" => 10, "other_count" => 10 },
112
112
  "$bit" => { "likes" => { :and => 13 }},
113
113
  "$set" => { "name" => "Placebo" },
114
- "$unset" => { "origin" => true }},
115
- { session: nil }]
114
+ "$unset" => { "origin" => true }
115
+ }
116
116
  end
117
117
 
118
118
  before do
119
- expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(*operations).and_call_original
119
+ expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(operations).and_call_original
120
120
  end
121
121
 
122
122
  let!(:update) do
@@ -144,16 +144,16 @@ describe Mongoid::Persistable do
144
144
  context "when expecting the document to be yielded" do
145
145
 
146
146
  let(:operations) do
147
- [{
147
+ {
148
148
  "$inc" => { "member_count" => 10 },
149
149
  "$bit" => { "likes" => { :and => 13 }},
150
150
  "$set" => { "name" => "Placebo" },
151
- "$unset" => { "origin" => true }},
152
- { session: nil }]
151
+ "$unset" => { "origin" => true }
152
+ }
153
153
  end
154
154
 
155
155
  before do
156
- expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(*operations).and_call_original
156
+ expect_any_instance_of(Mongo::Collection::View).to receive(:update_one).with(operations).and_call_original
157
157
  end
158
158
 
159
159
  let!(:update) do
@@ -70,20 +70,6 @@ describe Mongoid::PersistenceContext do
70
70
  { collection: :other }
71
71
  end
72
72
 
73
- context 'when the method throws an error' do
74
-
75
- let!(:persistence_context) do
76
- described_class.set(object, options).tap do |cxt|
77
- allow(cxt).to receive(:client).and_raise(Mongoid::Errors::NoClientConfig.new('default'))
78
- end
79
- end
80
-
81
- it 'clears the context anyway' do
82
- begin; described_class.clear(object); rescue; end
83
- expect(described_class.get(object)).to be(nil)
84
- end
85
- end
86
-
87
73
  context 'when there has been a persistence context set on the current thread' do
88
74
 
89
75
  let!(:persistence_context) do
@@ -17,8 +17,8 @@ describe Mongoid::Positional do
17
17
  "children.0.field" => "value",
18
18
  "children.0.children.1.children.3.field" => "value"
19
19
  },
20
- "$push" => {
21
- "children.0.children.1.children.3.fields" => { '$each' => [ "value", "value" ] }
20
+ "$pushAll" => {
21
+ "children.0.children.1.children.3.fields" => [ "value", "value" ]
22
22
  }
23
23
  }
24
24
  end
@@ -113,8 +113,8 @@ describe Mongoid::Positional do
113
113
  "children.$.field" => "value",
114
114
  "children.0.children.1.children.3.field" => "value"
115
115
  },
116
- "$push" => {
117
- "children.0.children.1.children.3.fields" => { '$each' => [ "value", "value" ] }
116
+ "$pushAll" => {
117
+ "children.0.children.1.children.3.fields" => [ "value", "value" ]
118
118
  }
119
119
  }
120
120
  end
@@ -141,8 +141,8 @@ describe Mongoid::Positional do
141
141
  "children.0.field" => "value",
142
142
  "children.0.children.1.children.3.field" => "value"
143
143
  },
144
- "$push" => {
145
- "children.0.children.1.children.3.fields" => { '$each' => [ "value", "value" ] }
144
+ "$pushAll" => {
145
+ "children.0.children.1.children.3.fields" => [ "value", "value" ]
146
146
  }
147
147
  }
148
148
  end
@@ -170,8 +170,8 @@ describe Mongoid::Positional do
170
170
  "children.$.field" => "value",
171
171
  "children.0.children.1.children.3.field" => "value"
172
172
  },
173
- "$push" => {
174
- "children.0.children.1.children.3.fields" => { '$each' => [ "value", "value" ] }
173
+ "$pushAll" => {
174
+ "children.0.children.1.children.3.fields" => [ "value", "value" ]
175
175
  }
176
176
  }
177
177
  end
@@ -203,8 +203,8 @@ describe Mongoid::Positional do
203
203
  "children.$.field" => "value",
204
204
  "children.0.children.1.children.3.field" => "value"
205
205
  },
206
- "$push" => {
207
- "children.0.children.1.children.3.fields" => { '$each' => [ "value", "value" ] }
206
+ "$pushAll" => {
207
+ "children.0.children.1.children.3.fields" => [ "value", "value" ]
208
208
  }
209
209
  }
210
210
  end