aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-06-10 14:26:50 +0200
committerYves Senn <yves.senn@gmail.com>2014-06-26 22:03:48 +0200
commit402f303f1d938cf2c7781d7734c4ff8e6b874f35 (patch)
treed96eb08bab6f5fc63f9f8a9a7fe2086d24c9e7e4 /activerecord/test/cases
parent69c711f38cac85e9c8bdbe286591bf88ef720bfa (diff)
downloadrails-402f303f1d938cf2c7781d7734c4ff8e6b874f35.tar.gz
rails-402f303f1d938cf2c7781d7734c4ff8e6b874f35.tar.bz2
rails-402f303f1d938cf2c7781d7734c4ff8e6b874f35.zip
fk: support dependent option (:delete, :nullify and :restrict).
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb
index f299762b42..fbdb921334 100644
--- a/activerecord/test/cases/migration/foreign_key_test.rb
+++ b/activerecord/test/cases/migration/foreign_key_test.rb
@@ -77,6 +77,41 @@ module ActiveRecord
end
end
+ def test_add_dependent_restrict_foreign_key
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", dependent: :restrict
+
+ foreign_keys = @connection.foreign_keys("astronauts")
+ assert_equal 1, foreign_keys.size
+
+ fk = foreign_keys.first
+ if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
+ # ON DELETE RESTRICT is the default on MySQL
+ assert_equal nil, fk.dependent
+ else
+ assert_equal :restrict, fk.dependent
+ end
+ end
+
+ def test_add_dependent_delete_foreign_key
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", dependent: :delete
+
+ foreign_keys = @connection.foreign_keys("astronauts")
+ assert_equal 1, foreign_keys.size
+
+ fk = foreign_keys.first
+ assert_equal :delete, fk.dependent
+ end
+
+ def test_add_dependent_nullify_foreign_key
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", dependent: :nullify
+
+ foreign_keys = @connection.foreign_keys("astronauts")
+ assert_equal 1, foreign_keys.size
+
+ fk = foreign_keys.first
+ assert_equal :nullify, fk.dependent
+ end
+
def test_remove_foreign_key
@connection.add_foreign_key :astronauts, :rockets, column: "rocket_id"
@@ -97,6 +132,13 @@ module ActiveRecord
output = dump_table_schema "fk_test_has_fk"
assert_match %r{\s+add_foreign_key "fk_test_has_fk", "fk_test_has_pk", column: "fk_id", primary_key: "id", name: "fk_name"$}, output
end
+
+ def test_schema_dumping_dependent_option
+ @connection.add_foreign_key :astronauts, :rockets, column: "rocket_id", dependent: :nullify
+
+ output = dump_table_schema "astronauts"
+ assert_match %r{\s+add_foreign_key "astronauts",.+dependent: :nullify$}, output
+ end
end
end
end