aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migration/change_schema_test.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2014-12-19 12:15:27 +0100
committerYves Senn <yves.senn@gmail.com>2014-12-19 12:15:27 +0100
commit10e989b76df1a833f9da22598c1a368777374a01 (patch)
tree15915fa7c404ab01fefa67652ee16905ea8533fd /activerecord/test/cases/migration/change_schema_test.rb
parent111f2f442214d0212a76484d29bf6dab1aca0507 (diff)
parentbe1e0241f012f1151d2448b10e14b8b2eda26b84 (diff)
downloadrails-10e989b76df1a833f9da22598c1a368777374a01.tar.gz
rails-10e989b76df1a833f9da22598c1a368777374a01.tar.bz2
rails-10e989b76df1a833f9da22598c1a368777374a01.zip
Merge pull request #18082 from rails/17945_purge_in_test_only
`db:schema:load` and `db:structure:load` do not purge the database
Diffstat (limited to 'activerecord/test/cases/migration/change_schema_test.rb')
-rw-r--r--activerecord/test/cases/migration/change_schema_test.rb31
1 files changed, 31 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/change_schema_test.rb b/activerecord/test/cases/migration/change_schema_test.rb
index d91e7142b3..d774cfebc4 100644
--- a/activerecord/test/cases/migration/change_schema_test.rb
+++ b/activerecord/test/cases/migration/change_schema_test.rb
@@ -415,5 +415,36 @@ module ActiveRecord
yield
end
end
+
+ if ActiveRecord::Base.connection.supports_foreign_keys?
+ class ChangeSchemaWithDependentObjectsTest < ActiveRecord::TestCase
+ self.use_transactional_fixtures = false
+
+ setup do
+ @connection = ActiveRecord::Base.connection
+ @connection.create_table :trains
+ @connection.create_table(:wagons) { |t| t.references :train }
+ @connection.add_foreign_key :wagons, :trains
+ end
+
+ teardown do
+ [:wagons, :trains].each do |table|
+ @connection.drop_table(table) if @connection.table_exists?(table)
+ end
+ end
+
+ def test_create_table_with_force_cascade_drops_dependent_objects
+ skip "MySQL > 5.5 does not drop dependent objects with DROP TABLE CASCADE" if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
+ # can't re-create table referenced by foreign key
+ assert_raises(ActiveRecord::StatementInvalid) do
+ @connection.create_table :trains, force: true
+ end
+
+ # can recreate referenced table with force: :cascade
+ @connection.create_table :trains, force: :cascade
+ assert_equal [], @connection.foreign_keys(:wagons)
+ end
+ end
+ end
end
end