aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-10 15:29:19 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:48 +0200
commitd074b821489b6d58101d1474dd514990f4bdf0fa (patch)
treeccfcac7dc154c3c40d0f9a644e832661b1e6aed1 /activerecord/test
parent6073d7c683b19fc7394baa9a93bc44e71e071129 (diff)
downloadrails-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.rb5
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb26
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