mongoid 6.4.2 → 7.0.3

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 (318) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/config/locales/en.yml +17 -0
  4. data/lib/mongoid/association/accessors.rb +339 -0
  5. data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
  6. data/lib/mongoid/association/builders.rb +92 -0
  7. data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
  8. data/lib/mongoid/association/depending.rb +137 -0
  9. data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
  10. data/lib/mongoid/{relations → association}/embedded/batchable.rb +19 -19
  11. data/lib/mongoid/association/embedded/cyclic.rb +109 -0
  12. data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
  13. data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
  14. data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
  15. data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
  16. data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
  17. data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
  18. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +552 -0
  19. data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
  20. data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
  21. data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
  22. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
  23. data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
  24. data/lib/mongoid/association/embedded.rb +4 -0
  25. data/lib/mongoid/association/macros.rb +204 -0
  26. data/lib/mongoid/{relations → association}/many.rb +19 -49
  27. data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
  28. data/lib/mongoid/association/nested/many.rb +200 -0
  29. data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
  30. data/lib/mongoid/association/nested/one.rb +127 -0
  31. data/lib/mongoid/association/nested.rb +15 -0
  32. data/lib/mongoid/{relations → association}/one.rb +6 -6
  33. data/lib/mongoid/association/options.rb +152 -0
  34. data/lib/mongoid/{relations → association}/proxy.rb +31 -58
  35. data/lib/mongoid/association/referenced/auto_save.rb +79 -0
  36. data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
  37. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
  38. data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
  39. data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
  40. data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
  41. data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
  42. data/lib/mongoid/association/referenced/eager.rb +162 -0
  43. data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
  44. data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
  45. data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
  46. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +312 -0
  47. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
  48. data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
  49. data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
  50. data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
  51. data/lib/mongoid/association/referenced/has_many/enumerable.rb +510 -0
  52. data/lib/mongoid/association/referenced/has_many/proxy.rb +578 -0
  53. data/lib/mongoid/association/referenced/has_many.rb +275 -0
  54. data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
  55. data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
  56. data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
  57. data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
  58. data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
  59. data/lib/mongoid/association/referenced/has_one.rb +204 -0
  60. data/lib/mongoid/association/referenced/syncable.rb +170 -0
  61. data/lib/mongoid/association/referenced.rb +7 -0
  62. data/lib/mongoid/{relations → association}/reflections.rb +21 -17
  63. data/lib/mongoid/association/relatable.rb +509 -0
  64. data/lib/mongoid/{relations.rb → association.rb} +57 -56
  65. data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
  66. data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
  67. data/lib/mongoid/atomic.rb +4 -4
  68. data/lib/mongoid/attributes/dynamic.rb +2 -2
  69. data/lib/mongoid/attributes/nested.rb +22 -11
  70. data/lib/mongoid/attributes/processing.rb +2 -2
  71. data/lib/mongoid/attributes/readonly.rb +2 -4
  72. data/lib/mongoid/attributes.rb +22 -13
  73. data/lib/mongoid/changeable.rb +1 -1
  74. data/lib/mongoid/clients/options.rb +7 -5
  75. data/lib/mongoid/composable.rb +4 -4
  76. data/lib/mongoid/config.rb +1 -0
  77. data/lib/mongoid/contextual/atomic.rb +1 -1
  78. data/lib/mongoid/contextual/geo_near.rb +1 -1
  79. data/lib/mongoid/contextual/memory.rb +21 -3
  80. data/lib/mongoid/contextual/mongo.rb +10 -8
  81. data/lib/mongoid/copyable.rb +7 -6
  82. data/lib/mongoid/criteria/includable.rb +14 -14
  83. data/lib/mongoid/criteria/modifiable.rb +8 -14
  84. data/lib/mongoid/criteria/options.rb +2 -2
  85. data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
  86. data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
  87. data/lib/mongoid/criteria/queryable/selectable.rb +37 -7
  88. data/lib/mongoid/criteria.rb +2 -2
  89. data/lib/mongoid/document.rb +15 -6
  90. data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
  91. data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
  92. data/lib/mongoid/errors/unknown_model.rb +25 -0
  93. data/lib/mongoid/errors.rb +3 -0
  94. data/lib/mongoid/extensions/array.rb +5 -5
  95. data/lib/mongoid/extensions/big_decimal.rb +1 -1
  96. data/lib/mongoid/extensions/hash.rb +5 -2
  97. data/lib/mongoid/extensions/object.rb +4 -4
  98. data/lib/mongoid/extensions/range.rb +1 -0
  99. data/lib/mongoid/extensions/regexp.rb +1 -0
  100. data/lib/mongoid/extensions.rb +0 -4
  101. data/lib/mongoid/factory.rb +13 -3
  102. data/lib/mongoid/fields/foreign_key.rb +5 -5
  103. data/lib/mongoid/fields/standard.rb +2 -14
  104. data/lib/mongoid/fields/validators/macro.rb +1 -1
  105. data/lib/mongoid/fields.rb +3 -3
  106. data/lib/mongoid/indexable.rb +4 -1
  107. data/lib/mongoid/interceptable.rb +5 -5
  108. data/lib/mongoid/matchable/and.rb +1 -1
  109. data/lib/mongoid/matchable/elem_match.rb +9 -3
  110. data/lib/mongoid/matchable/eq.rb +22 -0
  111. data/lib/mongoid/matchable/ne.rb +1 -1
  112. data/lib/mongoid/matchable.rb +3 -1
  113. data/lib/mongoid/persistable/deletable.rb +7 -6
  114. data/lib/mongoid/persistable/incrementable.rb +1 -1
  115. data/lib/mongoid/persistable/logical.rb +1 -1
  116. data/lib/mongoid/persistable/settable.rb +57 -12
  117. data/lib/mongoid/persistable.rb +4 -5
  118. data/lib/mongoid/persistence_context.rb +20 -5
  119. data/lib/mongoid/query_cache.rb +8 -4
  120. data/lib/mongoid/railtie.rb +17 -0
  121. data/lib/mongoid/railties/controller_runtime.rb +86 -0
  122. data/lib/mongoid/scopable.rb +3 -3
  123. data/lib/mongoid/serializable.rb +4 -4
  124. data/lib/mongoid/shardable.rb +1 -1
  125. data/lib/mongoid/threaded.rb +36 -0
  126. data/lib/mongoid/touchable.rb +102 -0
  127. data/lib/mongoid/traversable.rb +3 -3
  128. data/lib/mongoid/validatable/presence.rb +2 -2
  129. data/lib/mongoid/validatable/uniqueness.rb +4 -4
  130. data/lib/mongoid/validatable.rb +8 -8
  131. data/lib/mongoid/version.rb +1 -1
  132. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
  133. data/spec/app/models/animal.rb +2 -1
  134. data/spec/app/models/bomb.rb +1 -1
  135. data/spec/app/models/message.rb +1 -1
  136. data/spec/app/models/minim.rb +7 -0
  137. data/spec/app/models/person.rb +5 -2
  138. data/spec/app/models/shipment_address.rb +1 -0
  139. data/spec/app/models/store_as_dup_test3.rb +7 -0
  140. data/spec/app/models/store_as_dup_test4.rb +7 -0
  141. data/spec/app/models/updatable.rb +7 -0
  142. data/spec/app/models/vertex.rb +6 -0
  143. data/spec/app/models/wiki_page.rb +1 -1
  144. data/spec/config/mongoid.yml +13 -3
  145. data/spec/integration/associations/belongs_to_spec.rb +13 -0
  146. data/spec/lite_spec_helper.rb +56 -0
  147. data/spec/mongoid/{relations → association}/accessors_spec.rb +40 -1
  148. data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
  149. data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
  150. data/spec/mongoid/association/constrainable_spec.rb +115 -0
  151. data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
  152. data/spec/mongoid/association/depending_spec.rb +866 -0
  153. data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
  154. data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
  155. data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
  156. data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
  157. data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
  158. data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
  159. data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
  160. data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
  161. data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +124 -182
  162. data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
  163. data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
  164. data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
  165. data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
  166. data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
  167. data/spec/mongoid/{relations → association}/macros_spec.rb +148 -73
  168. data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
  169. data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
  170. data/spec/mongoid/association/options_spec.rb +1321 -0
  171. data/spec/mongoid/{relations → association}/polymorphic_spec.rb +66 -34
  172. data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
  173. data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
  174. data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +33 -14
  175. data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
  176. data/spec/mongoid/association/referenced/belongs_to_spec.rb +2006 -0
  177. data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
  178. data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
  179. data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +26 -7
  180. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +56 -0
  181. data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
  182. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -0
  183. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
  184. data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
  185. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
  186. data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +26 -11
  187. data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
  188. data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
  189. data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
  190. data/spec/mongoid/association/referenced/has_many_models.rb +37 -0
  191. data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
  192. data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
  193. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
  194. data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
  195. data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
  196. data/spec/mongoid/association/referenced/has_one_models.rb +48 -0
  197. data/spec/mongoid/association/referenced/has_one_spec.rb +1350 -0
  198. data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
  199. data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
  200. data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
  201. data/spec/mongoid/atomic/modifiers_spec.rb +2 -2
  202. data/spec/mongoid/atomic_spec.rb +4 -4
  203. data/spec/mongoid/attributes/nested_spec.rb +29 -11
  204. data/spec/mongoid/attributes/readonly_spec.rb +80 -125
  205. data/spec/mongoid/attributes_spec.rb +38 -2
  206. data/spec/mongoid/clients/factory_spec.rb +24 -18
  207. data/spec/mongoid/clients/options_spec.rb +58 -44
  208. data/spec/mongoid/clients/sessions_spec.rb +1 -1
  209. data/spec/mongoid/clients/transactions_spec.rb +369 -0
  210. data/spec/mongoid/clients_spec.rb +68 -8
  211. data/spec/mongoid/config_spec.rb +27 -1
  212. data/spec/mongoid/contextual/memory_spec.rb +19 -0
  213. data/spec/mongoid/contextual/mongo_spec.rb +33 -5
  214. data/spec/mongoid/copyable_spec.rb +90 -6
  215. data/spec/mongoid/copyable_spec_models.rb +17 -0
  216. data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
  217. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
  218. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +43 -0
  219. data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
  220. data/spec/mongoid/criteria/queryable/selectable_spec.rb +42 -3
  221. data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
  222. data/spec/mongoid/criteria/scopable_spec.rb +81 -0
  223. data/spec/mongoid/criteria_spec.rb +33 -18
  224. data/spec/mongoid/document_spec.rb +83 -4
  225. data/spec/mongoid/extensions/array_spec.rb +11 -15
  226. data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
  227. data/spec/mongoid/extensions/hash_spec.rb +18 -1
  228. data/spec/mongoid/extensions/object_spec.rb +7 -11
  229. data/spec/mongoid/extensions/range_spec.rb +7 -0
  230. data/spec/mongoid/extensions/regexp_spec.rb +23 -0
  231. data/spec/mongoid/factory_spec.rb +19 -1
  232. data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
  233. data/spec/mongoid/fields_spec.rb +2 -2
  234. data/spec/mongoid/findable_spec.rb +1 -1
  235. data/spec/mongoid/indexable_spec.rb +18 -8
  236. data/spec/mongoid/interceptable_spec.rb +22 -1
  237. data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
  238. data/spec/mongoid/matchable/eq_spec.rb +48 -0
  239. data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
  240. data/spec/mongoid/persistable/savable_spec.rb +2 -2
  241. data/spec/mongoid/persistable/settable_spec.rb +95 -10
  242. data/spec/mongoid/persistable_spec.rb +21 -6
  243. data/spec/mongoid/persistence_context_spec.rb +1 -1
  244. data/spec/mongoid/query_cache_spec.rb +61 -22
  245. data/spec/mongoid/relations/proxy_spec.rb +124 -124
  246. data/spec/mongoid/scopable_spec.rb +13 -0
  247. data/spec/mongoid/shardable_spec.rb +32 -12
  248. data/spec/mongoid/threaded_spec.rb +68 -0
  249. data/spec/mongoid/{relations/touchable_spec.rb → touchable_spec.rb} +40 -1
  250. data/spec/mongoid/validatable/associated_spec.rb +1 -1
  251. data/spec/mongoid/validatable/presence_spec.rb +7 -6
  252. data/spec/mongoid/validatable_spec.rb +1 -1
  253. data/spec/rails/controller_extension/controller_runtime_spec.rb +110 -0
  254. data/spec/spec_helper.rb +51 -25
  255. data/spec/support/constraints.rb +101 -0
  256. data/spec/support/macros.rb +20 -0
  257. data/spec/support/spec_config.rb +39 -0
  258. metadata +602 -582
  259. checksums.yaml.gz.sig +0 -2
  260. data/lib/mongoid/relations/accessors.rb +0 -267
  261. data/lib/mongoid/relations/auto_save.rb +0 -94
  262. data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
  263. data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
  264. data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
  265. data/lib/mongoid/relations/bindings.rb +0 -9
  266. data/lib/mongoid/relations/builder.rb +0 -57
  267. data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
  268. data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
  269. data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
  270. data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
  271. data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
  272. data/lib/mongoid/relations/builders.rb +0 -106
  273. data/lib/mongoid/relations/cascading/delete.rb +0 -44
  274. data/lib/mongoid/relations/cascading/destroy.rb +0 -43
  275. data/lib/mongoid/relations/cascading/nullify.rb +0 -35
  276. data/lib/mongoid/relations/cascading/restrict.rb +0 -39
  277. data/lib/mongoid/relations/cascading.rb +0 -56
  278. data/lib/mongoid/relations/conversions.rb +0 -34
  279. data/lib/mongoid/relations/counter_cache.rb +0 -160
  280. data/lib/mongoid/relations/cyclic.rb +0 -107
  281. data/lib/mongoid/relations/eager/base.rb +0 -153
  282. data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
  283. data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
  284. data/lib/mongoid/relations/eager/has_many.rb +0 -38
  285. data/lib/mongoid/relations/eager/has_one.rb +0 -30
  286. data/lib/mongoid/relations/embedded/in.rb +0 -241
  287. data/lib/mongoid/relations/embedded/many.rb +0 -683
  288. data/lib/mongoid/relations/embedded/one.rb +0 -235
  289. data/lib/mongoid/relations/macros.rb +0 -367
  290. data/lib/mongoid/relations/metadata.rb +0 -1179
  291. data/lib/mongoid/relations/nested_builder.rb +0 -74
  292. data/lib/mongoid/relations/options.rb +0 -49
  293. data/lib/mongoid/relations/polymorphic.rb +0 -39
  294. data/lib/mongoid/relations/referenced/in.rb +0 -304
  295. data/lib/mongoid/relations/referenced/many.rb +0 -812
  296. data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
  297. data/lib/mongoid/relations/referenced/one.rb +0 -290
  298. data/lib/mongoid/relations/synchronization.rb +0 -169
  299. data/lib/mongoid/relations/targets/enumerable.rb +0 -493
  300. data/lib/mongoid/relations/targets.rb +0 -2
  301. data/lib/mongoid/relations/touchable.rb +0 -97
  302. data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
  303. data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
  304. data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
  305. data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
  306. data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
  307. data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
  308. data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
  309. data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
  310. data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
  311. data/spec/mongoid/relations/cascading_spec.rb +0 -355
  312. data/spec/mongoid/relations/constraint_spec.rb +0 -75
  313. data/spec/mongoid/relations/conversions_spec.rb +0 -128
  314. data/spec/mongoid/relations/metadata_spec.rb +0 -1985
  315. data/spec/mongoid/relations/options_spec.rb +0 -35
  316. data.tar.gz.sig +0 -0
  317. metadata.gz.sig +0 -0
  318. /data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
