Permalink
Browse files

Add an explicit test for hot compatibility

  • Loading branch information...
1 parent 144e869 commit d14da793340ca49c0049257af892a204cba43092 @jonleighton jonleighton committed Sep 28, 2012
Showing with 54 additions and 0 deletions.
  1. +54 −0 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

0 comments on commit d14da79

Please sign in to comment.