require File.join(File.dirname(__FILE__), "test_helper") class DuplicateMigrationsTest < Test::Unit::TestCase def setup ensure_database! end def test_incremental_up assert no_tables_exist? assert no_schemas_exist? run_migration(1) assert tables_exist?(:bobs) assert tables_dont_exist?(:joes, :toms, :freds) assert schemas_exist?(:create_bobs) assert schemas_dont_exist?(:create_joes, :create_toms, :create_freds, :create_johns) run_migration(2) assert tables_exist?(:bobs, :toms, :joes) assert tables_dont_exist?(:freds) assert schemas_exist?(:create_bobs, :create_joes, :create_toms) assert schemas_dont_exist?(:create_freds, :create_johns) run_migration assert tables_exist?(:freds, :bobs, :toms, :joes, :johns) assert schemas_exist?(:create_bobs, :create_joes, :create_toms, :create_freds, :create_johns) end def test_incremental_down run_migration assert tables_exist?(:freds, :bobs, :toms, :joes, :johns) assert schemas_exist?(:create_bobs, :create_joes, :create_toms, :create_freds, :create_johns) run_migration(2) assert tables_exist?(:bobs, :toms, :joes) assert tables_dont_exist?(:freds) assert schemas_exist?(:create_bobs, :create_joes, :create_toms) assert schemas_dont_exist?(:create_freds, :create_johns) run_migration(1) assert tables_exist?(:bobs) assert tables_dont_exist?(:joes, :toms, :freds) assert schemas_exist?(:create_bobs) assert schemas_dont_exist?(:create_joes, :create_toms, :create_freds, :create_johns) run_migration(0) assert tables_dont_exist?(:freds, :bobs, :toms, :joes, :johns) assert no_schemas_exist? end def test_covert_to_duplicates assert no_tables_exist? assert no_schemas_exist? run_migration_without_duplicates(1, File.join(File.dirname(__FILE__), "migrations_no_dup", "")) assert tables_exist?(:bobs) assert tables_dont_exist?(:joes, :toms, :freds) convert_from_non_duplicates assert tables_exist?(:bobs) assert tables_dont_exist?(:joes, :toms, :freds) assert schemas_exist?(:create_bobs) assert schemas_dont_exist?(:create_joes, :create_toms, :create_freds, :create_johns) end def test_covert_from_duplicates assert no_tables_exist? assert no_schemas_exist? run_migration(2, File.join(File.dirname(__FILE__), "migrations_no_dup", "")) assert tables_exist?(:bobs, :joes) assert tables_dont_exist?(:toms) assert schemas_exist?(:create_bobs, :create_joes) assert schemas_dont_exist?(:create_toms) convert_from_duplicates assert tables_exist?(:bobs, :joes) assert tables_dont_exist?(:toms) assert_equal 2, ActiveRecord::Migrator.current_version end def test_migrations_before_nil @fake_migrator = ActiveRecord::Migrator.new(:up, File.join(File.dirname(__FILE__), "migrations", "")) assert_equal "[[1, CreateBobs], [2, CreateJoes], [2, CreateToms], [3, CreateFreds], [4, CreateJohns]]", @fake_migrator.send(:migration_classes_before, nil).inspect end def test_migrations_before @fake_migrator = ActiveRecord::Migrator.new(:up, File.join(File.dirname(__FILE__), "migrations", "")) assert_equal "[[1, CreateBobs], [2, CreateJoes], [2, CreateToms]]", @fake_migrator.send(:migration_classes_before, 2).inspect end def test_migrations_after @fake_migrator = ActiveRecord::Migrator.new(:up, File.join(File.dirname(__FILE__), "migrations", "")) assert_equal "[[4, CreateJohns], [3, CreateFreds]]", @fake_migrator.send(:migration_classes_after, 2).inspect end def test_migrations_after_nil @fake_migrator = ActiveRecord::Migrator.new(:up, File.join(File.dirname(__FILE__), "migrations", "")) assert_equal "[]", @fake_migrator.send(:migration_classes_after, nil).inspect end end