2016-08-06 12:26:20 -04:00
|
|
|
require "cases/helper"
|
2015-04-03 04:55:53 -04:00
|
|
|
|
|
|
|
module ActiveRecord
|
|
|
|
class Migration
|
|
|
|
class CompatibilityTest < ActiveRecord::TestCase
|
|
|
|
attr_reader :connection
|
|
|
|
self.use_transactional_tests = false
|
|
|
|
|
|
|
|
def setup
|
|
|
|
super
|
|
|
|
@connection = ActiveRecord::Base.connection
|
|
|
|
@verbose_was = ActiveRecord::Migration.verbose
|
|
|
|
ActiveRecord::Migration.verbose = false
|
|
|
|
|
|
|
|
connection.create_table :testings do |t|
|
2016-08-06 13:37:57 -04:00
|
|
|
t.column :foo, :string, limit: 100
|
|
|
|
t.column :bar, :string, limit: 100
|
2015-04-03 04:55:53 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
teardown do
|
|
|
|
connection.drop_table :testings rescue nil
|
|
|
|
ActiveRecord::Migration.verbose = @verbose_was
|
2016-02-12 09:16:03 -05:00
|
|
|
ActiveRecord::SchemaMigration.delete_all rescue nil
|
2015-04-03 04:55:53 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_migration_doesnt_remove_named_index
|
2016-08-06 13:37:57 -04:00
|
|
|
connection.add_index :testings, :foo, name: "custom_index_name"
|
2015-04-03 04:55:53 -04:00
|
|
|
|
|
|
|
migration = Class.new(ActiveRecord::Migration[4.2]) {
|
|
|
|
def version; 101 end
|
|
|
|
def migrate(x)
|
|
|
|
remove_index :testings, :foo
|
|
|
|
end
|
|
|
|
}.new
|
|
|
|
|
|
|
|
assert connection.index_exists?(:testings, :foo, name: "custom_index_name")
|
|
|
|
assert_raise(StandardError) { ActiveRecord::Migrator.new(:up, [migration]).migrate }
|
|
|
|
assert connection.index_exists?(:testings, :foo, name: "custom_index_name")
|
|
|
|
end
|
2016-01-04 23:40:34 -05:00
|
|
|
|
|
|
|
def test_migration_does_remove_unnamed_index
|
|
|
|
connection.add_index :testings, :bar
|
|
|
|
|
|
|
|
migration = Class.new(ActiveRecord::Migration[4.2]) {
|
|
|
|
def version; 101 end
|
|
|
|
def migrate(x)
|
|
|
|
remove_index :testings, :bar
|
|
|
|
end
|
|
|
|
}.new
|
|
|
|
|
|
|
|
assert connection.index_exists?(:testings, :bar)
|
|
|
|
ActiveRecord::Migrator.new(:up, [migration]).migrate
|
|
|
|
assert_not connection.index_exists?(:testings, :bar)
|
|
|
|
end
|
2016-01-24 06:16:12 -05:00
|
|
|
|
|
|
|
def test_references_does_not_add_index_by_default
|
2016-12-29 11:57:45 -05:00
|
|
|
migration = Class.new(ActiveRecord::Migration[4.2]) {
|
2016-01-24 06:16:12 -05:00
|
|
|
def migrate(x)
|
|
|
|
create_table :more_testings do |t|
|
|
|
|
t.references :foo
|
|
|
|
t.belongs_to :bar, index: false
|
|
|
|
end
|
|
|
|
end
|
|
|
|
}.new
|
|
|
|
|
|
|
|
ActiveRecord::Migrator.new(:up, [migration]).migrate
|
|
|
|
|
|
|
|
assert_not connection.index_exists?(:more_testings, :foo_id)
|
|
|
|
assert_not connection.index_exists?(:more_testings, :bar_id)
|
|
|
|
ensure
|
|
|
|
connection.drop_table :more_testings rescue nil
|
|
|
|
end
|
2016-01-31 04:11:38 -05:00
|
|
|
|
|
|
|
def test_timestamps_have_null_constraints_if_not_present_in_migration_of_create_table
|
2016-12-29 11:57:45 -05:00
|
|
|
migration = Class.new(ActiveRecord::Migration[4.2]) {
|
2016-01-31 04:11:38 -05:00
|
|
|
def migrate(x)
|
|
|
|
create_table :more_testings do |t|
|
|
|
|
t.timestamps
|
|
|
|
end
|
|
|
|
end
|
|
|
|
}.new
|
|
|
|
|
|
|
|
ActiveRecord::Migrator.new(:up, [migration]).migrate
|
|
|
|
|
2016-08-06 12:26:20 -04:00
|
|
|
assert connection.columns(:more_testings).find { |c| c.name == "created_at" }.null
|
|
|
|
assert connection.columns(:more_testings).find { |c| c.name == "updated_at" }.null
|
2016-01-31 04:11:38 -05:00
|
|
|
ensure
|
|
|
|
connection.drop_table :more_testings rescue nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_timestamps_have_null_constraints_if_not_present_in_migration_for_adding_timestamps_to_existing_table
|
2016-12-29 11:57:45 -05:00
|
|
|
migration = Class.new(ActiveRecord::Migration[4.2]) {
|
2016-01-31 04:11:38 -05:00
|
|
|
def migrate(x)
|
|
|
|
add_timestamps :testings
|
|
|
|
end
|
|
|
|
}.new
|
|
|
|
|
|
|
|
ActiveRecord::Migrator.new(:up, [migration]).migrate
|
|
|
|
|
2016-08-06 12:26:20 -04:00
|
|
|
assert connection.columns(:testings).find { |c| c.name == "created_at" }.null
|
|
|
|
assert connection.columns(:testings).find { |c| c.name == "updated_at" }.null
|
2016-01-31 04:11:38 -05:00
|
|
|
end
|
2016-02-02 01:39:25 -05:00
|
|
|
|
2016-12-29 11:57:45 -05:00
|
|
|
def test_legacy_migrations_raises_exception_when_inherited
|
|
|
|
assert_raises(StandardError) do
|
|
|
|
Class.new(ActiveRecord::Migration)
|
2016-02-02 01:39:25 -05:00
|
|
|
end
|
|
|
|
end
|
2015-04-03 04:55:53 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|