hot_compatibility_test.rb 1.3 KB
Newer Older
1 2 3 4 5 6 7
require 'cases/helper'

class HotCompatibilityTest < ActiveRecord::TestCase
  self.use_transactional_fixtures = false

  setup do
    @klass = Class.new(ActiveRecord::Base) do
8
      connection.create_table :hot_compatibilities, force: true do |t|
9 10 11 12 13 14 15 16 17
        t.string :foo
        t.string :bar
      end

      def self.name; 'HotCompatibility'; end
    end
  end

  teardown do
18
    ActiveRecord::Base.connection.drop_table :hot_compatibilities
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
  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