aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/reflection_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2005-07-10 04:22:08 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2005-07-10 04:22:08 +0000
commit5495b14a096d7f2ac0466f1945a6727e1d3e50c0 (patch)
tree090f46e31350895a5e589e9794550a372121cf39 /activerecord/test/reflection_test.rb
parent2abe3d2cd92e5ee55c39f1b4062ccf60043105f7 (diff)
downloadrails-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.rb33
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