- Add check for not deleting previously created fixtures, to overcome sti fixtures from multiple files
- Added fixtures and fixtures test to verify the same

- Fixed wrong fixtures duplicating data insertion in same table
This commit is contained in:
Vipul A M 2015-01-14 18:31:30 +05:30
parent 850159bd2c
commit 4ae59ebee8
7 changed files with 46 additions and 12 deletions

View File

@ -521,12 +521,16 @@ module ActiveRecord
update_all_loaded_fixtures fixtures_map
connection.transaction(:requires_new => true) do
deleted_tables = []
fixture_sets.each do |fs|
conn = fs.model_class.respond_to?(:connection) ? fs.model_class.connection : connection
table_rows = fs.table_rows
table_rows.each_key do |table|
conn.delete "DELETE FROM #{conn.quote_table_name(table)}", 'Fixture Delete'
unless deleted_tables.include? table
conn.delete "DELETE FROM #{conn.quote_table_name(table)}", 'Fixture Delete'
end
deleted_tables << table
end
table_rows.each do |fixture_set_name, rows|

View File

@ -672,7 +672,8 @@ class FasterFixturesTest < ActiveRecord::TestCase
end
class FoxyFixturesTest < ActiveRecord::TestCase
fixtures :parrots, :parrots_pirates, :pirates, :treasures, :mateys, :ships, :computers, :developers, :"admin/accounts", :"admin/users"
fixtures :parrots, :parrots_pirates, :pirates, :treasures, :mateys, :ships, :computers,
:developers, :"admin/accounts", :"admin/users", :live_parrots, :dead_parrots
if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
require 'models/uuid_parent'
@ -812,6 +813,12 @@ class FoxyFixturesTest < ActiveRecord::TestCase
assert_equal pirates(:blackbeard), parrots(:polly).killer
end
def test_supports_sti_with_respective_files
assert_kind_of LiveParrot, live_parrots(:dusty)
assert_kind_of DeadParrot, dead_parrots(:deadbird)
assert_equal pirates(:blackbeard), dead_parrots(:deadbird).killer
end
def test_namespaced_models
assert admin_accounts(:signals37).users.include?(admin_users(:david))
assert_equal 2, admin_accounts(:signals37).users.size
@ -834,9 +841,9 @@ class CustomNameForFixtureOrModelTest < ActiveRecord::TestCase
set_fixture_class :randomly_named_a9 =>
ClassNameThatDoesNotFollowCONVENTIONS,
:'admin/randomly_named_a9' =>
Admin::ClassNameThatDoesNotFollowCONVENTIONS,
Admin::ClassNameThatDoesNotFollowCONVENTIONS1,
'admin/randomly_named_b0' =>
Admin::ClassNameThatDoesNotFollowCONVENTIONS
Admin::ClassNameThatDoesNotFollowCONVENTIONS2
fixtures :randomly_named_a9, 'admin/randomly_named_a9',
:'admin/randomly_named_b0'
@ -847,15 +854,15 @@ class CustomNameForFixtureOrModelTest < ActiveRecord::TestCase
end
def test_named_accessor_for_randomly_named_namespaced_fixture_and_class
assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS,
assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS1,
admin_randomly_named_a9(:first_instance)
assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS,
assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS2,
admin_randomly_named_b0(:second_instance)
end
def test_table_name_is_defined_in_the_model
assert_equal 'randomly_named_table', ActiveRecord::FixtureSet::all_loaded_fixtures["admin/randomly_named_a9"].table_name
assert_equal 'randomly_named_table', Admin::ClassNameThatDoesNotFollowCONVENTIONS.table_name
assert_equal 'randomly_named_table2', ActiveRecord::FixtureSet::all_loaded_fixtures["admin/randomly_named_a9"].table_name
assert_equal 'randomly_named_table2', Admin::ClassNameThatDoesNotFollowCONVENTIONS1.table_name
end
end

View File

@ -0,0 +1,5 @@
deadbird:
name: "Dusty DeadBird"
treasures: [ruby, sapphire]
parrot_sti_class: DeadParrot
killer: blackbeard

View File

@ -0,0 +1,4 @@
dusty:
name: "Dusty Bluebird"
treasures: [ruby, sapphire]
parrot_sti_class: LiveParrot

View File

@ -1,3 +1,7 @@
class Admin::ClassNameThatDoesNotFollowCONVENTIONS < ActiveRecord::Base
self.table_name = :randomly_named_table
class Admin::ClassNameThatDoesNotFollowCONVENTIONS1 < ActiveRecord::Base
self.table_name = :randomly_named_table2
end
class Admin::ClassNameThatDoesNotFollowCONVENTIONS2 < ActiveRecord::Base
self.table_name = :randomly_named_table3
end

View File

@ -1,3 +1,3 @@
class ClassNameThatDoesNotFollowCONVENTIONS < ActiveRecord::Base
self.table_name = :randomly_named_table
self.table_name = :randomly_named_table1
end

View File

@ -623,7 +623,17 @@ ActiveRecord::Schema.define do
t.string :type
end
create_table :randomly_named_table, force: true do |t|
create_table :randomly_named_table1, force: true do |t|
t.string :some_attribute
t.integer :another_attribute
end
create_table :randomly_named_table2, force: true do |t|
t.string :some_attribute
t.integer :another_attribute
end
create_table :randomly_named_table3, force: true do |t|
t.string :some_attribute
t.integer :another_attribute
end