annotate vendor/plugins/engines/test/unit/migration_test.rb @ 8:0c83d98252d9 yuya

* Add custom repo prefix and proper auth realm, remove auth cache (seems like an unwise feature), pass DB handle around, various other bits of tidying
author Chris Cannam
date Thu, 12 Aug 2010 15:31:37 +0100
parents 513646585e45
children
rev   line source
Chris@0 1 require File.dirname(__FILE__) + '/../test_helper'
Chris@0 2 require 'rails_generator'
Chris@0 3 require 'rails_generator/scripts/generate'
Chris@0 4
Chris@0 5 class MigrationsTest < Test::Unit::TestCase
Chris@0 6
Chris@0 7 @@migration_dir = "#{RAILS_ROOT}/db/migrate"
Chris@0 8
Chris@0 9 def setup
Chris@0 10 ActiveRecord::Migration.verbose = false
Chris@0 11 Engines.plugins[:test_migration].migrate(0)
Chris@0 12 end
Chris@0 13
Chris@0 14 def teardown
Chris@0 15 FileUtils.rm_r(@@migration_dir) if File.exist?(@@migration_dir)
Chris@0 16 end
Chris@0 17
Chris@0 18 def test_engine_migrations_can_run_down
Chris@0 19 assert !table_exists?('tests'), ActiveRecord::Base.connection.tables.inspect
Chris@0 20 assert !table_exists?('others'), ActiveRecord::Base.connection.tables.inspect
Chris@0 21 assert !table_exists?('extras'), ActiveRecord::Base.connection.tables.inspect
Chris@0 22 end
Chris@0 23
Chris@0 24 def test_engine_migrations_can_run_up
Chris@0 25 Engines.plugins[:test_migration].migrate(3)
Chris@0 26 assert table_exists?('tests')
Chris@0 27 assert table_exists?('others')
Chris@0 28 assert table_exists?('extras')
Chris@0 29 end
Chris@0 30
Chris@0 31 def test_engine_migrations_can_upgrade_incrementally
Chris@0 32 Engines.plugins[:test_migration].migrate(1)
Chris@0 33 assert table_exists?('tests')
Chris@0 34 assert !table_exists?('others')
Chris@0 35 assert !table_exists?('extras')
Chris@0 36 assert_equal 1, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
Chris@0 37
Chris@0 38
Chris@0 39 Engines.plugins[:test_migration].migrate(2)
Chris@0 40 assert table_exists?('others')
Chris@0 41 assert_equal 2, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
Chris@0 42
Chris@0 43
Chris@0 44 Engines.plugins[:test_migration].migrate(3)
Chris@0 45 assert table_exists?('extras')
Chris@0 46 assert_equal 3, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
Chris@0 47 end
Chris@0 48
Chris@0 49 def test_generator_creates_plugin_migration_file
Chris@0 50 Rails::Generator::Scripts::Generate.new.run(['plugin_migration', 'test_migration'], :quiet => true)
Chris@0 51 assert migration_file, "migration file is missing"
Chris@0 52 end
Chris@0 53
Chris@0 54 private
Chris@0 55
Chris@0 56 def table_exists?(table)
Chris@0 57 ActiveRecord::Base.connection.tables.include?(table)
Chris@0 58 end
Chris@0 59
Chris@0 60 def migration_file
Chris@0 61 Dir["#{@@migration_dir}/*test_migration_to_version_3.rb"][0]
Chris@0 62 end
Chris@0 63 end