From 49c801b71d425543ae88e171b969b3316f022c2a Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 6 Nov 2005 20:39:34 +0000 Subject: Added :include as an option for association declarations [DHH] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2898 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/test/associations_go_eager_test.rb | 25 +++++++++++++++++++++++++ activerecord/test/fixtures/author.rb | 4 ++++ activerecord/test/fixtures/post.rb | 3 +++ 3 files changed, 32 insertions(+) (limited to 'activerecord/test') diff --git a/activerecord/test/associations_go_eager_test.rb b/activerecord/test/associations_go_eager_test.rb index c2e903fa2c..f05e5c6fe2 100644 --- a/activerecord/test/associations_go_eager_test.rb +++ b/activerecord/test/associations_go_eager_test.rb @@ -186,4 +186,29 @@ class EagerAssociationTest < Test::Unit::TestCase assert_nothing_raised { Post.find(:all, :include => 'comments') } end + def test_preconfigured_includes_with_belongs_to + author = posts(:welcome).author_with_posts + assert_equal 5, author.posts.size + end + + def test_preconfigured_includes_with_has_one + comment = posts(:sti_comments).very_special_comment_with_post + assert_equal posts(:sti_comments), comment.post + end + + def test_preconfigured_includes_with_has_many + posts = authors(:david).posts_with_comments + assert_equal 2, posts.first.comments.size + end + + def test_preconfigured_includes_with_habtm + posts = authors(:david).posts_with_categories + assert_equal 2, posts.first.categories.size + end + + def test_preconfigured_includes_with_has_many_and_habtm + posts = authors(:david).posts_with_comments_and_categories + assert_equal 2, posts.first.comments.size + assert_equal 2, posts.first.categories.size + end end diff --git a/activerecord/test/fixtures/author.rb b/activerecord/test/fixtures/author.rb index ea0094de39..c183940c2f 100644 --- a/activerecord/test/fixtures/author.rb +++ b/activerecord/test/fixtures/author.rb @@ -1,5 +1,9 @@ class Author < ActiveRecord::Base has_many :posts + has_many :posts_with_comments, :include => :comments, :class_name => "Post" + has_many :posts_with_categories, :include => :categories, :class_name => "Post" + has_many :posts_with_comments_and_categories, :include => [ :comments, :categories ], :class_name => "Post" + has_many :posts_with_callbacks, :class_name => "Post", :before_add => :log_before_adding, :after_add => :log_after_adding, :before_remove => :log_before_removing, :after_remove => :log_after_removing diff --git a/activerecord/test/fixtures/post.rb b/activerecord/test/fixtures/post.rb index 1697f0a599..bf44d8a0a5 100644 --- a/activerecord/test/fixtures/post.rb +++ b/activerecord/test/fixtures/post.rb @@ -5,6 +5,8 @@ class Post < ActiveRecord::Base end end + belongs_to :author_with_posts, :class_name => "Author", :include => :posts + has_many :comments, :order => "body" do def find_most_recent find(:first, :order => "id DESC") @@ -12,6 +14,7 @@ class Post < ActiveRecord::Base end has_one :very_special_comment + has_one :very_special_comment_with_post, :class_name => "VerySpecialComment", :include => :post has_many :special_comments has_and_belongs_to_many :categories -- cgit v1.2.3