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
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Relations::Polymorphic do
3
+ describe "Polymorphic Associations" do
4
4
 
5
5
  describe "#polymorph" do
6
6
 
@@ -12,16 +12,8 @@ describe Mongoid::Relations::Polymorphic do
12
12
 
13
13
  context "when the relation stores a foreign key" do
14
14
 
15
- let(:metadata) do
16
- Mongoid::Relations::Metadata.new(
17
- name: :ratable,
18
- polymorphic: true,
19
- relation: Mongoid::Relations::Referenced::In
20
- )
21
- end
22
-
23
- let!(:polymorphed) do
24
- klass.polymorph(metadata)
15
+ let!(:association) do
16
+ klass.belongs_to :ratable, polymorphic: true
25
17
  end
26
18
 
27
19
  it "sets polymorphic to true" do
@@ -31,24 +23,12 @@ describe Mongoid::Relations::Polymorphic do
31
23
  it "adds the foreign key type field" do
32
24
  expect(klass.fields["ratable_type"]).to_not be_nil
33
25
  end
34
-
35
- it "returns self" do
36
- expect(polymorphed).to eq(klass)
37
- end
38
26
  end
39
27
 
40
28
  context "when the relation does not store a foreign key" do
41
29
 
42
- let(:metadata) do
43
- Mongoid::Relations::Metadata.new(
44
- name: :ratings,
45
- as: :ratable,
46
- relation: Mongoid::Relations::Referenced::Many
47
- )
48
- end
49
-
50
- before do
51
- klass.polymorph(metadata)
30
+ let!(:association) do
31
+ klass.has_many :ratings, as: :ratable
52
32
  end
53
33
 
54
34
  it "sets polymorphic to true" do
@@ -67,15 +47,8 @@ describe Mongoid::Relations::Polymorphic do
67
47
 
68
48
  context "when the relation is not polymorphic" do
69
49
 
70
- let(:metadata) do
71
- Mongoid::Relations::Metadata.new(
72
- name: :ratings,
73
- relation: Mongoid::Relations::Referenced::Many
74
- )
75
- end
76
-
77
- before do
78
- klass.polymorph(metadata)
50
+ let!(:association) do
51
+ klass.has_many :ratings
79
52
  end
80
53
 
81
54
  it "sets polymorphic to false" do
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Relations::Bindings::Referenced::In do
3
+ describe Mongoid::Association::Referenced::BelongsTo::Binding do
4
4
 
5
5
  let(:person) do
6
6
  Person.new
@@ -14,11 +14,11 @@ describe Mongoid::Relations::Bindings::Referenced::In do
14
14
  Post.new
15
15
  end
16
16
 
17
- let(:game_metadata) do
17
+ let(:game_association) do
18
18
  Game.relations["person"]
19
19
  end
20
20
 
21
- let(:post_metadata) do
21
+ let(:post_association) do
22
22
  Post.relations["person"]
23
23
  end
24
24
 
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
27
27
  context "when the child of an references one" do
28
28
 
29
29
  let(:binding) do
30
- described_class.new(game, person, game_metadata)
30
+ described_class.new(game, person, game_association)
31
31
  end
32
32
 
33
33
  context "when the document is bindable with default pk" do
@@ -90,7 +90,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
90
90
  context "when the child of an references many" do
91
91
 
92
92
  let(:binding) do
93
- described_class.new(post, person, post_metadata)
93
+ described_class.new(post, person, post_association)
94
94
  end
95
95
 
96
96
  context "when the document is bindable" do
@@ -129,7 +129,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
129
129
  context "when the child of an references one" do
130
130
 
131
131
  let(:binding) do
132
- described_class.new(game, person, game_metadata)
132
+ described_class.new(game, person, game_association)
133
133
  end
134
134
 
135
135
  context "when the document is unbindable" do
@@ -162,7 +162,7 @@ describe Mongoid::Relations::Bindings::Referenced::In do
162
162
  context "when the child of an references many" do
163
163
 
164
164
  let(:binding) do
165
- described_class.new(post, person, post_metadata)
165
+ described_class.new(post, person, post_association)
166
166
  end
167
167
 
168
168
  context "when the document is unbindable" do
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Relations::Builders::Referenced::In do
3
+ describe Mongoid::Association::Referenced::BelongsTo::Buildable do
4
4
 
