From 8c42d1b6e537a50ae085a8669e604fca1729d56b Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Fri, 26 Jan 2018 05:47:35 +0900 Subject: [PATCH] Add test case for deprecated `insert_fixtures` Since #31422, `insert_fixtures` is deprecated. --- .../connection_adapters/sqlite3_adapter.rb | 8 +++++--- activerecord/test/cases/fixtures_test.rb | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index c66cada07a..a958600446 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -367,9 +367,11 @@ def foreign_keys(table_name) end def insert_fixtures(rows, table_name) - rows.each do |row| - insert_fixture(row, table_name) - end + ActiveSupport::Deprecation.warn(<<-MSG.squish) + `insert_fixtures` is deprecated and will be removed in the next version of Rails. + Consider using `insert_fixtures_set` for performance improvement. + MSG + insert_fixtures_set(table_name => rows) end def insert_fixtures_set(fixture_set, tables_to_delete = []) diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index d6b22e0a79..baa5e5df34 100644 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -211,16 +211,30 @@ def test_no_auto_value_on_zero_is_disabled subscription = ActiveSupport::Notifications.subscribe("sql.active_record", subscriber) assert_nothing_raised do - ActiveRecord::Base.connection.insert_fixtures(fixtures, "aircraft") + ActiveRecord::Base.connection.insert_fixtures_set("aircraft" => fixtures) end - expected_sql = "INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3)" + expected_sql = "INSERT INTO `aircraft` (`id`, `name`, `wheels_count`) VALUES (DEFAULT, 'first', 2), (DEFAULT, 'second', 3);\n" assert_equal expected_sql, subscriber.events.first ensure ActiveSupport::Notifications.unsubscribe(subscription) end end + def test_deprecated_insert_fixtures + fixtures = [ + { "name" => "first", "wheels_count" => 2 }, + { "name" => "second", "wheels_count" => 3 } + ] + conn = ActiveRecord::Base.connection + conn.delete("DELETE FROM aircraft") + assert_deprecated do + conn.insert_fixtures(fixtures, "aircraft") + end + result = conn.select_all("SELECT name, wheels_count FROM aircraft ORDER BY id") + assert_equal fixtures, result.to_a + end + def test_broken_yaml_exception badyaml = Tempfile.new ["foo", ".yml"] badyaml.write "a: : " -- GitLab