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
@@ -7,20 +7,6 @@ describe Mongoid::QueryCache do
7
7
  Mongoid::QueryCache.cache { spec.run }
8
8
  end
9
9
 
10
- before(:all) do
11
- # It is likely that there are other session leaks in the driver
12
- # and/or Mongoid that are unrelated to the query cache. Clear the
13
- # SessionRegistry at the start of these tests in order to detect leaks that
14
- # occur only within the scope of these tests.
15
- #
16
- # Other session leaks will be detected and addressed as part of RUBY-2391.
17
- SessionRegistry.instance.clear_registry
18
- end
19
-
20
- after do
21
- SessionRegistry.instance.verify_sessions_ended!
22
- end
23
-
24
10
  context 'when iterating over objects sharing the same base' do
25
11
 
26
12
  let(:server) do
@@ -52,10 +38,9 @@ describe Mongoid::QueryCache do
52
38
  end
53
39
 
54
40
  it 'queries for each access to the base' do
55
- expect_query(relations.size) do
56
- relations.each do |object|
57
- object.person
58
- end
41
+ expect(server).to receive(:with_connection).exactly(relations.size).times.and_call_original
42
+ relations.each do |object|
43
+ object.person
59
44
  end
60
45
  end
61
46
  end
@@ -67,10 +52,9 @@ describe Mongoid::QueryCache do
67
52
  end
68
53
 
69
54
  it 'queries only once for the base' do
70
- expect_query(1) do
71
- relations.each do |object|
72
- object.person
73
- end
55
+ expect(server).to receive(:with_connection).exactly(1).times.and_call_original
56
+ relations.each do |object|
57
+ object.person
74
58
  end
75
59
  end
76
60
  end
@@ -221,10 +205,6 @@ describe Mongoid::QueryCache do
221
205
  end
222
206
 
223
207
  before do
224
- 10.times do |i|
225
- game.ratings << Rating.create!(value: i+1)
226
- end
227
-
228
208
  game.ratings.where(:value.gt => 5).asc(:id).all.to_a
229
209
  end
230
210
 
@@ -232,9 +212,7 @@ describe Mongoid::QueryCache do
232
212
 
233
213
  it "uses the cache" do
234
214
  expect_no_queries do
235
- result = game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
236
- expect(result.length).to eq(2)
237
- expect(result.map { |r| r['value'] }).to eq([6, 7])
215
+ game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
238
216
  end
239
217
  end
240
218
  end
@@ -247,23 +225,14 @@ describe Mongoid::QueryCache do
247
225
  end
248
226
 
249
227
  before do
250
- 10.times do |i|
251
- game.ratings << Rating.create!(value: i+1)
252
- end
253
-
254
228
  game.ratings.where(:value.gt => 5).limit(3).asc(:id).all.to_a
255
229
  end
256
230
 
257
231
  context "when the next query has a limit" do
258
- # Server versions older than 3.2 also perform a killCursors operation,
259
- # which causes this test to fail.
260
- min_server_version '3.2'
261
232
 
262
233
  it "queries again" do
263
234
  expect_query(1) do
264
- result = game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
265
- expect(result.length).to eq(2)
266
- expect(result.map { |r| r['value'] }).to eq([6, 7])
235
+ game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
267
236
  end
268
237
  end
269
238
  end
@@ -272,9 +241,7 @@ describe Mongoid::QueryCache do
272
241
 
273
242
  it "queries again" do
274
243
  expect_query(1) do
275
- result = game.ratings.where(:value.gt => 5).asc(:id).to_a
276
- expect(result.length).to eq(5)
277
- expect(result.map { |r| r['value'] }).to eq([6, 7, 8, 9, 10])
244
+ game.ratings.where(:value.gt => 5).asc(:id).to_a
278
245
  end
279
246
  end
280
247
  end
@@ -287,34 +254,21 @@ describe Mongoid::QueryCache do
287
254
  end
288
255
 
289
256
  before do
290
- 10.times do |i|
291
- game.ratings << Rating.create!(value: i+1)
292
- end
293
-
294
257
  game.ratings.where(:value.gt => 5).asc(:id).all.to_a
295
258
  end
296
259
 
297
260
  it "does not query again" do
298
261
  expect_no_queries do
299
- result = game.ratings.where(:value.gt => 5).asc(:id).first
300
- expect(result['value']).to eq(6)
262
+ game.ratings.where(:value.gt => 5).asc(:id).first
301
263
  end
302
264
  end
303
265
  end
304
266
 
305
267
  context "when limiting the result" do
306
- before do
307
- Band.destroy_all
308
-
309
- 5.times { |i| Band.create!(name: "Band #{i}") }
310
- Band.all.to_a
311
- end
312
268
 
313
269
  it "does not query again" do
314
270
  expect_query(0) do
315
- result = Band.limit(2).all.to_a
316
- expect(result.length).to eq(2)
317
- expect(result.map { |r| r["name"] }).to eq(["Band 0", "Band 1"])
271
+ Band.limit(2).all.to_a
318
272
  end
319
273
  end
320
274
  end
