Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Moves migrations tests from railties/test/application/rake_test.rb to…
… railties/test/application/rake/migrations_test.rb
- Loading branch information
1 parent
c45f744
commit c6e6ce4
Showing
2 changed files
with
85 additions
and
68 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
require "isolation/abstract_unit" | ||
|
||
module ApplicationTests | ||
module RakeTests | ||
class RakeMigrationsTest < Test::Unit::TestCase | ||
def setup | ||
build_app | ||
boot_rails | ||
FileUtils.rm_rf("#{app_path}/config/environments") | ||
end | ||
|
||
def teardown | ||
teardown_app | ||
end | ||
|
||
test 'model and migration generator with change syntax' do | ||
Dir.chdir(app_path) do | ||
`rails generate model user username:string password:string` | ||
`rails generate migration add_email_to_users email:string` | ||
end | ||
|
||
output = Dir.chdir(app_path){ `rake db:migrate` } | ||
assert_match(/create_table\(:users\)/, output) | ||
assert_match(/CreateUsers: migrated/, output) | ||
assert_match(/add_column\(:users, :email, :string\)/, output) | ||
assert_match(/AddEmailToUsers: migrated/, output) | ||
|
||
output = Dir.chdir(app_path){ `rake db:rollback STEP=2` } | ||
assert_match(/drop_table\("users"\)/, output) | ||
assert_match(/CreateUsers: reverted/, output) | ||
assert_match(/remove_column\("users", :email\)/, output) | ||
assert_match(/AddEmailToUsers: reverted/, output) | ||
end | ||
|
||
test 'migration status when schema migrations table is not present' do | ||
output = Dir.chdir(app_path){ `rake db:migrate:status` } | ||
assert_equal "Schema migrations table does not exist yet.\n", output | ||
end | ||
|
||
test 'test migration status' do | ||
Dir.chdir(app_path) do | ||
`rails generate model user username:string password:string` | ||
`rails generate migration add_email_to_users email:string` | ||
end | ||
|
||
Dir.chdir(app_path) { `rake db:migrate`} | ||
output = Dir.chdir(app_path) { `rake db:migrate:status` } | ||
|
||
assert_match(/up\s+\d{14}\s+Create users/, output) | ||
assert_match(/up\s+\d{14}\s+Add email to users/, output) | ||
|
||
Dir.chdir(app_path) { `rake db:rollback STEP=1` } | ||
output = Dir.chdir(app_path) { `rake db:migrate:status` } | ||
|
||
assert_match(/up\s+\d{14}\s+Create users/, output) | ||
assert_match(/down\s+\d{14}\s+Add email to users/, output) | ||
end | ||
|
||
test 'test migration status after rollback and redo' do | ||
Dir.chdir(app_path) do | ||
`rails generate model user username:string password:string` | ||
`rails generate migration add_email_to_users email:string` | ||
end | ||
|
||
Dir.chdir(app_path) { `rake db:migrate`} | ||
output = Dir.chdir(app_path) { `rake db:migrate:status` } | ||
|
||
assert_match(/up\s+\d{14}\s+Create users/, output) | ||
assert_match(/up\s+\d{14}\s+Add email to users/, output) | ||
|
||
Dir.chdir(app_path) { `rake db:rollback STEP=2` } | ||
output = Dir.chdir(app_path) { `rake db:migrate:status` } | ||
|
||
assert_match(/down\s+\d{14}\s+Create users/, output) | ||
assert_match(/down\s+\d{14}\s+Add email to users/, output) | ||
|
||
Dir.chdir(app_path) { `rake db:migrate:redo` } | ||
output = Dir.chdir(app_path) { `rake db:migrate:status` } | ||
|
||
assert_match(/up\s+\d{14}\s+Create users/, output) | ||
assert_match(/up\s+\d{14}\s+Add email to users/, output) | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters