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 |