5
5
  let(:base) do
6
6
  double
@@ -8,45 +8,28 @@ describe Mongoid::Relations::Builders::Referenced::In do
8
8
 
9
9
  describe "#build" do
10
10
 
11
- let(:criteria) do
12
- Person.where(_id: object_id)
11
+ let(:document) do
12
+ association.build(base, object)
13
13
  end
14
14
 
15
- let(:metadata) do
16
- double(
17
- klass: Person,
18
- name: :person,
19
- foreign_key: "person_id",
20
- criteria: criteria
21
- )
22
- end
23
-
24
- let(:builder) do
25
- described_class.new(base, metadata, object)
15
+ let(:association) do
16
+ Post.relations['person']
26
17
  end
27
18
 
28
19
  context "when provided an id" do
29
20
 
30
21
  context "when the object is an object id" do
31
22
 
32
- let(:object_id) do
33
- BSON::ObjectId.new
23
+ let!(:person) do
24
+ Person.create(_id: object)
34
25
  end
35
26
 
36
27
  let(:object) do
37
- object_id
38
- end
39
-
40
- let(:person) do
41
- double
28
+ BSON::ObjectId.new
42
29
  end
43
30
 
44
31
  before do
45
- expect(criteria).to receive(:first).and_return(person)
46
- end
47
-
48
- let!(:document) do
49
- builder.build
32
+ expect(Person).to receive(:where).with(association.primary_key => object).and_call_original
50
33
  end
51
34
 
52
35
  it "sets the document" do
@@ -54,40 +37,52 @@ describe Mongoid::Relations::Builders::Referenced::In do
54
37
  end
55
38
  end
56
39
 
57
- context "when the object is an integer" do
40
+ context 'when the id is nil' do
41
+
42
+ let(:object) do
43
+ nil
44
+ end
58
45
 
59
46
  before do
60
- Person.field :_id, overwrite: true, type: Integer
47
+ expect(Person).not_to receive(:where)
61
48
  end
62
49
 
63
- after do
64
- Person.field(
65
- :_id,
66
- overwrite: true,
67
- type: BSON::ObjectId,
68
- pre_processed: true,
69
- default: ->{ BSON::ObjectId.new }
70
- )
50
+ it 'returns nil' do
51
+ expect(document).to be_nil
71
52
  end
53
+ end
72
54
 
73
- let(:object_id) do
74
- 666
55
+ context "when the id does not correspond to a document in the database" do
56
+
57
+ let!(:person) do
58
+ Person.create
75
59
  end
76
60
 
77
61
  let(:object) do
78
- object_id
62
+ BSON::ObjectId.new
79
63
  end
80
64
 
81
- let(:person) do
82
- double
65
+ before do
66
+ expect(Person).to receive(:where).with(association.primary_key => object).and_call_original
83
67
  end
84
68
 
85
- before do
86
- expect(criteria).to receive(:first).and_return(person)
69
+ it 'returns nil' do
70
+ expect(document).to be_nil
71
+ end
72
+ end
73
+
74
+ context "when the object is an integer" do
75
+
76
+ let!(:person) do
77
+ Person.create(_id: object)
78
+ end
79
+
80
+ let(:object) do
81
+ 666
87
82
  end
88
83
 
89
- let!(:document) do
90
- builder.build
84
+ before do
85
+ expect(Person).to receive(:where).with(association.primary_key => object).and_call_original
91
86
  end
92
87
 
93
88
  it "sets the document" do
@@ -98,50 +93,22 @@ describe Mongoid::Relations::Builders::Referenced::In do
98
93
 
99
94
  context "when provided a object" do
100
95
 
101
- let(:object) do
102
- Person.new
96
+ let!(:person) do
97
+ Person.create
103
98
  end
104
99
 
105
- let(:builder) do
106
- described_class.new(base, nil, object)
100
+ let(:object) do
101
+ Person.new
107
102
  end
108
103
 
109
- let(:document) do
110
- builder.build
104
+ before do
105
+ expect(Person).not_to receive(:where)
111
106
  end
112
107
 
113
108
  it "returns the object" do
114
109
  expect(document).to eq(object)
115
110
  end
116
111
  end
