From d14da793340ca49c0049257af892a204cba43092 Mon Sep 17 00:00:00 2001 From: Jon Leighton Date: Fri, 28 Sep 2012 18:07:25 +0100 Subject: [PATCH] Add an explicit test for hot compatibility --- .../test/cases/hot_compatibility_test.rb | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 activerecord/test/cases/hot_compatibility_test.rb 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 -- GitLab