aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations
diff options
context:
space:
mode:
authorBenedikt Deicke <benedikt@synatic.net>2012-04-03 21:13:24 +0200
committerBenedikt Deicke <benedikt@synatic.net>2012-04-19 10:01:32 +0200
commit8491740ca5361ba9df20e1c8b906c709f5bfbc12 (patch)
tree85dde5ffd65ff13d4c4a8426109662e242654659 /activerecord/test/cases/associations
parent13f1401a6cf0266a3b0a91b173f976db2d4e50f3 (diff)
downloadrails-8491740ca5361ba9df20e1c8b906c709f5bfbc12.tar.gz
rails-8491740ca5361ba9df20e1c8b906c709f5bfbc12.tar.bz2
rails-8491740ca5361ba9df20e1c8b906c709f5bfbc12.zip
Adds test to check that circular preloading does not modify Model.unscoped (as described in #5667)
Conflicts: activerecord/test/cases/associations/eager_test.rb
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r--activerecord/test/cases/associations/eager_test.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb
index 1dc71ac4cc..4cc1378026 100644
--- a/activerecord/test/cases/associations/eager_test.rb
+++ b/activerecord/test/cases/associations/eager_test.rb
@@ -1095,4 +1095,28 @@ class EagerAssociationTest < ActiveRecord::TestCase
Post.includes(:comments).order(nil).where(:comments => {:body => "Thank you for the welcome"}).first
end
end
+
+ def test_deep_including_through_habtm
+ posts = Post.find(:all, :include => {:categories => :categorizations}, :order => "posts.id")
+ assert_no_queries { assert_equal 2, posts[0].categories[0].categorizations.length }
+ assert_no_queries { assert_equal 1, posts[0].categories[1].categorizations.length }
+ assert_no_queries { assert_equal 2, posts[1].categories[0].categorizations.length }
+ end
+
+ test "scoping with a circular preload" do
+ assert_equal Comment.find(1), Comment.preload(:post => :comments).scoping { Comment.find(1) }
+ end
+
+ test "circular preload does not modify unscoped" do
+ expected = FirstPost.unscoped.find(2)
+ FirstPost.preload(:comments => :first_post).find(1)
+ assert_equal expected, FirstPost.unscoped.find(2)
+ end
+
+ test "preload ignores the scoping" do
+ assert_equal(
+ Comment.find(1).post,
+ Post.where('1 = 0').scoping { Comment.preload(:post).find(1).post }
+ )
+ end
end