117
- end
118
-
119
- describe "#build" do
120
-
121
- let(:game) do
122
- Game.new
123
- end
124
-
125
- context "when no document found in the database" do
126
-
127
- context "when the id is nil" do
128
-
129
- it "returns nil" do
130
- expect(game.person).to be_nil
131
- end
132
- end
133
-
134
- context "when the id is incorrect" do
135
-
136
- before do
137
- game.person_id = BSON::ObjectId.new
138
- end
139
-
140
- it "returns nil" do
141
- expect(game.person).to be_nil
142
- end
143
- end
144
- end
145
112
 
146
113
  context "when the document is persisted" do
147
114
 
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Relations::Eager::BelongsTo do
3
+ describe Mongoid::Association::Referenced::BelongsTo::Eager do
4
4
 
5
5
  describe ".grouped_docs" do
6
6
 
@@ -12,13 +12,13 @@ describe Mongoid::Relations::Eager::BelongsTo do
12
12
  Person.create!
13
13
  end
14
14
 
15
- let(:metadata) do
15
+ let(:association) do
16
16
  Post.reflect_on_association(:person)
17
17
  end
18
18
 
19
19
  let(:eager) do
20
- described_class.new([metadata], docs).tap do |b|
21
- b.shift_metadata
20
+ described_class.new([association], docs).tap do |b|
21
+ b.send(:shift_association)
22
22
  end
23
23
  end
24
24
 
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Eager::BelongsTo do
27
27
  end
28
28
 
29
29
  it "aggregates by the parent id" do
30
- expect(eager.grouped_docs.keys).to eq([person.id])
30
+ expect(eager.send(:grouped_docs).keys).to eq([person.id])
31
31
  end
32
32
  end
33
33
 
@@ -41,13 +41,13 @@ describe Mongoid::Relations::Eager::BelongsTo do
41
41
  Person.create!
42
42
  end
43
43
 
44
- let(:metadata) do
44
+ let(:association) do
45
45
  Post.reflect_on_association(:person)
46
46
  end
47
47
 
48
48
  let(:eager) do
49
- described_class.new([metadata], docs).tap do |b|
50
- b.shift_metadata
49
+ described_class.new([association], docs).tap do |b|
50
+ b.send(:shift_association)
51
51
  end
52
52
  end
53
53
 
@@ -59,7 +59,7 @@ describe Mongoid::Relations::Eager::BelongsTo do
59
59
  docs.each do |doc|
60
60
  expect(doc).to receive(:set_relation).with(:person, :foo)
61
61
  end
62
- eager.set_on_parent(person.id, :foo)
62
+ eager.send(:set_on_parent, person.id, :foo)
63
63
  end
64
64
  end
65
65
 
@@ -1,6 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
- describe Mongoid::Relations::Referenced::In do
3
+ describe Mongoid::Association::Referenced::BelongsTo::Proxy do
4
4
 
5
5
  before(:all) do
6
6
  Person.reset_callbacks(:validate)
@@ -78,8 +78,8 @@ describe Mongoid::Relations::Referenced::In do
78
78
  expect(address.account).to eq(account)
79
79
  end
80
80
 
81
- it "does not erase the metadata" do
82
- expect(address.__metadata).to_not be_nil
81
+ it "does not erase the association metadata" do
82
+ expect(address._association).to_not be_nil
83
83
  end
84
84
 
85
85
  it "allows saving of the embedded document" do
@@ -106,7 +106,7 @@ describe Mongoid::Relations::Referenced::In do
106
106
  end
107
107
 
108
108
  it "sets the target of the relation" do
109
- expect(game.person.target).to eq(person)
109
+ expect(game.person._target).to eq(person)
110
110
  end
111
111
 
112
112
  it "sets the foreign key on the relation" do
@@ -141,7 +141,7 @@ describe Mongoid::Relations::Referenced::In do
141
141
  end
142
142
 
143
143
  it "sets the target of the relation" do
144
- expect(game.person.target).to eq(person)
144
+ expect(game.person._target).to eq(person)
145
145
  end
146
146
 
147
147
  it "sets the foreign key of the relation" do
@@ -203,7 +203,7 @@ describe Mongoid::Relations::Referenced::In do
203
203
  end
204
204
 
205
205
  it "sets the target of the relation" do