@@ -1,184 +0,0 @@
1
- require "spec_helper"
2
-
3
- # describe Mongoid::Fields::Internal::ForeignKeys::Array do
4
-
5
- # describe "#add_atomic_changes" do
6
-
7
- # let(:field) do
8
- # described_class.instantiate(
9
- # :vals,
10
- # metadata: Person.relations["preferences"],
11
- # type: Array,
12
- # default: [],
13
- # identity: true
14
- # )
15
- # end
16
-
17
- # let(:person) do
18
- # Person.new
19
- # end
20
-
21
- # let(:preference_one) do
22
- # Preference.new
23
- # end
24
-
25
- # let(:preference_two) do
26
- # Preference.new
27
- # end
28
-
29
- # let(:preference_three) do
30
- # Preference.new
31
- # end
32
-
33
- # let(:mods) do
34
- # {}
35
- # end
36
-
37
- # before do
38
- # person.preferences.concat(preference_one, preference_three)
39
- # end
40
-
41
- # context "when adding and removing" do
42
-
43
- # before do
44
- # field.add_atomic_changes(
45
- # person, "preference_ids", "preference_ids", mods, [ preference_three.id ], [ preference_two.id ]
46
- # )
47
- # end
48
-
49
- # it "adds the current to the modifications" do
50
- # expect(mods["preference_ids"]).to eq(
51
- # [ preference_one.id, preference_three.id ]
52
- # )
53
- # end
54
- # end
55
- # end
56
-
57
- # describe "#eval_default" do
58
-
59
- # let(:default) do
60
- # [ BSON::ObjectId.new ]
61
- # end
62
-
63
- # let(:field) do
64
- # described_class.instantiate(
65
- # :vals,
66
- # metadata: Person.relations["posts"],
67
- # type: Array,
68
- # default: default,
69
- # identity: true
70
- # )
71
- # end
72
-
73
- # it "dups the default value" do
74
- # expect(field.eval_default(nil)).to_not equal(default)
75
- # end
76
-
77
- # it "returns the correct value" do
78
- # expect(field.eval_default(nil)).to eq(default)
79
- # end
80
- # end
81
-
82
- # describe "#foreign_key?" do
83
-
84
- # let(:field) do
85
- # described_class.instantiate(
86
- # :vals,
87
- # metadata: Person.relations["posts"],
88
- # type: Array,
89
- # default: [],
90
- # identity: true
91
- # )
92
- # end
93
-
94
- # it "returns true" do
95
- # expect(field).to be_foreign_key
96
- # end
97
- # end
98
-
99
- # describe "#serialize" do
100
-
101
- # context "when the array is object ids" do
102
-
103
- # let(:metadata) do
104
- # Mongoid::Relations::Metadata.new(
105
- # inverse_class_name: "Game",
106
- # name: :person,
107
- # relation: Mongoid::Relations::Referenced::In
108
- # )
109
- # end
110
-
111
- # let(:field) do
112
- # described_class.instantiate(
113
- # :vals,
114
- # type: Array,
115
- # default: [],
116
- # identity: true,
117
- # metadata: metadata
118
- # )
119
- # end
120
-
121
- # context "when provided nil" do
122
-
123
- # it "returns an empty array" do
124
- # expect(field.serialize(nil)).to be_empty
125
- # end
126
- # end
127
-
128
- # context "when provided an empty array" do
129
-
130
- # let(:array) do
131
- # []
132
- # end
133
-
134
- # it "returns an empty array" do
135
- # expect(field.serialize(array)).to eq(array)
136
- # end
137
-
138
- # it "returns the same instance" do
139
- # expect(field.serialize(array)).to equal(array)
140
- # end
141
- # end
142
-
143
- # context "when using object ids" do
144
-
145
- # let(:object_id) do
146
- # BSON::ObjectId.new
147
- # end
148
-
149
- # it "performs conversion on the ids if strings" do
150
- # expect(field.serialize([object_id.to_s])).to eq([object_id])
151
- # end
152
- # end
153
-
154
- # context "when not using object ids" do
155
-
156
- # let(:object_id) do
157
- # BSON::ObjectId.new
158
- # end
159
-
160
- # before do
161
- # Person.field(
162
- # :_id,
163
- # type: String,
164
- # pre_processed: true,
165
- # default: ->{ BSON::ObjectId.new.to_s }
166
- # )
167
- # end
168
-
169
- # after do
170
- # Person.field(
171
- # :_id,
172
- # type: BSON::ObjectId,
173
- # pre_processed: true,
174
- # default: ->{ BSON::ObjectId.new }
175
- # )
176
- # end
177
-
178
- # it "does not convert" do
179
- # expect(field.serialize([object_id.to_s])).to eq([object_id.to_s])
180
- # end
181
- # end
182
- # end
183
- # end
184
- # end
@@ -1,201 +0,0 @@
1
- require "spec_helper"
2
-
3
- # describe Mongoid::Fields::Internal::ForeignKeys::Object do
4
-
5
- # describe "#foreign_key?" do
6
-
7
- # let(:field) do
8
- # described_class.instantiate(
9
- # :vals,
10
- # metadata: Person.relations["posts"],
11
- # type: Object,
12
- # default: [],
13
- # identity: true
14
- # )
15
- # end
16
-
17
- # it "returns true" do
18
- # expect(field).to be_foreign_key
19
- # end
20
- # end
21
-
22
- # describe "#serialize" do
23
-
24
- # context "when the array is object ids" do
25
-
26
- # let(:metadata) do
27
- # Mongoid::Relations::Metadata.new(
28
- # inverse_class_name: "Game",
29
- # name: :person,
30
- # relation: Mongoid::Relations::Referenced::In
31
- # )
32
- # end
33
-
34
- # let(:field) do
35
- # described_class.instantiate(
36
- # :vals,
37
- # type: Object,
38
- # default: nil,
39
- # identity: true,
40
- # metadata: metadata
41
- # )
42
- # end
43
-
44
- # context "when using object ids" do
45
-
46
- # let(:object_id) do
47
- # BSON::ObjectId.new
48
- # end
49
-
50
- # it "performs conversion on the ids if strings" do
51
- # expect(field.serialize(object_id.to_s)).to eq(object_id)
52
- # end
53
- # end
54
-
55
- # context "when not using object ids" do
56
-
57
- # context "when using strings" do
58
-
59
- # context "when provided a string" do
60
-
61
- # let(:object_id) do
62
- # BSON::ObjectId.new
63
- # end
64
-
65
- # before do
66
- # Person.field(
67
- # :_id,
68
- # type: String,
69
- # pre_processed: true,
70
- # default: ->{ BSON::ObjectId.new.to_s }
71
- # )
72
- # end
73
-
74
- # after do
75
- # Person.field(
76
- # :_id,
77
- # type: BSON::ObjectId,
78
- # pre_processed: true,
79
- # default: ->{ BSON::ObjectId.new }
80
- # )
81
- # end
82
-
83
- # it "does not convert" do
84
- # expect(field.serialize(object_id.to_s)).to eq(object_id.to_s)
85
- # end
86
- # end
87
-
88
- # context "when provided a hash" do
89
-
90
- # let(:object_id) do
91
- # BSON::ObjectId.new
92
- # end
93
-
94
- # before do
95
- # Person.field(
96
- # :_id,
97
- # type: String,
98
- # pre_processed: true,
99
- # default: ->{ BSON::ObjectId.new.to_s }
100
- # )
101
- # end
102
-
103
- # after do
104
- # Person.field(
105
- # :_id,
106
- # type: BSON::ObjectId,
107
- # pre_processed: true,
108
- # default: ->{ BSON::ObjectId.new }
109
- # )
110
- # end
111
-
112
- # let(:criterion) do
113
- # { "$in" => [ object_id.to_s ] }
114
- # end
115
-
116
- # it "does not convert" do
117
- # expect(field.serialize(criterion)).to eq(
118
- # criterion
119
- # )
120
- # end
121
- # end
122
- # end
123
-
124
- # context "when using integers" do
125
-
126
- # context "when provided a string" do
127
-
128
- # before do
129
- # Person.field(:_id, type: Integer)
130
- # end
131
-
132
- # after do
133
- # Person.field(
134
- # :_id,
135
- # type: BSON::ObjectId,
136
- # pre_processed: true,
137
- # default: ->{ BSON::ObjectId.new }
138
- # )
139
- # end
140
-
141
- # it "does not convert" do
142
- # expect(field.serialize("1")).to eq(1)
143
- # end
144
- # end
145
-
146
- # context "when provided a hash with a string value" do
147
-
148
- # before do
149
- # Person.field(:_id, type: Integer)
150
- # end
151
-
152
- # after do
153
- # Person.field(
154
- # :_id,
155
- # type: BSON::ObjectId,
156
- # pre_processed: true,
157
- # default: ->{ BSON::ObjectId.new }
158
- # )
159
- # end
160
-
161
- # let(:criterion) do
162
- # { "$eq" => "1" }
163
- # end
164
-
165
- # it "does not convert" do
166
- # expect(field.serialize(criterion)).to eq(
167
- # { "$eq" => 1 }
168
- # )
169
- # end
170
- # end
171
-
172
- # context "when provided a hash with an array of string values" do
173
-
174
- # before do
175
- # Person.field(:_id, type: Integer)
176
- # end
177
-
178
- # after do
179
- # Person.field(
180
- # :_id,
181
- # type: BSON::ObjectId,
182
- # pre_processed: true,
183
- # default: ->{ BSON::ObjectId.new }
184
- # )
185
- # end
186
-
187
- # let(:criterion) do
188
- # { "$in" => [ "1" ] }
189
- # end
190
-
191
- # it "does not convert" do
192
- # expect(field.serialize(criterion)).to eq(
193
- # { "$in" => [ 1 ] }
194
- # )
195
- # end
196
- # end
197
- # end
198
- # end
199
- # end
200
- # end
201
- # end
@@ -1,137 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Relations::Builders::Referenced::Many do
4
-
5
- let(:base) do
6
- double
7
- end
8
-
9
- describe "#build" do
10
-
11
- let(:criteria) do
12
- double(klass: Post, selector: { "person_id" => "" }, selector_with_type_selection: { "person_id" => "" })
13
- end
14
-
15
- let(:metadata) do
16
- double(
17
- klass: Post,
18
- name: :posts,
19
- foreign_key: "person_id",
20
- inverse_klass: Person,
21
- criteria: criteria,
22
- )
23
- end
24
-
25
- let(:builder) do
26
- described_class.new(base, metadata, object)
27
- end
28
-
29
- context "when provided an id" do
30
-
31
- let(:object_id) do
32
- BSON::ObjectId.new
33
- end
34
-
35
- let(:object) do
36
- object_id
37
- end
38
-
39
- let(:post) do
40
- double
41
- end
42
-
43
- let(:documents) do
44
- builder.build
45
- end
46
-
47
- it "sets the documents" do
48
- expect(documents).to eq(criteria)
49
- end
50
- end
51
-
52
- context "when order specified" do
53
-
54
- let(:metadata) do
55
- double(
56
- klass: Post,
57
- name: :posts,
58
- foreign_key: "person_id",
59
- inverse_klass: Person,
60
- order: :rating.asc,
61
- criteria: criteria
62
- )
63
- end
64
-
65
- let(:object_id) do
66
- BSON::ObjectId.new
67
- end
68
-
69
- let(:object) do
70
- object_id
71
- end
72
-
73
- let(:post) do
74
- double
75
- end
76
-
77
- let(:documents) do
78
- builder.build
79
- end
80
-
81
- it "ordered by specified filed" do
82
- expect(documents).to eq(criteria)
83
- end
84
- end
85
-
86
- context "when provided a object" do
87
-
88
- let(:metadata) do
89
- double(
90
- klass: Post,
91
- name: :posts,
92
- foreign_key: "person_id",
93
- inverse_klass: Person
94
- )
95
- end
96
-
97
- let(:object) do
98
- [ Person.new ]
99
- end
100
-
101
- let(:documents) do
102
- builder.build
103
- end
104
-
105
- it "returns the object" do
106
- expect(documents).to eq(object)
107
- end
108
- end
109
- end
110
-
111
- describe "#build" do
112
-
113
- let(:person) do
114
- Person.new
115
- end
116
-
117
- context "when no documents found in the database" do
118
-
119
- context "when the ids are empty" do
120
-
121
- it "returns an empty array" do
122
- expect(person.posts).to be_empty
123
- end
124
-
125
- context "during initialization" do
126
-
127
- it "returns an empty array" do
128
- Person.new do |p|
129
- expect(p.posts).to be_empty
130
- expect(p.posts.__metadata).to_not be_nil
131
- end
132
- end
133
- end
134
- end
135
- end
136
- end
137
- end
@@ -1,178 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Relations::Builders::Referenced::ManyToMany do
4
-
5
- let(:person) do
6
- Person.new
7
- end
8
-
9
- let(:base) do
10
- double
11
- end
12
-
13
- describe "#build" do
14
-
15
- let(:criteria) do
16
- double(klass: Preference, selector: { "_id" => { "$in" => [] }})
17
- end
18
-
19
- let(:metadata) do
20
- double(
21
- klass: Preference,
22
- name: :preferences,
23
- foreign_key: "preference_ids",
24
- criteria: criteria
25
- )
26
- end
27
-
28
- let(:builder) do
29
- described_class.new(base, metadata, object)
30
- end
31
-
32
- context "when provided ids" do
33
-
34
- let(:object_id) do
35
- BSON::ObjectId.new
36
- end
37
-
38
- let(:object) do
39
- [ object_id ]
40
- end
41
-
42
- let(:preference) do
43
- double
44
- end
45
-
46
- let(:documents) do
47
- builder.build
48
- end
49
-
50
- it "sets the documents" do
51
- expect(documents).to eq(criteria)
52
- end
53
- end
54
-
55
- context "when order specified" do
56
-
57
- let(:metadata) do
58
- double(
59
- klass: Post,
60
- name: :preferences,
61
- foreign_key: "person_id",
62
- inverse_klass: Person,
63
- order: :rating.asc,
64
- criteria: criteria
65
- )
66
- end
67
-
68
- let(:object_id) do
69
- BSON::ObjectId.new
70
- end
71
-
72
- let(:object) do
73
- [ object_id ]
74
- end
75
-
76
- let(:preference) do
77
- double
78
- end
79
-
80
- let(:documents) do
81
- builder.build
82
- end
83
-
84
- it "ordered by specified filed" do
85
- expect(documents).to eq(criteria)
86
- end
87
- end
88
-
89
- context "when provided a object" do
90
-
91
- context "when the object is not nil" do
92
-
93
- let(:object) do
94
- [ Post.new ]
95
- end
96
-
97
- let(:preference) do
98
- double
99
- end
100
-
101
- let!(:documents) do
102
- builder.build
103
- end
104
-
105
- it "returns the objects" do
106
- expect(documents).to eq(object)
107
- end
108
- end
109
-
110
- context "when the object is nil" do
111
-
112
- let(:metadata) do
113
- double(
114
- klass: Post,
115
- name: :preferences,
116
- foreign_key: "preference_ids",
117
- criteria: criteria
118
- )
119
- end
120
-
121
- let(:object) do
122
- nil
123
- end
124
-
125
- let!(:documents) do
126
- builder.build
127
- end
128
-
129
- it "returns the object" do
130
- expect(documents).to eq(criteria)
131
- end
132
- end
133
- end
134
- end
135
-
136
- describe "#build" do
137
-
138
- let(:person) do
139
- Person.new
140
- end
141
-
142
- context "when no documents found in the database" do
143
-
144
- context "when the ids are empty" do
145
-
146
- it "returns an empty array" do
147
- expect(person.preferences).to be_empty
148
- end
149
- end
150
-
151
- context "when the ids are incorrect" do
152
-
153
- before do
154
- person.preference_ids = [ BSON::ObjectId.new ]
155
- end
156
-
157
- it "returns an empty array" do
158
- expect(person.preferences).to be_empty
159
- end
160
- end
161
- end
162
- end
163
-
164
- context "when the foreign key is nil" do
165
-
166
- let(:builder) do
167
- described_class.new(person, Person.relations["preferences"], nil)
168
- end
169
-
170
- let(:criteria) do
171
- builder.build
172
- end
173
-
174
- it "returns the criteria" do
175
- expect(criteria).to be_empty
176
- end
177
- end
178
- end