aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2018-05-22 14:23:38 -0400
committerGitHub <noreply@github.com>2018-05-22 14:23:38 -0400
commit09f26ed9daa9f429746591b153eee6f68699413f (patch)
tree94968ad9a332461b3538cb9464de097bd1c0943d /activerecord/test/cases
parentfa9d01d7ddbe18cabd31bcc86b6aa86ac02eff48 (diff)
parent45881b0a64b4039e3b0d27e2c4d959dc2d744b9d (diff)
downloadrails-09f26ed9daa9f429746591b153eee6f68699413f.tar.gz
rails-09f26ed9daa9f429746591b153eee6f68699413f.tar.bz2
rails-09f26ed9daa9f429746591b153eee6f68699413f.zip
Merge pull request #32865 from yahonda/another_31988
Disable foreign keys during `alter_table` for sqlite3 adapter
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/migration/foreign_key_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/cases/migration/foreign_key_test.rb b/activerecord/test/cases/migration/foreign_key_test.rb
index 50f5696ad1..c471dd1106 100644
--- a/activerecord/test/cases/migration/foreign_key_test.rb
+++ b/activerecord/test/cases/migration/foreign_key_test.rb
@@ -19,6 +19,52 @@ if ActiveRecord::Base.connection.supports_foreign_keys_in_create?
assert_equal "fk_name", fk.name unless current_adapter?(:SQLite3Adapter)
end
end
+
+ class ForeignKeyChangeColumnTest < ActiveRecord::TestCase
+ self.use_transactional_tests = false
+
+ class Rocket < ActiveRecord::Base
+ has_many :astronauts
+ end
+
+ class Astronaut < ActiveRecord::Base
+ belongs_to :rocket
+ end
+
+ setup do
+ @connection = ActiveRecord::Base.connection
+ @connection.create_table "rockets", force: true do |t|
+ t.string :name
+ end
+
+ @connection.create_table "astronauts", force: true do |t|
+ t.string :name
+ t.references :rocket, foreign_key: true
+ end
+ Rocket.reset_column_information
+ Astronaut.reset_column_information
+ end
+
+ teardown do
+ @connection.drop_table "astronauts", if_exists: true
+ @connection.drop_table "rockets", if_exists: true
+ Rocket.reset_column_information
+ Astronaut.reset_column_information
+ end
+
+ def test_change_column_of_parent_table
+ foreign_keys = ActiveRecord::Base.connection.foreign_keys("astronauts")
+ rocket = Rocket.create!(name: "myrocket")
+ rocket.astronauts << Astronaut.create!
+
+ @connection.change_column_null :rockets, :name, false
+
+ fk = foreign_keys.first
+ assert_equal "myrocket", Rocket.first.name
+ assert_equal "astronauts", fk.from_table
+ assert_equal "rockets", fk.to_table
+ end
+ end
end
end
end