@@ -322,16 +276,12 @@ describe Mongoid::QueryCache do
322
276
  context "when specifying a different skip value" do
323
277
 
324
278
  before do
325
- Band.destroy_all
326
-
327
- 5.times { |i| Band.create!(name: "Band #{i}") }
279
+ Band.limit(2).skip(1).all.to_a
328
280
  end
329
281
 
330
282
  it "queries again" do
331
283
  expect_query(1) do
332
- result = Band.limit(2).skip(3).all.to_a
333
- expect(result.length).to eq(2)
334
- expect(result.map { |r| r["name"] }).to eq(["Band 3", "Band 4"])
284
+ Band.limit(2).skip(3).all.to_a
335
285
  end
336
286
  end
337
287
  end
@@ -367,25 +317,6 @@ describe Mongoid::QueryCache do
367
317
  end
368
318
  end
369
319
 
370
- context 'when querying colleciton larger than the batch size' do
371
- before do
372
- Band.destroy_all
373
- 101.times { |i| Band.create!(_id: i) }
374
- end
375
-
376
- it 'does not raise an exception when querying multiple times' do
377
- expect do
378
- results1 = Band.all.to_a
379
- expect(results1.length).to eq(101)
380
- expect(results1.map { |band| band["_id"] }).to eq([*0..100])
381
-
382
- results2 = Band.all.to_a
383
- expect(results2.length).to eq(101)
384
- expect(results2.map { |band| band["_id"] }).to eq([*0..100])
385
- end.not_to raise_error
386
- end
387
- end
388
-
389
320
  context "when query caching is enabled and the batch_size is set" do
390
321
 
391
322
  around(:each) do |example|
@@ -497,15 +428,15 @@ describe Mongoid::QueryCache do
497
428
  context "when querying a very large collection" do
498
429
 
499
430
  before do
500
- 100.times { Band.create! }
431
+ 123.times { Band.create! }
501
432
  end
502
433
 
503
434
  it "returns the right number of records" do
504
- expect(Band.all.to_a.length).to eq(100)
435
+ expect(Band.all.to_a.length).to eq(123)
505
436
  end
506
437
 
507
438
  it "#pluck returns the same count of objects" do
508
- expect(Band.pluck(:name).length).to eq(100)
439
+ expect(Band.pluck(:name).length).to eq(123)
509
440
  end
510
441
 
511
442
  context "when loading all the documents" do
@@ -516,12 +447,12 @@ describe Mongoid::QueryCache do
516
447
 
517
448
  it "caches the complete result of the query" do
518
449
  expect_no_queries do
519
- expect(Band.all.to_a.length).to eq(100)
450
+ expect(Band.all.to_a.length).to eq(123)
520
451
  end
521
452
  end
522
453
 
523
454
  it "returns the same count of objects when using #pluck" do
524
- expect(Band.pluck(:name).length).to eq(100)
455
+ expect(Band.pluck(:name).length).to eq(123)
525
456
  end
526
457
  end
527
458
  end
