aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/primary_keys_test.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2011-12-16 11:46:34 +0000
committerJon Leighton <j@jonathanleighton.com>2011-12-16 13:52:07 +0000
commit0b08ff7d92124cc370e9f0795d1559204f04f9a4 (patch)
tree3f7e8a98b782952e12d872f20cb7603d1b014d13 /activerecord/test/cases/primary_keys_test.rb
parent4fe76f4f272571bb88aa54af1d7e6bcad413c6e1 (diff)
downloadrails-0b08ff7d92124cc370e9f0795d1559204f04f9a4.tar.gz
rails-0b08ff7d92124cc370e9f0795d1559204f04f9a4.tar.bz2
rails-0b08ff7d92124cc370e9f0795d1559204f04f9a4.zip
Cache columns at the model level.
Allows two models to use the same table but have different primary keys.
Diffstat (limited to 'activerecord/test/cases/primary_keys_test.rb')
-rw-r--r--activerecord/test/cases/primary_keys_test.rb38
1 files changed, 30 insertions, 8 deletions
diff --git a/activerecord/test/cases/primary_keys_test.rb b/activerecord/test/cases/primary_keys_test.rb
index a02dcb9e1c..0669707baf 100644
--- a/activerecord/test/cases/primary_keys_test.rb
+++ b/activerecord/test/cases/primary_keys_test.rb
@@ -149,14 +149,36 @@ class PrimaryKeysTest < ActiveRecord::TestCase
assert_equal k.connection.quote_column_name("foo"), k.quoted_primary_key
end
- def test_set_primary_key_sets_schema_cache
- klass = Class.new(ActiveRecord::Base)
- klass.table_name = 'fuuuuuu'
- klass.connection.create_table(:fuuuuuu, :id => false) { |t| t.integer :omg }
- klass.primary_key = 'omg'
- assert klass.connection.schema_cache.columns_hash['fuuuuuu']['omg'].primary
- ensure
- klass.connection.drop_table(:fuuuuuu) if klass.table_exists?
+ def test_two_models_with_same_table_but_different_primary_key
+ k1 = Class.new(ActiveRecord::Base)
+ k1.table_name = 'posts'
+ k1.primary_key = 'id'
+
+ k2 = Class.new(ActiveRecord::Base)
+ k2.table_name = 'posts'
+ k2.primary_key = 'title'
+
+ assert k1.columns.find { |c| c.name == 'id' }.primary
+ assert !k1.columns.find { |c| c.name == 'title' }.primary
+ assert k1.columns_hash['id'].primary
+ assert !k1.columns_hash['title'].primary
+
+ assert !k2.columns.find { |c| c.name == 'id' }.primary
+ assert k2.columns.find { |c| c.name == 'title' }.primary
+ assert !k2.columns_hash['id'].primary
+ assert k2.columns_hash['title'].primary
+ end
+
+ def test_models_with_same_table_have_different_columns
+ k1 = Class.new(ActiveRecord::Base)
+ k1.table_name = 'posts'
+
+ k2 = Class.new(ActiveRecord::Base)
+ k2.table_name = 'posts'
+
+ k1.columns.zip(k2.columns).each do |col1, col2|
+ assert !col1.equal?(col2)
+ end
end
end