aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/migrator_test.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-01-13 14:13:31 -0800
committerAaron Patterson <aaron.patterson@gmail.com>2012-01-13 14:33:59 -0800
commit8a3dcd716c2c6b0fbd72633a1e58050aead75ee5 (patch)
tree84905227e97a2ddf9986247add8556a614fcb66d /activerecord/test/cases/migrator_test.rb
parentb9323100253eafe6882f4c114fe6732dadc55cea (diff)
downloadrails-8a3dcd716c2c6b0fbd72633a1e58050aead75ee5.tar.gz
rails-8a3dcd716c2c6b0fbd72633a1e58050aead75ee5.tar.bz2
rails-8a3dcd716c2c6b0fbd72633a1e58050aead75ee5.zip
stop depending on the filesystem for interleaved migration tests
Diffstat (limited to 'activerecord/test/cases/migrator_test.rb')
-rw-r--r--activerecord/test/cases/migrator_test.rb50
1 files changed, 49 insertions, 1 deletions
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