view 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
line wrap: on
line source
require File.dirname(__FILE__) + '/../test_helper'
require 'rails_generator'
require 'rails_generator/scripts/generate'

class MigrationsTest < Test::Unit::TestCase
  
  @@migration_dir = "#{RAILS_ROOT}/db/migrate"

  def setup
    ActiveRecord::Migration.verbose = false
    Engines.plugins[:test_migration].migrate(0)
  end
  
  def teardown
    FileUtils.rm_r(@@migration_dir) if File.exist?(@@migration_dir)
  end
  
  def test_engine_migrations_can_run_down
    assert !table_exists?('tests'), ActiveRecord::Base.connection.tables.inspect
    assert !table_exists?('others'), ActiveRecord::Base.connection.tables.inspect
    assert !table_exists?('extras'), ActiveRecord::Base.connection.tables.inspect
  end
    
  def test_engine_migrations_can_run_up
    Engines.plugins[:test_migration].migrate(3)
    assert table_exists?('tests')
    assert table_exists?('others')
    assert table_exists?('extras')
  end
  
  def test_engine_migrations_can_upgrade_incrementally
    Engines.plugins[:test_migration].migrate(1)
    assert table_exists?('tests')
    assert !table_exists?('others')
    assert !table_exists?('extras')
    assert_equal 1, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
    
    
    Engines.plugins[:test_migration].migrate(2)
    assert table_exists?('others')
    assert_equal 2, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
    
    
    Engines.plugins[:test_migration].migrate(3)
    assert table_exists?('extras')
    assert_equal 3, Engines::Plugin::Migrator.current_version(Engines.plugins[:test_migration])
  end
    
  def test_generator_creates_plugin_migration_file
    Rails::Generator::Scripts::Generate.new.run(['plugin_migration', 'test_migration'], :quiet => true)
    assert migration_file, "migration file is missing"
  end
  
  private
  
  def table_exists?(table)
    ActiveRecord::Base.connection.tables.include?(table)
  end
  
  def migration_file
    Dir["#{@@migration_dir}/*test_migration_to_version_3.rb"][0]
  end
end