Skip to content
This repository
Browse code

Adds test to check that circular preloading does not modify Model.uns…

…coped (as described in #5667)

Conflicts:

	activerecord/test/cases/associations/eager_test.rb
  • Loading branch information...
commit 8491740ca5361ba9df20e1c8b906c709f5bfbc12 1 parent 13f1401
Benedikt Deicke authored April 03, 2012
24  activerecord/test/cases/associations/eager_test.rb
@@ -1095,4 +1095,28 @@ def test_join_eager_with_nil_order_should_generate_valid_sql
1095 1095
       Post.includes(:comments).order(nil).where(:comments => {:body => "Thank you for the welcome"}).first
1096 1096
     end
1097 1097
   end
  1098
+
  1099
+  def test_deep_including_through_habtm
  1100
+    posts = Post.find(:all, :include => {:categories => :categorizations}, :order => "posts.id")
  1101
+    assert_no_queries { assert_equal 2, posts[0].categories[0].categorizations.length }
  1102
+    assert_no_queries { assert_equal 1, posts[0].categories[1].categorizations.length }
  1103
+    assert_no_queries { assert_equal 2, posts[1].categories[0].categorizations.length }
  1104
+  end
  1105
+
  1106
+  test "scoping with a circular preload" do
  1107
+    assert_equal Comment.find(1), Comment.preload(:post => :comments).scoping { Comment.find(1) }
  1108
+  end
  1109
+
  1110
+  test "circular preload does not modify unscoped" do
  1111
+    expected = FirstPost.unscoped.find(2)
  1112
+    FirstPost.preload(:comments => :first_post).find(1)
  1113
+    assert_equal expected, FirstPost.unscoped.find(2)
  1114
+  end
  1115
+
  1116
+  test "preload ignores the scoping" do
  1117
+    assert_equal(
  1118
+      Comment.find(1).post,
  1119
+      Post.where('1 = 0').scoping { Comment.preload(:post).find(1).post }
  1120
+    )
  1121
+  end
1098 1122
 end
4  activerecord/test/cases/relations_test.rb
@@ -1088,10 +1088,6 @@ def test_unscoped_block_style
1088 1088
     assert_equal 'honda', FastCar.unscoped { FastCar.order_using_old_style.limit(1).first.name}
1089 1089
   end
1090 1090
 
1091  
-  def test_unscoped_relation_clones
1092  
-    assert_not_equal CoolCar.unscoped.object_id, CoolCar.unscoped.object_id
1093  
-  end
1094  
-
1095 1091
   def test_intersection_with_array
1096 1092
     relation = Author.where(:name => "David")
1097 1093
     rails_author = relation.first
2  activerecord/test/models/comment.rb
@@ -11,6 +11,8 @@ class Comment < ActiveRecord::Base
11 11
   belongs_to :post, :counter_cache => true
12 12
   has_many :ratings
13 13
 
  14
+  belongs_to :first_post, :foreign_key => :post_id
  15
+
14 16
   has_many :children, :class_name => 'Comment', :foreign_key => :parent_id
15 17
   belongs_to :parent, :class_name => 'Comment', :counter_cache => :children_count
16 18
 

0 notes on commit 8491740

Please sign in to comment.
Something went wrong with that request. Please try again.