From 68133f6a02cad1f817c4a909e43c3c48edc32892 Mon Sep 17 00:00:00 2001 From: spyfalcon Date: Thu, 24 Jul 2008 12:12:19 +0200 Subject: [PATCH] enhanced require_fixture_classes; added test --- activerecord/lib/active_record/fixtures.rb | 13 ++++++++++--- activerecord/test/cases/fixtures_test.rb | 7 +++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/activerecord/lib/active_record/fixtures.rb b/activerecord/lib/active_record/fixtures.rb index 622cfc3..1bc70d2 100755 --- a/activerecord/lib/active_record/fixtures.rb +++ b/activerecord/lib/active_record/fixtures.rb @@ -866,9 +866,16 @@ module Test #:nodoc: def require_fixture_classes(table_names = nil) (table_names || fixture_table_names).each do |table_name| - file_name = table_name.to_s - file_name = file_name.singularize if ActiveRecord::Base.pluralize_table_names - try_to_load_dependency(file_name) + if klass = self.fixture_class_names[table_name.to_sym] + next if klass.is_a?(Class) + file_name = klass.to_s.underscore + else + file_name = table_name.to_s + file_name = file_name.singularize if ActiveRecord::Base.pluralize_table_names + klass = file_name.classify + end + + try_to_load_dependency(file_name) unless Object.const_defined?(klass.to_sym) end end diff --git a/activerecord/test/cases/fixtures_test.rb b/activerecord/test/cases/fixtures_test.rb index 6ba7597..a794f84 100755 --- a/activerecord/test/cases/fixtures_test.rb +++ b/activerecord/test/cases/fixtures_test.rb @@ -651,5 +651,12 @@ class FixtureLoadingTest < ActiveRecord::TestCase ActiveRecord::Base.logger.expects(:warn).never Test::Unit::TestCase.try_to_load_dependency(:works_out_fine) end + + def test_trys_to_load_dependcy_only_if_necessary + class_names = {:a => Book, :b => 'Book', :c => 'DoesNotExist'} + Test::Unit::TestCase.stubs(:fixture_class_names).returns(class_names) + Test::Unit::TestCase.expects(:try_to_load_dependency).with(class_names[:c].underscore) + Test::Unit::TestCase.require_fixture_classes(class_names.keys) + end end end -- 1.5.4.3