mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added a test around NO_AUTO_VALUE_ON_ZERO
:
- The mysql `NO_AUTO_VALUE_ON_ZERO` mode should be disabled when inserting fixtures in bulk, this PR adds a test to make sure we don't remove it by mistake - If we live this mode enabled, a statement like this wouldn't work and a `Duplicate entry '0' for key 'PRIMARY'` error will be raised. That's because `DEFAULT` on auto_increment will return 0 ```sql INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3) ```
This commit is contained in:
parent
07563036b0
commit
84206ad387
1 changed files with 22 additions and 0 deletions
|
@ -81,6 +81,28 @@ class FixturesTest < ActiveRecord::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_no_auto_value_on_zero_is_disabled
|
||||||
|
skip unless current_adapter?(:Mysql2Adapter)
|
||||||
|
|
||||||
|
begin
|
||||||
|
fixtures = [
|
||||||
|
{ "name" => "first", "wheels_count" => 2 },
|
||||||
|
{ "name" => "second", "wheels_count" => 3 }
|
||||||
|
]
|
||||||
|
subscriber = InsertQuerySubscriber.new
|
||||||
|
subscription = ActiveSupport::Notifications.subscribe("sql.active_record", subscriber)
|
||||||
|
|
||||||
|
assert_nothing_raised do
|
||||||
|
ActiveRecord::Base.connection.insert_fixtures(fixtures, "aircraft")
|
||||||
|
end
|
||||||
|
|
||||||
|
expected_sql = "INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3)"
|
||||||
|
assert_equal expected_sql, subscriber.events.first
|
||||||
|
ensure
|
||||||
|
ActiveSupport::Notifications.unsubscribe(subscription)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_broken_yaml_exception
|
def test_broken_yaml_exception
|
||||||
badyaml = Tempfile.new ["foo", ".yml"]
|
badyaml = Tempfile.new ["foo", ".yml"]
|
||||||
badyaml.write "a: : "
|
badyaml.write "a: : "
|
||||||
|
|
Loading…
Reference in a new issue