diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2005-07-10 04:22:08 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2005-07-10 04:22:08 +0000 |
commit | 5495b14a096d7f2ac0466f1945a6727e1d3e50c0 (patch) | |
tree | 090f46e31350895a5e589e9794550a372121cf39 /activerecord/test/reflection_test.rb | |
parent | 2abe3d2cd92e5ee55c39f1b4062ccf60043105f7 (diff) | |
download | rails-5495b14a096d7f2ac0466f1945a6727e1d3e50c0.tar.gz rails-5495b14a096d7f2ac0466f1945a6727e1d3e50c0.tar.bz2 rails-5495b14a096d7f2ac0466f1945a6727e1d3e50c0.zip |
r2979@asus: jeremy | 2005-07-10 01:51:00 -0700
Split association reflection test into has_many and has_one tests. TODO: extend to belongs_to and habtm as well. Kill trailing whitespace.
r2980@asus: jeremy | 2005-07-10 01:53:41 -0700
Test that eager load of firm.account (a has_one) returns the correct account. This doesn't cover the regression in Ticket #1688, however. Need a case where class name is not provided and the singular name is over-singularized by active_record.class_name. Kill trailing whitespace.
r2981@asus: jeremy | 2005-07-10 01:56:44 -0700
Fix class name resolution in AssociationReflection#name_to_class_name. Use the equivalent of the idiomatic ||= (read or write if nil) for the class_inheritable_attribute reflection arrays. Kill trailing whitespace.
r2982@asus: jeremy | 2005-07-10 01:59:08 -0700
Remove superfluous assignment in compute_type. In an inject, the return value is used for the next injection, so assigning to the injected value is unnecessary.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1790 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test/reflection_test.rb')
-rw-r--r-- | activerecord/test/reflection_test.rb | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/activerecord/test/reflection_test.rb b/activerecord/test/reflection_test.rb index 1658408d7a..0935b7e5a2 100644 --- a/activerecord/test/reflection_test.rb +++ b/activerecord/test/reflection_test.rb @@ -17,7 +17,7 @@ class ReflectionTest < Test::Unit::TestCase @first.attribute_names ) end - + def test_columns assert_equal 12, Topic.columns.length end @@ -30,7 +30,7 @@ class ReflectionTest < Test::Unit::TestCase def test_content_columns assert_equal 8, Topic.content_columns.length end - + def test_column_string_type_and_limit assert_equal :string, @first.column_for_attribute("title").type assert_equal 255, @first.column_for_attribute("title").limit @@ -39,10 +39,10 @@ class ReflectionTest < Test::Unit::TestCase def test_human_name_for_column assert_equal "Author name", @first.column_for_attribute("author_name").human_name end - + def test_integer_columns assert_equal :integer, @first.column_for_attribute("id").type - end + end def test_aggregation_reflection reflection_for_address = ActiveRecord::Reflection::AggregateReflection.new( @@ -61,23 +61,32 @@ class ReflectionTest < Test::Unit::TestCase [ reflection_for_address, reflection_for_balance, reflection_for_gps_location ], Customer.reflect_on_all_aggregations ) - + assert_equal reflection_for_address, Customer.reflect_on_aggregation(:address) - + assert_equal Address, Customer.reflect_on_aggregation(:address).klass end - - def test_association_reflection - reflection_for_clients = ActiveRecord::Reflection::AssociationReflection.new( - :has_many, :clients, { :order => "id", :dependent => true }, Firm - ) + + def test_has_many_reflection + reflection_for_clients = ActiveRecord::Reflection::AssociationReflection.new(:has_many, :clients, { :order => "id", :dependent => true }, Firm) assert_equal reflection_for_clients, Firm.reflect_on_association(:clients) assert_equal Client, Firm.reflect_on_association(:clients).klass + assert_equal 'companies', Firm.reflect_on_association(:clients).table_name + assert_equal Client, Firm.reflect_on_association(:clients_of_firm).klass + assert_equal 'companies', Firm.reflect_on_association(:clients_of_firm).table_name + end + + def test_has_one_reflection + reflection_for_account = ActiveRecord::Reflection::AssociationReflection.new(:has_one, :account, { :foreign_key => "firm_id", :dependent => true }, Firm) + assert_equal reflection_for_account, Firm.reflect_on_association(:account) + + assert_equal Account, Firm.reflect_on_association(:account).klass + assert_equal 'accounts', Firm.reflect_on_association(:account).table_name end - + def test_association_reflection_in_modules assert_equal MyApplication::Business::Client, MyApplication::Business::Firm.reflect_on_association(:clients_of_firm).klass assert_equal MyApplication::Business::Firm, MyApplication::Billing::Account.reflect_on_association(:firm).klass |