diff options
Diffstat (limited to 'activerecord/test/cases/migration/references_index_test.rb')
-rw-r--r-- | activerecord/test/cases/migration/references_index_test.rb | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/references_index_test.rb b/activerecord/test/cases/migration/references_index_test.rb new file mode 100644 index 0000000000..e41377d817 --- /dev/null +++ b/activerecord/test/cases/migration/references_index_test.rb @@ -0,0 +1,103 @@ +# frozen_string_literal: true + +require "cases/helper" + +module ActiveRecord + class Migration + class ReferencesIndexTest < ActiveRecord::TestCase + attr_reader :connection, :table_name + + def setup + super + @connection = ActiveRecord::Base.connection + @table_name = :testings + end + + teardown do + connection.drop_table :testings rescue nil + end + + def test_creates_index + connection.create_table table_name do |t| + t.references :foo, index: true + end + + assert connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + def test_creates_index_by_default_even_if_index_option_is_not_passed + connection.create_table table_name do |t| + t.references :foo + end + + assert connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + def test_does_not_create_index_explicit + connection.create_table table_name do |t| + t.references :foo, index: false + end + + assert_not connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + def test_creates_index_with_options + connection.create_table table_name do |t| + t.references :foo, index: { name: :index_testings_on_yo_momma } + t.references :bar, index: { unique: true } + end + + assert connection.index_exists?(table_name, :foo_id, name: :index_testings_on_yo_momma) + assert connection.index_exists?(table_name, :bar_id, name: :index_testings_on_bar_id, unique: true) + end + + unless current_adapter? :OracleAdapter + def test_creates_polymorphic_index + connection.create_table table_name do |t| + t.references :foo, polymorphic: true, index: true + end + + assert connection.index_exists?(table_name, [:foo_type, :foo_id], name: :index_testings_on_foo_type_and_foo_id) + end + end + + def test_creates_index_for_existing_table + connection.create_table table_name + connection.change_table table_name do |t| + t.references :foo, index: true + end + + assert connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + def test_creates_index_for_existing_table_even_if_index_option_is_not_passed + connection.create_table table_name + connection.change_table table_name do |t| + t.references :foo + end + + assert connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + def test_does_not_create_index_for_existing_table_explicit + connection.create_table table_name + connection.change_table table_name do |t| + t.references :foo, index: false + end + + assert_not connection.index_exists?(table_name, :foo_id, name: :index_testings_on_foo_id) + end + + unless current_adapter? :OracleAdapter + def test_creates_polymorphic_index_for_existing_table + connection.create_table table_name + connection.change_table table_name do |t| + t.references :foo, polymorphic: true, index: true + end + + assert connection.index_exists?(table_name, [:foo_type, :foo_id], name: :index_testings_on_foo_type_and_foo_id) + end + end + end + end +end |