diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-06-10 15:29:19 +0200 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-06-26 22:03:48 +0200 |
commit | d074b821489b6d58101d1474dd514990f4bdf0fa (patch) | |
tree | ccfcac7dc154c3c40d0f9a644e832661b1e6aed1 /activerecord/test | |
parent | 6073d7c683b19fc7394baa9a93bc44e71e071129 (diff) | |
download | rails-d074b821489b6d58101d1474dd514990f4bdf0fa.tar.gz rails-d074b821489b6d58101d1474dd514990f4bdf0fa.tar.bz2 rails-d074b821489b6d58101d1474dd514990f4bdf0fa.zip |
fk: infere column name from table names.
This allows to create and remove foreign keys without specifying a column.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/migration/command_recorder_test.rb | 5 | ||||
-rw-r--r-- | activerecord/test/cases/migration/foreign_key_test.rb | 26 |
2 files changed, 29 insertions, 2 deletions
diff --git a/activerecord/test/cases/migration/command_recorder_test.rb b/activerecord/test/cases/migration/command_recorder_test.rb index 64a1b9a84e..e955beae1a 100644 --- a/activerecord/test/cases/migration/command_recorder_test.rb +++ b/activerecord/test/cases/migration/command_recorder_test.rb @@ -271,6 +271,11 @@ module ActiveRecord assert_equal [:enable_extension, ['uuid-ossp'], nil], enable end + def test_invert_add_foreign_key + enable = @recorder.inverse_of :add_foreign_key, [:dogs, :people] + assert_equal [:remove_foreign_key, [:dogs, :people]], enable + end + def test_invert_add_foreign_key_with_column enable = @recorder.inverse_of :add_foreign_key, [:dogs, :people, column: "owner_id"] assert_equal [:remove_foreign_key, [:dogs, column: "owner_id"]], enable diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb index 5935062efb..a43f7e48c8 100644 --- a/activerecord/test/cases/migration/foreign_key_test.rb +++ b/activerecord/test/cases/migration/foreign_key_test.rb @@ -46,7 +46,21 @@ module ActiveRecord assert_equal "fk_name", fk.name end - def test_add_foreign_key + def test_add_foreign_key_inferes_column + @connection.add_foreign_key :astronauts, :rockets + + foreign_keys = @connection.foreign_keys("astronauts") + assert_equal 1, foreign_keys.size + + fk = foreign_keys.first + assert_equal "astronauts", fk.from_table + assert_equal "rockets", fk.to_table + assert_equal "rocket_id", fk.column + assert_equal "id", fk.primary_key + assert_equal "astronauts_rocket_id_fk", fk.name + end + + def test_add_foreign_key_with_column @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id" foreign_keys = @connection.foreign_keys("astronauts") @@ -112,7 +126,15 @@ module ActiveRecord assert_equal :nullify, fk.dependent end - def test_remove_foreign_key + def test_remove_foreign_key_inferes_column + @connection.add_foreign_key :astronauts, :rockets + + assert_equal 1, @connection.foreign_keys("astronauts").size + @connection.remove_foreign_key :astronauts, :rockets + assert_equal [], @connection.foreign_keys("astronauts") + end + + def test_remove_foreign_key_by_column @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id" assert_equal 1, @connection.foreign_keys("astronauts").size |