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::Macros do
3
+ describe Mongoid::Association::Macros do
4
4
 
5
5
  class TestClass
6
6
  include Mongoid::Document
@@ -20,26 +20,6 @@ describe Mongoid::Relations::Macros do
20
20
  klass.validators.clear
21
21
  end
22
22
 
23
- describe 'Model loading' do
24
-
25
- let(:model_associations) do
26
- class TestModel
27
- include Mongoid::Document
28
- field :associations
29
- end
30
- end
31
-
32
- after do
33
- Object.send(:remove_const, :TestModel)
34
- end
35
-
36
- it 'prohibits the use of :associations as an attribute' do
37
- expect {
38
- model_associations
39
- }.to raise_exception(Mongoid::Errors::InvalidField)
40
- end
41
- end
42
-
43
23
  describe ".embedded_in" do
44
24
 
45
25
  it "defines the macro" do
@@ -65,7 +45,7 @@ describe Mongoid::Relations::Macros do
65
45
  klass.embedded_in(:person)
66
46
  end
67
47
 
68
- it "adds the metadata to the klass" do
48
+ it "adds the association to the klass" do
69
49
  expect(klass.relations["person"]).to_not be_nil
70
50
  end
71
51
 
@@ -78,8 +58,8 @@ describe Mongoid::Relations::Macros do
78
58
  end
79
59
 
80
60
  it "creates the correct relation" do