206
- expect(rating.ratable.target).to eq(bar)
206
+ expect(rating.ratable._target).to eq(bar)
207
207
  end
208
208
 
209
209
  it "sets the foreign key on the relation" do
@@ -238,7 +238,7 @@ describe Mongoid::Relations::Referenced::In do
238
238
  end
239
239
 
240
240
  it "sets the target of the relation" do
241
- expect(rating.ratable.target).to eq(bar)
241
+ expect(rating.ratable._target).to eq(bar)
242
242
  end
243
243
 
244
244
  it "sets the foreign key of the relation" do
@@ -317,7 +317,7 @@ describe Mongoid::Relations::Referenced::In do
317
317
  end
318
318
 
319
319
  it "sets the target of the relation" do
320
- expect(post.person.target).to eq(person)
320
+ expect(post.person._target).to eq(person)
321
321
  end
322
322
 
323
323
  it "sets the foreign key on the relation" do
@@ -344,7 +344,7 @@ describe Mongoid::Relations::Referenced::In do
344
344
  end
345
345
 
346
346
  it "sets the target of the relation" do
347
- expect(post.person.target).to eq(person)
347
+ expect(post.person._target).to eq(person)
348
348
  end
349
349
 
350
350
  it "sets the foreign key of the relation" do
@@ -388,7 +388,7 @@ describe Mongoid::Relations::Referenced::In do
388
388
 
389
389
  it "should assign as expected" do
390
390
  eye.suspended_in = eye_bowl
391
- expect(eye.suspended_in.target).to eq(eye_bowl)
391
+ expect(eye.suspended_in._target).to eq(eye_bowl)
392
392
  end
393
393
  end
394
394
 
@@ -409,7 +409,7 @@ describe Mongoid::Relations::Referenced::In do
409
409
  end
410
410
 
411
411
  it "sets the target of the relation" do
412
- expect(rating.ratable.target).to eq(movie)
412
+ expect(rating.ratable._target).to eq(movie)
413
413
  end
414
414
 
415
415
  it "sets the foreign key on the relation" do
@@ -436,7 +436,7 @@ describe Mongoid::Relations::Referenced::In do
436
436
  end
437
437
 
438
438
  it "sets the target of the relation" do
439
- expect(rating.ratable.target).to eq(movie)
439
+ expect(rating.ratable._target).to eq(movie)
440
440
  end
441
441
 
442
442
  it "sets the foreign key of the relation" do
@@ -470,6 +470,13 @@ describe Mongoid::Relations::Referenced::In do
470
470
 
471
471
  context "when relation is has_one" do
472
472
 
473
+ around(:each) do |example|
474
+ original_account_dependents = Account.dependents
475
+ Account.dependents = []
476
+ example.run
477
+ Account.dependents = original_account_dependents
478
+ end
479
+
473
480
  before do
474
481
  Account.belongs_to :person, dependent: :destroy
475
482
  Person.has_one :account
@@ -514,6 +521,13 @@ describe Mongoid::Relations::Referenced::In do
514
521
 
515
522
  context "when relation is has_many" do
516
523
 
524
+ around(:each) do |example|
525
+ original_drug_dependents = Drug.dependents
526
+ Drug.dependents = []
527
+ example.run
528
+ Drug.dependents = original_drug_dependents
529
+ end
530
+
517
531
  before do
518
532
  Drug.belongs_to :person, dependent: :destroy
519
533
  Person.has_many :drugs
@@ -562,8 +576,15 @@ describe Mongoid::Relations::Referenced::In do
562
576
 
563
577
  context "when relation is has_one" do
564
578
 
579
+ around(:each) do |example|
580
+ original_account_dependents = Account.dependents
581
+ Account.dependents = []
582
+ example.run
583
+ Account.dependents = original_account_dependents
584
+ end
585
+
565
586
  before do
566
- Account.belongs_to :person, dependent: :delete
587
+ Account.belongs_to :person, dependent: :delete_all
567
588
  Person.has_one :account
568
589
  person.account = account
569
590
  person.save
@@ -595,8 +616,15 @@ describe Mongoid::Relations::Referenced::In do
595
616
 
596
617
  context "when relation is has_many" do
597
618
 
