aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migration/foreign_key_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/cases/migration/foreign_key_test.rb')
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb
new file mode 100644
index 0000000000..978d1a8cf1
--- /dev/null
+++ b/activerecord/test/cases/migration/foreign_key_test.rb
@@ -0,0 +1,49 @@
+require 'cases/helper'
+
+if ActiveRecord::Base.connection.supports_foreign_keys?
+module ActiveRecord
+ class Migration
+ class ForeignKeyTest < ActiveRecord::TestCase
+ class Rocket < ActiveRecord::Base
+ end
+
+ class Astronaut < ActiveRecord::Base
+ end
+
+ setup do
+ @connection = ActiveRecord::Base.connection
+ @connection.create_table "rockets" do |t|
+ t.string :name
+ end
+
+ @connection.create_table "astronauts" do |t|
+ t.string :name
+ t.references :rocket
+ end
+ end
+
+ def test_add_foreign_key
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id"
+
+ assert_raises ActiveRecord::InvalidForeignKey do
+ Astronaut.create rocket_id: 33
+ end
+ end
+
+ def test_remove_foreign_key
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id"
+ @connection.remove_foreign_key :astronauts, column: "rocket_id"
+
+ Astronaut.create rocket_id: 33
+ end
+
+ def test_remove_foreign_key_by_name
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", name: "fancy_named_fk"
+ @connection.remove_foreign_key :astronauts, name: "fancy_named_fk"
+
+ Astronaut.create rocket_id: 33
+ end
+ end
+ end
+end
+end