@@ -1,124 +1,124 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Relations::Proxy do
4
-
5
- describe '#with', if: non_legacy_server? do
6
-
7
- let(:circus) do
8
- Circus.new
9
- end
10
-
11
- let(:animal) do
12
- Animal.new
13
- end
14
-
15
- before do
16
- circus.animals << animal
17
- circus.save
18
- end
19
-
20
- it 'uses the new persistence options' do
21
- expect {
22
- animal.with(write: { w: 100 }) do |an|
23
- an.update_attribute(:name, 'kangaroo')
24
- end
25
- }.to raise_exception(Mongo::Error::OperationFailure)
26
- end
27
- end
28
-
29
- describe "#find" do
30
- let(:person) do
31
- Person.create
32
- end
33
-
34
- let(:messages) do
35
- person.messages
36
- end
37
-
38
- let(:msg1) do
39
- messages.create(body: 'msg1')
40
- end
41
-
42
- it "returns nil with no arguments" do
43
- expect(messages.find).to be_nil
44
- expect(messages.send(:find)).to be_nil
45
- expect(messages.__send__(:find)).to be_nil
46
- expect(messages.public_send(:find)).to be_nil
47
- end
48
-
49
- it "returns the object corresponding to the id" do
50
- expect(messages.find(msg1.id)).to eq(msg1)
51
- expect(messages.send(:find, msg1.id)).to eq(msg1)
52
- expect(messages.__send__(:find, msg1.id)).to eq(msg1)
53
- expect(messages.public_send(:find, msg1.id)).to eq(msg1)
54
- end
55
- end
56
-
57
- describe "#extend" do
58
-
59
- before(:all) do
60
- Person.reset_callbacks(:validate)
61
- module Testable
62
- end
63
- end
64
-
65
- after(:all) do
66
- Object.send(:remove_const, :Testable)
67
- end
68
-
69
- let(:person) do
70
- Person.create
71
- end
72
-
73
- let(:name) do
74
- person.build_name
75
- end
76
-
77
- before do
78
- name.namable.extend(Testable)
79
- end
80
-
81
- it "extends the proxied object" do
82
- expect(person).to be_a(Testable)
83
- end
84
-
85
- context "when extending from the relation definition" do
86
-
87
- let!(:address) do
88
- person.addresses.create(street: "hobrecht")
89
- end
90
-
91
- let(:found) do
92
- person.addresses.find_by_street("hobrecht")
93
- end
94
-
95
- it "extends the proxy" do
96
- expect(found).to eq(address)
97
- end
98
- end
99
- end
100
-
101
- describe "equality" do
102
- let(:messages) do
103
- Person.create.messages
104
- end
105
-
106
- it "is #equal? to itself" do
107
- expect(messages.equal?(messages)).to eq(true)
108
- end
109
-
110
- it "is == to itself" do
111
- expect(messages == messages).to eq(true)
112
- end
113
-
114
- it "is not #equal? to its target" do
115
- expect(messages.equal?(messages.target)).to eq(false)
116
- expect(messages.target.equal?(messages)).to eq(false)
117
- end
118
-
119
- it "is == to its target" do
120
- expect(messages == messages.target).to eq(true)
121
- expect(messages.target == messages).to eq(true)
122
- end
123
- end
124
- end
1
+ # require "spec_helper"
2
+ #
3
+ # describe Mongoid::Relations::Proxy do
4
+ #
5
+ # describe '#with', if: non_legacy_server? do
6
+ #
7
+ # let(:circus) do
8
+ # Circus.new
9
+ # end
10
+ #
11
+ # let(:animal) do
12
+ # Animal.new
13
+ # end
14
+ #
15
+ # before do
16
+ # circus.animals << animal
17
+ # circus.save
18
+ # end
19
+ #
20
+ # it 'uses the new persistence options' do
21
+ # expect {
22
+ # animal.with(write: { w: 100 }) do |an|
23
+ # an.update_attribute(:name, 'kangaroo')
24
+ # end
25
+ # }.to raise_exception(Mongo::Error::OperationFailure)
26
+ # end
27
+ # end
28
+ #
29
+ # describe "#find" do
30
+ # let(:person) do
31
+ # Person.create
32
+ # end
33
+ #
34
+ # let(:messages) do
35
+ # person.messages
36
+ # end
37
+ #
38
+ # let(:msg1) do
39
+ # messages.create(body: 'msg1')
40
+ # end
41
+ #
42
+ # it "returns nil with no arguments" do
43
+ # expect(messages.find).to be_nil
44
+ # expect(messages.send(:find)).to be_nil
45
+ # expect(messages.__send__(:find)).to be_nil
46
+ # expect(messages.public_send(:find)).to be_nil
47
+ # end
48
+ #
49
+ # it "returns the object corresponding to the id" do
50
+ # expect(messages.find(msg1.id)).to eq(msg1)
51
+ # expect(messages.send(:find, msg1.id)).to eq(msg1)
52
+ # expect(messages.__send__(:find, msg1.id)).to eq(msg1)
53
+ # expect(messages.public_send(:find, msg1.id)).to eq(msg1)
54
+ # end
55
+ # end
56
+ #
57
+ # describe "#extend" do
58
+ #
59
+ # before(:all) do
60
+ # Person.reset_callbacks(:validate)
61
+ # module Testable
62
+ # end
63
+ # end
64
+ #
65
+ # after(:all) do
66
+ # Object.send(:remove_const, :Testable)
67
+ # end
68
+ #
69
+ # let(:person) do
70
+ # Person.create
71
+ # end
72
+ #
73
+ # let(:name) do
74
+ # person.build_name
75
+ # end
76
+ #
77
+ # before do
78
+ # name.namable.extend(Testable)
79
+ # end
80
+ #
81
+ # it "extends the proxied object" do
82
+ # expect(person).to be_a(Testable)
83
+ # end
84
+ #
85
+ # context "when extending from the relation definition" do
86
+ #
87
+ # let!(:address) do
88
+ # person.addresses.create(street: "hobrecht")
89
+ # end
90
+ #
91
+ # let(:found) do
92
+ # person.addresses.find_by_street("hobrecht")
93
+ # end
94
+ #
95
+ # it "extends the proxy" do
96
+ # expect(found).to eq(address)
97
+ # end
98
+ # end
99
+ # end
100
+ #
101
+ # describe "equality" do
102
+ # let(:messages) do
103
+ # Person.create.messages
104
+ # end
105
+ #
106
+ # it "is #equal? to itself" do
107
+ # expect(messages.equal?(messages)).to eq(true)
108
+ # end
109
+ #
110
+ # it "is == to itself" do
111
+ # expect(messages == messages).to eq(true)
112
+ # end
113
+ #
114
+ # it "is not #equal? to its target" do
115
+ # expect(messages.equal?(messages.target)).to eq(false)
116
+ # expect(messages.target.equal?(messages)).to eq(false)
117
+ # end
118
+ #
119
+ # it "is == to its target" do
120
+ # expect(messages == messages.target).to eq(true)
121
+ # expect(messages.target == messages).to eq(true)
122
+ # end
123
+ # end
124
+ # end