81
- expect(klass.relations["person"].relation).to eq(
82
- Mongoid::Relations::Embedded::In
61
+ expect(klass.relations["person"]).to be_a(
62
+ Mongoid::Association::Embedded::EmbeddedIn
83
63
  )
84
64
  end
85
65
 
@@ -87,18 +67,27 @@ describe Mongoid::Relations::Macros do
87
67
  expect(klass._validators).to be_empty
88
68
  end
89
69
 
90
- context "metadata properties" do
70
+ context 'when an invalid option is provided' do
91
71
 
92
- let(:metadata) do
72
+ it 'raises an InvalidRelationOption exception' do
73
+ expect {
74
+ klass.embedded_in(:person, sandwich: true)
75
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
76
+ end
77
+ end
78
+
79
+ context "association properties" do
80
+
81
+ let(:association) do
93
82
  klass.relations["person"]
94
83
  end
95
84
 
96
85
  it "automatically adds the name" do
97
- expect(metadata.name).to eq(:person)
86
+ expect(association.name).to eq(:person)
98
87
  end
99
88
 
100
89
  it "automatically adds the inverse class name" do
101
- expect(metadata.inverse_class_name).to eq("TestClass")
90
+ expect(association.inverse_class_name).to eq("TestClass")
102
91
  end
103
92
  end
104
93
  end
@@ -129,7 +118,7 @@ describe Mongoid::Relations::Macros do
129
118
  klass.embeds_many(:addresses)
130
119
  end
131
120
 
132
- it "adds the metadata to the klass" do
121
+ it "adds the association to the klass" do
133
122
  expect(klass.relations["addresses"]).to_not be_nil
134
123
  end
135
124
 
@@ -142,8 +131,8 @@ describe Mongoid::Relations::Macros do
142
131
  end
143
132
 
144
133
  it "creates the correct relation" do
145
- expect(klass.relations["addresses"].relation).to eq(
146
- Mongoid::Relations::Embedded::Many
134
+ expect(klass.relations["addresses"]).to be_a(
135
+ Mongoid::Association::Embedded::EmbedsMany
147
136
  )
148
137
  end
149
138
 
@@ -153,18 +142,27 @@ describe Mongoid::Relations::Macros do
153
142
  )
154
143
  end
155
144
 
156
- context "metadata properties" do
145
+ context 'when an invalid option is provided' do
146
+
147
+ it 'raises an InvalidRelationOption exception' do
148
+ expect {
149
+ klass.embeds_many(:addresses, sandwich: true)
150
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
151
+ end
152
+ end
153
+
154
+ context "association properties" do
157
155
 
158
- let(:metadata) do
156
+ let(:association) do
159
157
  klass.relations["addresses"]
160
158
  end
161
159
 
162
160
  it "automatically adds the name" do
163
- expect(metadata.name).to eq(:addresses)
161
+ expect(association.name).to eq(:addresses)
164
162
  end
165
163
 
166
164
  it "automatically adds the inverse class name" do
167
- expect(metadata.inverse_class_name).to eq("TestClass")
165
+ expect(association.inverse_class_name).to eq("TestClass")
168
166
  end
169
167
  end
170
168
  end
@@ -175,16 +173,16 @@ describe Mongoid::Relations::Macros do
175
173
  klass.embeds_many(:addresses, order: :number.asc)
176
174
  end
177
175
 
178
- let(:metadata) do
176
+ let(:association) do
179
177
  klass.relations["addresses"]
180
178
  end
181
179
 
182
- it "adds metadata to klass" do
183
- expect(metadata.order).to_not be_nil
180
+ it "adds association to klass" do
181
+ expect(association.order).to_not be_nil
184
182
  end
185
183
 
186
184
  it "returns Mongoid::Criteria::Queryable::Key" do
187
- expect(metadata.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
185
+ expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
188
186
  end
189
187
  end
190
188
 
@@ -225,7 +223,7 @@ describe Mongoid::Relations::Macros do
225
223
  klass.embeds_one(:name)
226
224
  end
227
225
 
228
- it "adds the metadata to the klass" do
226
+ it "adds the association to the klass" do
229
227
  expect(klass.relations["name"]).to_not be_nil
230
228
  end
231
229
 
@@ -246,8 +244,8 @@ describe Mongoid::Relations::Macros do
246
244
  end
247
245
 
248
246
  it "creates the correct relation" do
249
- expect(klass.relations["name"].relation).to eq(
250
- Mongoid::Relations::Embedded::One
247
+ expect(klass.relations["name"]).to be_a(
248
+ Mongoid::Association::Embedded::EmbedsOne
251
249
  )
252
250
  end
253
251
 
@@ -257,18 +255,27 @@ describe Mongoid::Relations::Macros do
257
255
  )
258
256
  end
259
257
 
260
- context "metadata properties" do
258
+ context 'when an invalid option is provided' do
261
259
 
262
- let(:metadata) do
260
+ it 'raises an InvalidRelationOption exception' do
261
+ expect {
262
+ klass.embeds_one(:name, sandwich: true)
263
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
264
+ end
265
+ end
266
+
267
+ context "association properties" do
268
+
269
+ let(:association) do
263
270
  klass.relations["name"]
264
271
  end
265
272
 
266
273
  it "automatically adds the name" do
267
- expect(metadata.name).to eq(:name)
274
+ expect(association.name).to eq(:name)
268
275
  end
269
276
 
270
277
  it "automatically adds the inverse class name" do
271
- expect(metadata.inverse_class_name).to eq("TestClass")
278
+ expect(association.inverse_class_name).to eq("TestClass")
272
279
  end
273
280
  end
274
281
  end
@@ -328,6 +335,15 @@ describe Mongoid::Relations::Macros do
328
335
 
329
336
  context 'when the relation has options' do
330
337
 
338
+ context 'when an invalid option is provided' do
339
+
340
+ it 'raises an InvalidRelationOption exception' do
341
+ expect {
342
+ klass.belongs_to(:person, sandwich: true)
343
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
344
+ end
345
+ end
346
+
331
347
  context 'when the relation has the option :required' do
332
348
 
333
349
  context 'when the relation does not have the :optional option' do
@@ -620,7 +636,7 @@ describe Mongoid::Relations::Macros do
620
636
  klass.belongs_to(:person)
621
637
  end
622
638
 
623
- it "adds the metadata to the klass" do
639
+ it "adds the association to the klass" do
624
640
  expect(klass.relations["person"]).to_not be_nil
625
641
  end
626
642
 
@@ -641,8 +657,8 @@ describe Mongoid::Relations::Macros do
641
657
  end
642
658
 
643
659
  it "creates the correct relation" do
644
- expect(klass.relations["person"].relation).to eq(
645
- Mongoid::Relations::Referenced::In
660
+ expect(klass.relations["person"]).to be_a(
661
+ Mongoid::Association::Referenced::BelongsTo
646
662
  )
647
663
  end
648
664
 
@@ -650,18 +666,18 @@ describe Mongoid::Relations::Macros do
650
666
  expect(klass.allocate).to respond_to(:person_id)
651
667
  end
652
668
 
653
- context "metadata properties" do
669
+ context "association properties" do
654
670
 
655
- let(:metadata) do
671
+ let(:association) do
656
672
  klass.relations["person"]
657
673
  end
658
674
 
659
675
  it "automatically adds the name" do
660
- expect(metadata.name).to eq(:person)
676
+ expect(association.name).to eq(:person)
661
677
  end
662
678
 
663
679
  it "automatically adds the inverse class name" do
664
- expect(metadata.inverse_class_name).to eq("TestClass")
680
+ expect(association.inverse_class_name).to eq("TestClass")
665
681
  end
666
682
  end
667
683
  end
@@ -692,7 +708,7 @@ describe Mongoid::Relations::Macros do
692
708
  klass.has_many(:posts)
693
709
  end
694
710
 
695
- it "adds the metadata to the klass" do
711
+ it "adds the association to the klass" do
696
712
  expect(klass.relations["posts"]).to_not be_nil
697
713
  end
698
714
 
@@ -705,8 +721,8 @@ describe Mongoid::Relations::Macros do
705
721
  end
706
722
 
707
723
  it "creates the correct relation" do
708
- expect(klass.relations["posts"].relation).to eq(
709
- Mongoid::Relations::Referenced::Many
724
+ expect(klass.relations["posts"]).to be_a(
725
+ Mongoid::Association::Referenced::HasMany
710
726
  )
711
727
  end
712
728
 
@@ -716,18 +732,27 @@ describe Mongoid::Relations::Macros do
716
732
  )
717
733
  end
718
734
 
719
- context "metadata properties" do
735
+ context "association properties" do
720
736
 
721
- let(:metadata) do
737
+ let(:association) do
722
738
  klass.relations["posts"]
723
739
  end
724
740
 
725
741
  it "automatically adds the name" do
726
- expect(metadata.name).to eq(:posts)
742
+ expect(association.name).to eq(:posts)
727
743
  end
728
744
 
729
745
  it "automatically adds the inverse class name" do
730
- expect(metadata.inverse_class_name).to eq("TestClass")
746
+ expect(association.inverse_class_name).to eq("TestClass")
747
+ end
748
+ end
749
+
750
+ context 'when an invalid option is provided' do
751
+
752
+ it 'raises an InvalidRelationOption exception' do
753
+ expect {
754
+ klass.has_many(:names, sandwich: true)
755
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
731
756
  end
732
757
  end
733
758
  end
@@ -738,16 +763,16 @@ describe Mongoid::Relations::Macros do
738
763
  klass.has_many(:posts, order: :rating.asc)
739
764
  end
740
765
 
741
- let(:metadata) do
766
+ let(:association) do
742
767
  klass.relations["posts"]
743
768
  end
744
769
 
745
- it "adds metadata to klass" do
746
- expect(metadata.order).to_not be_nil
770
+ it "adds association to klass" do
771
+ expect(association.order).to_not be_nil
747
772
  end
748
773
 
749
774
  it "returns Mongoid::Criteria::Queryable::Key" do
750
- expect(metadata.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
775
+ expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
751
776
  end
752
777
  end
753
778
 
@@ -784,11 +809,20 @@ describe Mongoid::Relations::Macros do
784
809
  end
785
810
  end
786
811
 
812
+ context 'when an invalid option is provided' do
813
+
814
+ it 'raises an InvalidRelationOption exception' do
815
+ expect {
816
+ klass.has_and_belongs_to_many(:fields, sandwich: true)
817
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
818
+ end
819
+ end
820
+
787
821
  before do
788
822
  klass.has_and_belongs_to_many(:preferences)
789
823
  end
790
824
 
791
- it "adds the metadata to the klass" do
825
+ it "adds the association to the klass" do
792
826
  expect(klass.relations["preferences"]).to_not be_nil
793
827
  end
794
828
 
@@ -801,8 +835,8 @@ describe Mongoid::Relations::Macros do
801
835
  end
802
836
 
803
837
  it "creates the correct relation" do
804
- expect(klass.relations["preferences"].relation).to eq(
805
- Mongoid::Relations::Referenced::ManyToMany
838
+ expect(klass.relations["preferences"]).to be_a(
839
+ Mongoid::Association::Referenced::HasAndBelongsToMany
806
840
  )
807
841
  end
808
842
 
@@ -816,31 +850,31 @@ describe Mongoid::Relations::Macros do
816
850
  klass.has_and_belongs_to_many(:preferences, order: :ranking.asc)
817
851
  end
818
852
 
819
- let(:metadata) do
853
+ let(:association) do
820
854
  klass.relations["preferences"]
821
855
  end
822
856
 
823
- it "adds metadata to klass" do
824
- expect(metadata.order).to_not be_nil
857
+ it "adds association to klass" do
858
+ expect(association.order).to_not be_nil
825
859
  end
826
860
 
827
861
  it "returns Mongoid::Criteria::Queryable::Key" do
828
- expect(metadata.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
862
+ expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
829
863
  end
830
864
  end
831
865
 
832
- context "metadata properties" do
866
+ context "association properties" do
833
867
 
834
- let(:metadata) do
868
+ let(:association) do
835
869
  klass.relations["preferences"]
836
870
  end
837
871
 
838
872
  it "automatically adds the name" do
839
- expect(metadata.name).to eq(:preferences)
873
+ expect(association.name).to eq(:preferences)
840
874
  end
841
875
 
842
876
  it "automatically adds the inverse class name" do
843
- expect(metadata.inverse_class_name).to eq("TestClass")
877
+ expect(association.inverse_class_name).to eq("TestClass")
844
878
  end
845
879
  end
846
880
  end
@@ -867,11 +901,20 @@ describe Mongoid::Relations::Macros do
867
901
  end
868
902
  end
869
903
 
904
+ context 'when an invalid option is provided' do
905
+
906
+ it 'raises an InvalidRelationOption exception' do
907
+ expect {
908
+ klass.has_one(:game, sandwich: true)
909
+ }.to raise_exception(Mongoid::Errors::InvalidRelationOption)
910
+ end
911
+ end
912
+
870
913
  before do
871
914
  klass.has_one(:game)
872
915
  end
873
916
 
874
- it "adds the metadata to the klass" do
917
+ it "adds the association to the klass" do
875
918
  expect(klass.relations["game"]).to_not be_nil
876
919
  end
877
920
 
@@ -892,8 +935,8 @@ describe Mongoid::Relations::Macros do
892
935
  end
893
936
 
894
937
  it "creates the correct relation" do
895
- expect(klass.relations["game"].relation).to eq(
896
- Mongoid::Relations::Referenced::One
938
+ expect(klass.relations["game"]).to be_a(
939
+ Mongoid::Association::Referenced::HasOne
897
940
  )
898
941
  end
899
942
 
@@ -903,18 +946,18 @@ describe Mongoid::Relations::Macros do
903
946
  )
904
947
  end
905
948
 
906
- context "metadata properties" do
949
+ context "association properties" do
907
950
 
908
- let(:metadata) do
951
+ let(:association) do
909
952
  klass.relations["game"]
910
953
  end
911
954
 
912
955
  it "automatically adds the name" do
913
- expect(metadata.name).to eq(:game)
956
+ expect(association.name).to eq(:game)
914
957
  end
915
958
 
916
959
  it "automatically adds the inverse class name" do
917
- expect(metadata.inverse_class_name).to eq("TestClass")
960
+ expect(association.inverse_class_name).to eq("TestClass")
918
961
  end
919
962
  end
920
963
  end
@@ -937,18 +980,26 @@ describe Mongoid::Relations::Macros do
937
980
  klass.embeds_one(:name)
938
981
  end
939
982
 
940
- it "returns a hash of relations" do
941
- expect(klass.allocate.relations).to be_a_kind_of(Hash)
983
+ it "returns a bson document of relations" do
984
+ expect(klass.allocate.relations).to be_a_kind_of(BSON::Document)
942
985
  end
943
986
 
944
987
  it "has keys that are the relation name" do
945
- expect(klass.allocate.relations.keys.first).to eq("name")
988
+ expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
989
+ end
990
+
991
+ it "has keys that can be accessed by a String" do
992
+ expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
946
993
  end
947
994
 
948
- it "has values that are metadata" do
995
+ it "has keys that can be accessed by a Symbol" do
996
+ expect(klass.allocate.relations[:name]).to be_a(Mongoid::Association::Embedded::EmbedsOne)
997
+ end
998
+
999
+ it "has values that are association" do
949
1000
  expect(
950
1001
  klass.allocate.relations.values.first
951
- ).to be_a_kind_of(Mongoid::Relations::Metadata)
1002
+ ).to be_a_kind_of(Mongoid::Association::Embedded::EmbedsOne)
952
1003
  end
953
1004
  end
954
1005
 
@@ -958,18 +1009,22 @@ describe Mongoid::Relations::Macros do
958
1009
  klass.embeds_one(:name)
959
1010
  end
960
1011
 
961
- it "returns a hash of relations" do
962
- expect(klass.relations).to be_a_kind_of(Hash)
1012
+ it "has keys that are the relation name" do
1013
+ expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
1014
+ end
1015
+
1016
+ it "has keys that can be accessed by a String" do
1017
+ expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
963
1018
  end
964
1019
 
965
- it "has keys that are the relation name" do
966
- expect(klass.relations.keys.first).to eq("name")
1020
+ it "has keys that can be accessed by a Symbol" do
1021
+ expect(klass.allocate.relations[:name]).to be_a(Mongoid::Association::Embedded::EmbedsOne)
967
1022
  end
968
1023
 
969
- it "has values that are metadata" do
1024
+ it "has values that are association" do
970
1025
  expect(
971
1026
  klass.relations.values.first
972
- ).to be_a_kind_of(Mongoid::Relations::Metadata)
1027
+ ).to be_a(Mongoid::Association::Embedded::EmbedsOne)
973
1028
  end
974
1029
  end
975
1030