aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/hot_compatibility_test.rb
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2012-09-28 18:07:25 +0100
committerJon Leighton <j@jonathanleighton.com>2012-09-28 18:08:14 +0100
commitd14da793340ca49c0049257af892a204cba43092 (patch)
tree0f2109590a876fe7a7a5e0cf4b03468debcd2d71 /activerecord/test/cases/hot_compatibility_test.rb
parent144e8691cbfb8bba77f18cfe68d5e7fd48887f5e (diff)
downloadrails-d14da793340ca49c0049257af892a204cba43092.tar.gz
rails-d14da793340ca49c0049257af892a204cba43092.tar.bz2
rails-d14da793340ca49c0049257af892a204cba43092.zip
Add an explicit test for hot compatibility
Diffstat (limited to 'activerecord/test/cases/hot_compatibility_test.rb')
-rw-r--r--activerecord/test/cases/hot_compatibility_test.rb54
1 files changed, 54 insertions, 0 deletions
diff --git a/activerecord/test/cases/hot_compatibility_test.rb b/activerecord/test/cases/hot_compatibility_test.rb
new file mode 100644
index 0000000000..96e581ab4c
--- /dev/null
+++ b/activerecord/test/cases/hot_compatibility_test.rb
@@ -0,0 +1,54 @@
+require 'cases/helper'
+
+class HotCompatibilityTest < ActiveRecord::TestCase
+ self.use_transactional_fixtures = false
+
+ setup do
+ @klass = Class.new(ActiveRecord::Base) do
+ connection.create_table :hot_compatibilities do |t|
+ t.string :foo
+ t.string :bar
+ end
+
+ def self.name; 'HotCompatibility'; end
+ end
+ end
+
+ teardown do
+ @klass.connection.drop_table :hot_compatibilities
+ end
+
+ test "insert after remove_column" do
+ # warm cache
+ @klass.create!
+
+ # we have 3 columns
+ assert_equal 3, @klass.columns.length
+
+ # remove one of them
+ @klass.connection.remove_column :hot_compatibilities, :bar
+
+ # we still have 3 columns in the cache
+ assert_equal 3, @klass.columns.length
+
+ # but we can successfully create a record so long as we don't
+ # reference the removed column
+ record = @klass.create! foo: 'foo'
+ record.reload
+ assert_equal 'foo', record.foo
+ end
+
+ test "update after remove_column" do
+ record = @klass.create! foo: 'foo'
+ assert_equal 3, @klass.columns.length
+ @klass.connection.remove_column :hot_compatibilities, :bar
+ assert_equal 3, @klass.columns.length
+
+ record.reload
+ assert_equal 'foo', record.foo
+ record.foo = 'bar'
+ record.save!
+ record.reload
+ assert_equal 'bar', record.foo
+ end
+end