aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations/has_one_through_associations_test.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2010-12-24 01:55:35 +0100
committerXavier Noria <fxn@hashref.com>2010-12-24 01:55:35 +0100
commit8cdb75808198bf579e14d0fcdd1d2a51b3233add (patch)
tree9bf4bb54e4175bc805d407e2b5e3bc42bf1d0dd8 /activerecord/test/cases/associations/has_one_through_associations_test.rb
parent3822673151cd0f53e0e4e671988e35603bf2901c (diff)
parent6974c595fd480dc0ae3311ef60920fa87c5ff9d0 (diff)
downloadrails-8cdb75808198bf579e14d0fcdd1d2a51b3233add.tar.gz
rails-8cdb75808198bf579e14d0fcdd1d2a51b3233add.tar.bz2
rails-8cdb75808198bf579e14d0fcdd1d2a51b3233add.zip
Merge branch 'master' of github.com:rails/rails
Diffstat (limited to 'activerecord/test/cases/associations/has_one_through_associations_test.rb')
-rw-r--r--activerecord/test/cases/associations/has_one_through_associations_test.rb39
1 files changed, 34 insertions, 5 deletions
diff --git a/activerecord/test/cases/associations/has_one_through_associations_test.rb b/activerecord/test/cases/associations/has_one_through_associations_test.rb
index 93a4f498d0..7d55d909a7 100644
--- a/activerecord/test/cases/associations/has_one_through_associations_test.rb
+++ b/activerecord/test/cases/associations/has_one_through_associations_test.rb
@@ -25,10 +25,6 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase
assert_equal clubs(:boring_club), @member.club
end
- def test_has_one_through_with_has_many
- assert_equal clubs(:moustache_club), @member.favourite_club
- end
-
def test_creating_association_creates_through_record
new_member = Member.create(:name => "Chris")
new_member.club = Club.create(:name => "LRUG")
@@ -88,6 +84,18 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase
assert_not_nil assert_no_queries {members[0].sponsor_club}
end
+ def test_has_one_through_with_conditions_eager_loading
+ # conditions on the through table
+ assert_equal clubs(:moustache_club), Member.find(@member.id, :include => :favourite_club).favourite_club
+ memberships(:membership_of_favourite_club).update_attribute(:favourite, false)
+ assert_equal nil, Member.find(@member.id, :include => :favourite_club).favourite_club
+
+ # conditions on the source table
+ assert_equal clubs(:moustache_club), Member.find(@member.id, :include => :hairy_club).hairy_club
+ clubs(:moustache_club).update_attribute(:name, "Association of Clean-Shaven Persons")
+ assert_equal nil, Member.find(@member.id, :include => :hairy_club).hairy_club
+ end
+
def test_has_one_through_polymorphic_with_source_type
assert_equal members(:groucho), clubs(:moustache_club).sponsored_member
end
@@ -235,6 +243,27 @@ class HasOneThroughAssociationsTest < ActiveRecord::TestCase
end
def test_has_one_through_with_default_scope_on_join_model
- assert_equal posts(:welcome).comments.first, authors(:david).comment_on_first_posts
+ assert_equal posts(:welcome).comments.order('id').first, authors(:david).comment_on_first_post
+ end
+
+ def test_has_one_through_many_raises_exception
+ assert_raise(ActiveRecord::HasOneThroughCantAssociateThroughCollection) do
+ members(:groucho).club_through_many
+ end
+ end
+
+ def test_has_one_through_belongs_to_should_update_when_the_through_foreign_key_changes
+ minivan = minivans(:cool_first)
+
+ minivan.dashboard
+ proxy = minivan.send(:association_instance_get, :dashboard)
+
+ assert !proxy.stale_target?
+ assert_equal dashboards(:cool_first), minivan.dashboard
+
+ minivan.speedometer_id = speedometers(:second).id
+
+ assert proxy.stale_target?
+ assert_equal dashboards(:second), minivan.dashboard
end
end