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,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,209 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe Mongoid::Matchable::Nor do
6
-
7
- let(:target) do
8
- Person.new
9
- end
10
-
11
- let(:matcher) do
12
- described_class.new("value", target)
13
- end
14
-
15
- describe "#_matches?" do
16
-
17
- context "when provided a simple expression" do
18
-
19
- context "when one of the hashes does not match model" do
20
-
21
- let(:matches) do
22
- matcher._matches?(
23
- [ { title: "Sir" }, { title: "King" } ]
24
- )
25
- end
26
-
27
- let(:target) do
28
- Person.new(title: 'Queen')
29
- end
30
-
31
- it "returns true" do
32
- expect(matches).to be true
33
- end
34
- end
35
-
36
- context "when all of the hashes match different fields in model" do
37
- let(:matches) do
38
- matcher._matches?(
39
- [ { age: 10 }, { title: "King" } ]
40
- )
41
- end
42
-
43
- let(:target) do
44
- Person.new(title: 'King', age: 10)
45
- end
46
-
47
- it "returns false" do
48
- expect(matches).to be false
49
- end
50
- end
51
-
52
- context "when one of the hashes matches an array field in model" do
53
- let(:matches) do
54
- matcher._matches?(
55
- [ { af: "Sir" }, { af: "King" } ]
56
- )
57
- end
58
-
59
- let(:target) do
60
- ArrayField.new(af: ['King'])
61
- end
62
-
63
- it "returns false" do
64
- expect(matches).to be false
65
- end
66
- end
67
-
68
- context "when none of the hashes matches an array field in model" do
69
- let(:matches) do
70
- matcher._matches?(
71
- [ { af: "Sir" }, { af: "King" } ]
72
- )
73
- end
74
-
75
- let(:target) do
76
- ArrayField.new(af: ['Boo'])
77
- end
78
-
79
- it "returns true" do
80
- expect(matches).to be true
81
- end
82
- end
83
-
84
- context "when there are no criteria" do
85
-
86
- it "returns false" do
87
- expect(matcher._matches?([])).to be false
88
- end
89
- end
90
-
91
- # $nor with $not is a double negation.
92
- # Whatever the argument of $not is is what the overall condition
93
- # is looking for.
94
- context "when the expression is a $not" do
95
-
96
- let(:matches) do
97
- matcher._matches?([ { title: {:$not => /Foobar/ } }])
98
- end
99
-
100
- context "when the value does not match $not argument" do
101
-
102
- let(:target) do
103
- Person.new(title: 'test')
104
- end
105
-
106
- it "returns false" do
107
- expect(matches).to be false
108
- end
109
- end
110
-
111
- context "when the value matches $not argument" do
112
-
113
- let(:target) do
114
- Person.new(title: 'Foobar baz')
115
- end
116
-
117
- it "returns true" do
118
- expect(matches).to be true
119
- end
120
- end
121
- end
122
- end
123
-
124
- context "when provided a complex expression" do
125
-
126
- context "when none of the model values match criteria values" do
127
-
128
- let(:matches) do
129
- matcher._matches?(
130
- [
131
- { title: { "$in" => [ "Sir", "Madam" ] } },
132
- { title: "King" }
133
- ]
134
- )
135
- end
136
-
137
- let(:target) do
138
- Person.new(title: 'Queen')
139
- end
140
-
141
- it "returns true" do
142
- expect(matches).to be true
143
- end
144
- end
145
-
146
- context "when there is a matching value" do
147
-
148
- let(:matches) do
149
- matcher._matches?(
150
- [
151
- { title: { "$in" => [ "Prince", "Madam" ] } },
152
- { title: "King" }
153
- ]
154
- )
155
- end
156
-
157
- let(:target) do
158
- Person.new(title: 'Prince')
159
- end
160
-
161
- it "returns false" do
162
- expect(matches).to be false
163
- end
164
- end
165
-
166
- context "when expression contain multiple fields" do
167
-
168
- let(:matches) do
169
- matcher._matches?(
170
- [
171
- { title: "Sir", age: 23 },
172
- { title: "King", age: 100 }
173
- ]
174
- )
175
- end
176
-
177
- context 'and model has different values in all of the fields' do
178
- let(:target) do
179
- Person.new(title: 'Queen', age: 10)
180
- end
181
-
182
- it "returns true" do
183
- expect(matches).to be true
184
- end
185
- end
186
-
187
- context 'and model has identical value in one of the fields' do
188
- let(:target) do
189
- Person.new(title: 'Queen', age: 23)
190
- end
191
-
192
- it "returns true" do
193
- expect(matches).to be true
194
- end
195
- end
196
-
197
- context 'and model has identical values in all of the fields' do
198
- let(:target) do
199
- Person.new(title: 'Sir', age: 23)
200
- end
201
-
202
- it "returns false" do
203
- expect(matches).to be false
204
- end
205
- end
206
- end
207
- end
208
- end
209
- end