Methods
- S
- T
-
- test_add_index,
- test_add_index_attribute_length_limit,
- test_add_index_does_not_accept_too_long_index_names,
- test_add_index_works_with_long_index_names,
- test_add_partial_index,
- test_double_add_index,
- test_index_exists,
- test_index_exists_on_multiple_columns,
- test_index_exists_with_custom_name_checks_columns,
- test_index_symbol_names,
- test_internal_index_with_name_matching_database_limit,
- test_named_index_exists,
- test_remove_nonexistent_index,
- test_rename_index,
- test_rename_index_too_long,
- test_unique_index_exists,
- test_valid_index_options
Attributes
| [R] | connection | |
| [R] | table_name |
Instance Public methods
setup()
Link
# File activerecord/test/cases/migration/index_test.rb, line 8 def setup super @connection = ActiveRecord::Base.connection @table_name = :testings connection.create_table table_name do |t| t.column :foo, :string, :limit => 100 t.column :bar, :string, :limit => 100 t.string :first_name t.string :last_name, :limit => 100 t.string :key, :limit => 100 t.boolean :administrator end end
test_add_index()
Link
# File activerecord/test/cases/migration/index_test.rb, line 142 def test_add_index connection.add_index("testings", "last_name") connection.remove_index("testings", "last_name") connection.add_index("testings", ["last_name", "first_name"]) connection.remove_index("testings", :column => ["last_name", "first_name"]) # Oracle adapter cannot have specified index name larger than 30 characters # Oracle adapter is shortening index name when just column list is given unless current_adapter?(:OracleAdapter) connection.add_index("testings", ["last_name", "first_name"]) connection.remove_index("testings", :name => :index_testings_on_last_name_and_first_name) connection.add_index("testings", ["last_name", "first_name"]) connection.remove_index("testings", "last_name_and_first_name") end connection.add_index("testings", ["last_name", "first_name"]) connection.remove_index("testings", ["last_name", "first_name"]) connection.add_index("testings", ["last_name"], :length => 10) connection.remove_index("testings", "last_name") connection.add_index("testings", ["last_name"], :length => {:last_name => 10}) connection.remove_index("testings", ["last_name"]) connection.add_index("testings", ["last_name", "first_name"], :length => 10) connection.remove_index("testings", ["last_name", "first_name"]) connection.add_index("testings", ["last_name", "first_name"], :length => {:last_name => 10, :first_name => 20}) connection.remove_index("testings", ["last_name", "first_name"]) connection.add_index("testings", ["key"], :name => "key_idx", :unique => true) connection.remove_index("testings", :name => "key_idx", :unique => true) connection.add_index("testings", %w(last_name first_name administrator), :name => "named_admin") connection.remove_index("testings", :name => "named_admin") # Selected adapters support index sort order if current_adapter?(:SQLite3Adapter, :MysqlAdapter, :Mysql2Adapter, :PostgreSQLAdapter) connection.add_index("testings", ["last_name"], :order => {:last_name => :desc}) connection.remove_index("testings", ["last_name"]) connection.add_index("testings", ["last_name", "first_name"], :order => {:last_name => :desc}) connection.remove_index("testings", ["last_name", "first_name"]) connection.add_index("testings", ["last_name", "first_name"], :order => {:last_name => :desc, :first_name => :asc}) connection.remove_index("testings", ["last_name", "first_name"]) connection.add_index("testings", ["last_name", "first_name"], :order => :desc) connection.remove_index("testings", ["last_name", "first_name"]) end end
test_add_index_attribute_length_limit()
Link
test_add_index_does_not_accept_too_long_index_names()
Link
# File activerecord/test/cases/migration/index_test.rb, line 71 def test_add_index_does_not_accept_too_long_index_names too_long_index_name = good_index_name + 'x' e = assert_raises(ArgumentError) { connection.add_index(table_name, "foo", name: too_long_index_name) } assert_match(/too long; the limit is #{connection.allowed_index_name_length} characters/, e.message) assert_not connection.index_name_exists?(table_name, too_long_index_name, false) connection.add_index(table_name, "foo", :name => good_index_name) end
test_add_index_works_with_long_index_names()
Link
# File activerecord/test/cases/migration/index_test.rb, line 64 def test_add_index_works_with_long_index_names connection.add_index(table_name, "foo", name: good_index_name) assert connection.index_name_exists?(table_name, good_index_name, false) connection.remove_index(table_name, name: good_index_name) end
test_add_partial_index()
Link
# File activerecord/test/cases/migration/index_test.rb, line 192 def test_add_partial_index connection.add_index("testings", "last_name", :where => "first_name = 'john doe'") assert connection.index_exists?("testings", "last_name") connection.remove_index("testings", "last_name") assert !connection.index_exists?("testings", "last_name") end
test_double_add_index()
Link
test_index_exists()
Link
test_index_exists_on_multiple_columns()
Link
test_index_exists_with_custom_name_checks_columns()
Link
# File activerecord/test/cases/migration/index_test.rb, line 112 def test_index_exists_with_custom_name_checks_columns connection.add_index :testings, [:foo, :bar], name: "my_index" assert connection.index_exists?(:testings, [:foo, :bar], name: "my_index") assert_not connection.index_exists?(:testings, [:foo], name: "my_index") end
test_index_symbol_names()
Link
# File activerecord/test/cases/migration/index_test.rb, line 91 def test_index_symbol_names connection.add_index table_name, :foo, :name => :symbol_index_name assert connection.index_exists?(table_name, :foo, :name => :symbol_index_name) connection.remove_index table_name, :name => :symbol_index_name assert_not connection.index_exists?(table_name, :foo, :name => :symbol_index_name) end
test_internal_index_with_name_matching_database_limit()
Link
# File activerecord/test/cases/migration/index_test.rb, line 83 def test_internal_index_with_name_matching_database_limit good_index_name = 'x' * connection.index_name_length connection.add_index(table_name, "foo", name: good_index_name, internal: true) assert connection.index_name_exists?(table_name, good_index_name, false) connection.remove_index(table_name, name: good_index_name) end
test_named_index_exists()
Link
test_remove_nonexistent_index()
Link
test_rename_index()
Link
# File activerecord/test/cases/migration/index_test.rb, line 29 def test_rename_index # keep the names short to make Oracle and similar behave connection.add_index(table_name, [:foo], :name => 'old_idx') connection.rename_index(table_name, 'old_idx', 'new_idx') # if the adapter doesn't support the indexes call, pick defaults that let the test pass assert_not connection.index_name_exists?(table_name, 'old_idx', false) assert connection.index_name_exists?(table_name, 'new_idx', true) end
test_rename_index_too_long()
Link
# File activerecord/test/cases/migration/index_test.rb, line 39 def test_rename_index_too_long too_long_index_name = good_index_name + 'x' # keep the names short to make Oracle and similar behave connection.add_index(table_name, [:foo], :name => 'old_idx') e = assert_raises(ArgumentError) { connection.rename_index(table_name, 'old_idx', too_long_index_name) } assert_match(/too long; the limit is #{connection.allowed_index_name_length} characters/, e.message) # if the adapter doesn't support the indexes call, pick defaults that let the test pass assert connection.index_name_exists?(table_name, 'old_idx', false) end
test_unique_index_exists()
Link