diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-02-20 09:06:31 -0800 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-02-20 09:06:31 -0800 |
commit | 92949d2a44f2c83a1537e0e4f29864ffc506cb1b (patch) | |
tree | 9d8f55487488d8961fde7d70b97ea64262c1b13c /activerecord/test/cases/migration/index_test.rb | |
parent | 7bae72c69f2352fd7e02f2d08adf873e4354aea0 (diff) | |
parent | 72ca2d7ff668c121d15bb247d7dcb608fc8e34c8 (diff) | |
download | rails-92949d2a44f2c83a1537e0e4f29864ffc506cb1b.tar.gz rails-92949d2a44f2c83a1537e0e4f29864ffc506cb1b.tar.bz2 rails-92949d2a44f2c83a1537e0e4f29864ffc506cb1b.zip |
Merge pull request #8613 from senny/8264_character_limit_for_indices
deal with long index names and internal sqlite3 operations
Diffstat (limited to 'activerecord/test/cases/migration/index_test.rb')
-rw-r--r-- | activerecord/test/cases/migration/index_test.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/activerecord/test/cases/migration/index_test.rb b/activerecord/test/cases/migration/index_test.rb index a41f2c10f0..5df9a5342d 100644 --- a/activerecord/test/cases/migration/index_test.rb +++ b/activerecord/test/cases/migration/index_test.rb @@ -55,19 +55,31 @@ module ActiveRecord assert_raise(ArgumentError) { connection.remove_index(table_name, "no_such_index") } end - def test_add_index_name_length_limit - good_index_name = 'x' * connection.index_name_length + 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 + + def test_add_index_does_not_accept_too_long_index_names too_long_index_name = good_index_name + 'x' - assert_raises(ArgumentError) { - connection.add_index(table_name, "foo", :name => too_long_index_name) + 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 + + 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) + connection.remove_index(table_name, name: good_index_name) end def test_index_symbol_names @@ -196,6 +208,12 @@ module ActiveRecord connection.remove_index("testings", "last_name") assert !connection.index_exists?("testings", "last_name") end + + private + def good_index_name + 'x' * connection.allowed_index_name_length + end + end end end |