From 8a3dcd716c2c6b0fbd72633a1e58050aead75ee5 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 13 Jan 2012 14:13:31 -0800 Subject: stop depending on the filesystem for interleaved migration tests --- activerecord/test/cases/migration_test.rb | 21 ------------- activerecord/test/cases/migrator_test.rb | 50 ++++++++++++++++++++++++++++++- 2 files changed, 49 insertions(+), 22 deletions(-) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/migration_test.rb b/activerecord/test/cases/migration_test.rb index 0fae695a9c..0ca3ab9807 100644 --- a/activerecord/test/cases/migration_test.rb +++ b/activerecord/test/cases/migration_test.rb @@ -572,27 +572,6 @@ class MigrationTest < ActiveRecord::TestCase end end -class InterleavedMigrationsTest < ActiveRecord::TestCase - def test_migrator_interleaved_migrations - ActiveRecord::Migrator.up(MIGRATIONS_ROOT + "/interleaved/pass_1") - - assert_nothing_raised do - ActiveRecord::Migrator.up(MIGRATIONS_ROOT + "/interleaved/pass_2") - end - - Person.reset_column_information - assert Person.column_methods_hash.include?(:last_name) - - assert_nothing_raised do - proxies = ActiveRecord::Migrator.down( - MIGRATIONS_ROOT + "/interleaved/pass_3") - names = proxies.map(&:name) - assert names.include?('InterleavedPeopleHaveLastNames') - assert names.include?('InterleavedInnocentJointable') - end - end -end - class ReservedWordsMigrationTest < ActiveRecord::TestCase def test_drop_index_from_table_named_values connection = Person.connection diff --git a/activerecord/test/cases/migrator_test.rb b/activerecord/test/cases/migrator_test.rb index d938eca575..a2e5fd21e2 100644 --- a/activerecord/test/cases/migrator_test.rb +++ b/activerecord/test/cases/migrator_test.rb @@ -2,6 +2,31 @@ require "cases/helper" module ActiveRecord class MigratorTest < ActiveRecord::TestCase + # Use this class to sense if migrations have gone + # up or down. + class Sensor < ActiveRecord::Migration + attr_reader :went_up, :went_down + + def initialize name, version + super + @went_up = false + @went_down = false + end + + def up; @went_up = true; end + def down; @went_down = true; end + end + + def setup + super + ActiveRecord::SchemaMigration.delete_all rescue nil + end + + def teardown + super + ActiveRecord::SchemaMigration.delete_all rescue nil + end + def test_migrator_with_duplicate_names assert_raises(ActiveRecord::DuplicateMigrationNameError, "Multiple migrations have the name Chunky") do list = [Migration.new('Chunky'), Migration.new('Chunky')] @@ -57,7 +82,7 @@ module ActiveRecord def test_deprecated_constructor assert_deprecated do - ActiveRecord::Migrator.new(:up, MIGRATIONS_ROOT + "/interleaved/pass_2") + ActiveRecord::Migrator.new(:up, MIGRATIONS_ROOT + "/valid") end end @@ -80,5 +105,28 @@ module ActiveRecord assert_equal 1, migrations.size assert_equal migration_list.last, migrations.first end + + def test_migrator_interleaved_migrations + pass_one = [Sensor.new('One', 1)] + + ActiveRecord::Migrator.new(:up, pass_one).migrate + assert pass_one.first.went_up + refute pass_one.first.went_down + + pass_two = [Sensor.new('One', 1), Sensor.new('Three', 3)] + ActiveRecord::Migrator.new(:up, pass_two).migrate + refute pass_two[0].went_up + assert pass_two[1].went_up + assert pass_two.all? { |x| !x.went_down } + + pass_three = [Sensor.new('One', 1), + Sensor.new('Two', 2), + Sensor.new('Three', 3)] + + ActiveRecord::Migrator.new(:down, pass_three).migrate + assert pass_three[0].went_down + refute pass_three[1].went_down + assert pass_three[2].went_down + end end end -- cgit v1.2.3