619
+ around(:each) do |example|
620
+ original_drug_dependents = Drug.dependents
621
+ Drug.dependents = []
622
+ example.run
623
+ Drug.dependents = original_drug_dependents
624
+ end
625
+
598
626
  before do
599
- Drug.belongs_to :person, dependent: :delete
627
+ Drug.belongs_to :person, dependent: :delete_all
600
628
  Person.has_many :drugs
601
629
  person.drugs = [drug]
602
630
  person.save
@@ -643,6 +671,13 @@ describe Mongoid::Relations::Referenced::In do
643
671
 
644
672
  context "when relation is has_one" do
645
673
 
674
+ around(:each) do |example|
675
+ original_account_dependents = Account.dependents
676
+ Account.dependents = []
677
+ example.run
678
+ Account.dependents = original_account_dependents
679
+ end
680
+
646
681
  before do
647
682
  Account.belongs_to :person, dependent: :nullify
648
683
  Person.has_one :account
@@ -675,6 +710,13 @@ describe Mongoid::Relations::Referenced::In do
675
710
 
676
711
  context "when relation is has_many" do
677
712
 
713
+ around(:each) do |example|
714
+ original_drug_dependents = Drug.dependents
715
+ Drug.dependents = []
716
+ example.run
717
+ Drug.dependents = original_drug_dependents
718
+ end
719
+
678
720
  before do
679
721
  Drug.belongs_to :person, dependent: :nullify
680
722
  Person.has_many :drugs
@@ -980,48 +1022,6 @@ describe Mongoid::Relations::Referenced::In do
980
1022
  end
981
1023
  end
982
1024
 
983
- describe ".builder" do
984
-
985
- let(:builder_klass) do
986
- Mongoid::Relations::Builders::Referenced::In
987
- end
988
-
989
- let(:document) do
990
- double
991
- end
992
-
993
- let(:metadata) do
994
- double(extension?: false)
995
- end
996
-
997
- it "returns the embedded in builder" do
998
- expect(
999
- described_class.builder(nil, metadata, document)
1000
- ).to be_a_kind_of(builder_klass)
1001
- end
1002
- end
1003
-
1004
- describe ".embedded?" do
1005
-
1006
- it "returns false" do
1007
- expect(described_class).to_not be_embedded
1008
- end
1009
- end
1010
-
1011
- describe ".foreign_key_suffix" do
1012
-
1013
- it "returns _id" do
1014
- expect(described_class.foreign_key_suffix).to eq("_id")
1015
- end
1016
- end
1017
-
1018
- describe ".macro" do
1019
-
1020
- it "returns belongs_to" do
1021
- expect(described_class.macro).to eq(:belongs_to)
1022
- end
1023
- end
1024
-
1025
1025
  describe "#respond_to?" do
1026
1026
 
1027
1027
  let(:person) do
@@ -1047,40 +1047,6 @@ describe Mongoid::Relations::Referenced::In do
1047
1047
  end
1048
1048
  end
1049
1049
 
1050
- describe ".stores_foreign_key?" do
1051
-
1052
- it "returns true" do
1053
- expect(described_class.stores_foreign_key?).to be true
1054
- end
1055
- end
1056
-
1057
- describe ".valid_options" do
1058
-
1059
- it "returns the valid options" do
1060
- expect(described_class.valid_options).to eq(
1061
- [
1062
- :autobuild,
1063
- :autosave,
1064
- :dependent,
1065
- :foreign_key,
1066
- :index,
1067
- :polymorphic,
1068
- :primary_key,
1069
- :touch,
1070
- :optional,
1071
- :required
1072
- ]
1073
- )
1074
- end
1075
- end
1076
-
1077
- describe ".validation_default" do
1078
-
1079
- it "returns false" do
1080
- expect(described_class.validation_default).to be false
1081
- end
1082
- end
1083
-
1084
1050
  context "when the relation is self referencing" do
1085
1051
 
1086
1052
  let(:game_one) do
@@ -1280,7 +1246,7 @@ describe Mongoid::Relations::Referenced::In do
1280
1246
 
1281
1247
  before do
1282
1248
  Person.collection.find({ _id: person_one.id }).
1283
- update_one({ "$set" => { title: "Madam" }})
1249
+ update_one({ "$set" => { title: "Madam" }})
1284
1250
  end
1285
1251
 
1286
1252
  let(:reloaded) do