Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 2719

Show
Ignore:
Timestamp:
10/24/05 16:45:33 (3 years ago)
Author:
bitsweat
Message:

r2727@asus: jeremy | 2005-10-24 14:14:36 -0700
Fallback to @loaded_fixtures = {}. Use Logger#silence. Test fixture isolation with use_instantiated_fixtures and with no fixtures declaration.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/lib/active_record/fixtures.rb

    r2714 r2719  
    218218 
    219219  def self.instantiate_fixtures(object, table_name, fixtures, load_instances=true) 
    220     old_logger_level = ActiveRecord::Base.logger.level 
    221     ActiveRecord::Base.logger.level = Logger::ERROR 
    222  
    223220    object.instance_variable_set "@#{table_name.to_s.gsub('.','_')}", fixtures 
    224221    if load_instances 
    225       fixtures.each do |name, fixture| 
    226         if model = fixture.find 
    227           object.instance_variable_set "@#{name}", model 
    228         end 
    229       end 
    230     end 
    231  
    232     ActiveRecord::Base.logger.level = old_logger_level 
     222      ActiveRecord::Base.logger.silence do 
     223        fixtures.each do |name, fixture| 
     224          if model = fixture.find 
     225            object.instance_variable_set "@#{name}", model 
     226          end 
     227        end 
     228      end 
     229    end 
    233230  end 
    234231 
     
    559556          # Clear dirty fixtures and loaded fixtures which were not declared 
    560557          # for this test case. 
    561           wipe = dirty_fixture_table_names + loaded_fixture_table_names - fixture_table_names 
     558          wipe = dirty_fixture_table_names | loaded_fixture_table_names - fixture_table_names 
    562559          Fixtures.delete_fixtures(wipe) unless wipe.empty? 
    563560          dirty_fixture_table_names.clear 
     
    574571                f.table_name.to_s 
    575572              } 
     573            else 
     574              @loaded_fixtures = {} 
    576575          end 
    577576        end 
  • trunk/activerecord/test/fixtures_test.rb

    r2714 r2719  
    330330  end 
    331331end 
     332 
     333class FixtureCleanup5Test < FixtureCleanup3Test 
     334  self.use_instantiated_fixtures = false 
     335 
     336  def test_dirty_fixture_table_names 
     337    assert_equal %w(developers), dirty_fixture_table_names 
     338    assert_equal %w(developers), loaded_fixture_table_names 
     339    assert_equal %w(developers), fixture_table_names 
     340  end 
     341end 
     342 
     343class FixtureCleanup6Test < FixtureCleanup4Test 
     344  self.use_instantiated_fixtures = true 
     345 
     346  def test_dirty_fixture_table_names 
     347    assert_equal [], dirty_fixture_table_names 
     348    assert_equal %w(developers), loaded_fixture_table_names 
     349    assert_equal %w(developers), fixture_table_names 
     350  end 
     351end 
     352 
     353class FixtureCleanup7Test < Test::Unit::TestCase 
     354  self.use_transactional_fixtures = false 
     355  self.use_instantiated_fixtures = true 
     356 
     357  def test_dirty_fixture_table_names 
     358    assert_equal [], dirty_fixture_table_names 
     359    assert_equal [], loaded_fixture_table_names 
     360    assert_equal [], fixture_table_names 
     361  end 
     362 
     363  def test_isolation 
     364    assert_equal 0, Topic.count 
     365    assert_equal 0, Developer.count 
     366  end 
     367end 
     368 
     369class FixtureCleanup8Test < FixtureCleanup7Test 
     370  self.use_transactional_fixtures = true 
     371  self.use_instantiated_fixtures = true 
     372end