aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-03-28 22:36:29 +0100
committerAaron Patterson <aaron.patterson@gmail.com>2011-04-12 19:46:04 -0700
commitfc9a04b6a69d6821a6f1601e3e0dd518300fa138 (patch)
tree42e1405dd87330364edf815770f89ca76fd99945 /activerecord/test/cases
parenta616e7a88cc35487b979d5f786092ba53aa47135 (diff)
downloadrails-fc9a04b6a69d6821a6f1601e3e0dd518300fa138.tar.gz
rails-fc9a04b6a69d6821a6f1601e3e0dd518300fa138.tar.bz2
rails-fc9a04b6a69d6821a6f1601e3e0dd518300fa138.zip
Removing the scope-caching which happens on association proxies, because the query is already cached by the query cacher. For formalised proof see http://www.youtube.com/watch?v=wDefXLb-FDs
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/named_scope_test.rb25
1 files changed, 15 insertions, 10 deletions
diff --git a/activerecord/test/cases/named_scope_test.rb b/activerecord/test/cases/named_scope_test.rb
index 9b20ea08de..2b3e1900e1 100644
--- a/activerecord/test/cases/named_scope_test.rb
+++ b/activerecord/test/cases/named_scope_test.rb
@@ -440,26 +440,31 @@ class NamedScopeTest < ActiveRecord::TestCase
end
end
+ # Note: these next two are kinda odd because they are essentially just testing that the
+ # query cache works as it should, but they are here for legacy reasons as they was previously
+ # a separate cache on association proxies, and these show that that is not necessary.
def test_scopes_are_cached_on_associations
post = posts(:welcome)
- assert_equal post.comments.containing_the_letter_e.object_id, post.comments.containing_the_letter_e.object_id
-
- post.comments.containing_the_letter_e.all # force load
- assert_no_queries { post.comments.containing_the_letter_e.all }
+ Post.cache do
+ assert_queries(1) { post.comments.containing_the_letter_e.all }
+ assert_no_queries { post.comments.containing_the_letter_e.all }
+ end
end
def test_scopes_with_arguments_are_cached_on_associations
post = posts(:welcome)
- one = post.comments.limit_by(1).all
- assert_equal 1, one.size
+ Post.cache do
+ one = assert_queries(1) { post.comments.limit_by(1).all }
+ assert_equal 1, one.size
- two = post.comments.limit_by(2).all
- assert_equal 2, two.size
+ two = assert_queries(1) { post.comments.limit_by(2).all }
+ assert_equal 2, two.size
- assert_no_queries { post.comments.limit_by(1).all }
- assert_no_queries { post.comments.limit_by(2).all }
+ assert_no_queries { post.comments.limit_by(1).all }
+ assert_no_queries { post.comments.limit_by(2).all }
+ end
end
def test_scopes_are_reset_on_association_reload