class ActiveRecord::AdapterForeignKeyTest
Public Instance Methods
setup()
click to toggle source
# File activerecord/test/cases/adapter_test.rb, line 303 def setup @connection = ActiveRecord::Base.connection end
test_disable_referential_integrity()
click to toggle source
# File activerecord/test/cases/adapter_test.rb, line 329 def test_disable_referential_integrity assert_nothing_raised do @connection.disable_referential_integrity do insert_into_fk_test_has_fk # should delete created record as otherwise disable_referential_integrity will try to enable constraints # after executed block and will fail (at least on Oracle) @connection.execute "DELETE FROM fk_test_has_fk" end end end
test_foreign_key_violations_are_translated_to_specific_exception()
click to toggle source
# File activerecord/test/cases/adapter_test.rb, line 321 def test_foreign_key_violations_are_translated_to_specific_exception error = assert_raises(ActiveRecord::InvalidForeignKey) do insert_into_fk_test_has_fk end assert_not_nil error.cause end
test_foreign_key_violations_are_translated_to_specific_exception_with_validate_false()
click to toggle source
# File activerecord/test/cases/adapter_test.rb, line 307 def test_foreign_key_violations_are_translated_to_specific_exception_with_validate_false klass_has_fk = Class.new(ActiveRecord::Base) do self.table_name = "fk_test_has_fk" end error = assert_raises(ActiveRecord::InvalidForeignKey) do has_fk = klass_has_fk.new has_fk.fk_id = 1231231231 has_fk.save(validate: false) end assert_not_nil error.cause end
Private Instance Methods
insert_into_fk_test_has_fk()
click to toggle source
# File activerecord/test/cases/adapter_test.rb, line 342 def insert_into_fk_test_has_fk # Oracle adapter uses prefetched primary key values from sequence and passes them to connection adapter insert method if @connection.prefetch_primary_key? id_value = @connection.next_sequence_value(@connection.default_sequence_name("fk_test_has_fk", "id")) @connection.execute "INSERT INTO fk_test_has_fk (id,fk_id) VALUES (#{id_value},0)" else @connection.execute "INSERT INTO fk_test_has_fk (fk_id) VALUES (0)" end end