mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Remove some indirection in rake dbs test
Just pass in the expected database as argument rather than "caching" it in a hash and using the hash in the helper methods.
This commit is contained in:
parent
66dc576217
commit
97229c69ea
1 changed files with 20 additions and 34 deletions
|
@ -26,56 +26,48 @@ module ApplicationTests
|
|||
FileUtils.rm_rf("#{app_path}/config/database.yml")
|
||||
end
|
||||
|
||||
def expected
|
||||
@expected ||= {}
|
||||
end
|
||||
|
||||
def db_create_and_drop
|
||||
def db_create_and_drop(expected_database)
|
||||
Dir.chdir(app_path) do
|
||||
output = `bundle exec rake db:create`
|
||||
assert_empty output
|
||||
assert File.exist?(expected[:database])
|
||||
assert_equal expected[:database], ActiveRecord::Base.connection_config[:database]
|
||||
assert File.exist?(expected_database)
|
||||
assert_equal expected_database, ActiveRecord::Base.connection_config[:database]
|
||||
output = `bundle exec rake db:drop`
|
||||
assert_empty output
|
||||
assert !File.exist?(expected[:database])
|
||||
assert !File.exist?(expected_database)
|
||||
end
|
||||
end
|
||||
|
||||
test 'db:create and db:drop without database url' do
|
||||
require "#{app_path}/config/environment"
|
||||
expected[:database] = ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
db_create_and_drop
|
||||
db_create_and_drop ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
end
|
||||
|
||||
test 'db:create and db:drop with database url' do
|
||||
require "#{app_path}/config/environment"
|
||||
set_database_url
|
||||
expected[:database] = database_url_db_name
|
||||
db_create_and_drop
|
||||
db_create_and_drop database_url_db_name
|
||||
end
|
||||
|
||||
def db_migrate_and_status
|
||||
def db_migrate_and_status(expected_database)
|
||||
Dir.chdir(app_path) do
|
||||
`rails generate model book title:string;
|
||||
bundle exec rake db:migrate`
|
||||
output = `bundle exec rake db:migrate:status`
|
||||
assert_match(%r{database:\s+\S*#{Regexp.escape(expected[:database])}}, output)
|
||||
assert_match(%r{database:\s+\S*#{Regexp.escape(expected_database)}}, output)
|
||||
assert_match(/up\s+\d{14}\s+Create books/, output)
|
||||
end
|
||||
end
|
||||
|
||||
test 'db:migrate and db:migrate:status without database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
expected[:database] = ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
db_migrate_and_status
|
||||
db_migrate_and_status ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
end
|
||||
|
||||
test 'db:migrate and db:migrate:status with database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
set_database_url
|
||||
expected[:database] = database_url_db_name
|
||||
db_migrate_and_status
|
||||
db_migrate_and_status database_url_db_name
|
||||
end
|
||||
|
||||
def db_schema_dump
|
||||
|
@ -96,12 +88,11 @@ module ApplicationTests
|
|||
db_schema_dump
|
||||
end
|
||||
|
||||
def db_fixtures_load
|
||||
def db_fixtures_load(expected_database)
|
||||
Dir.chdir(app_path) do
|
||||
`rails generate model book title:string;
|
||||
bundle exec rake db:migrate db:fixtures:load`
|
||||
assert_match(/#{expected[:database]}/,
|
||||
ActiveRecord::Base.connection_config[:database])
|
||||
assert_match expected_database, ActiveRecord::Base.connection_config[:database]
|
||||
require "#{app_path}/app/models/book"
|
||||
assert_equal 2, Book.count
|
||||
end
|
||||
|
@ -109,26 +100,23 @@ module ApplicationTests
|
|||
|
||||
test 'db:fixtures:load without database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
expected[:database] = ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
db_fixtures_load
|
||||
db_fixtures_load ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
end
|
||||
|
||||
test 'db:fixtures:load with database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
set_database_url
|
||||
expected[:database] = database_url_db_name
|
||||
db_fixtures_load
|
||||
db_fixtures_load database_url_db_name
|
||||
end
|
||||
|
||||
def db_structure_dump_and_load
|
||||
def db_structure_dump_and_load(expected_database)
|
||||
Dir.chdir(app_path) do
|
||||
`rails generate model book title:string;
|
||||
bundle exec rake db:migrate db:structure:dump`
|
||||
structure_dump = File.read("db/structure.sql")
|
||||
assert_match(/CREATE TABLE \"books\"/, structure_dump)
|
||||
`bundle exec rake environment db:drop db:structure:load`
|
||||
assert_match(/#{expected[:database]}/,
|
||||
ActiveRecord::Base.connection_config[:database])
|
||||
assert_match expected_database, ActiveRecord::Base.connection_config[:database]
|
||||
require "#{app_path}/app/models/book"
|
||||
#if structure is not loaded correctly, exception would be raised
|
||||
assert_equal 0, Book.count
|
||||
|
@ -137,15 +125,13 @@ module ApplicationTests
|
|||
|
||||
test 'db:structure:dump and db:structure:load without database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
expected[:database] = ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
db_structure_dump_and_load
|
||||
db_structure_dump_and_load ActiveRecord::Base.configurations[Rails.env]['database']
|
||||
end
|
||||
|
||||
test 'db:structure:dump and db:structure:load with database_url' do
|
||||
require "#{app_path}/config/environment"
|
||||
set_database_url
|
||||
expected[:database] = database_url_db_name
|
||||
db_structure_dump_and_load
|
||||
db_structure_dump_and_load database_url_db_name
|
||||
end
|
||||
|
||||
def db_test_load_structure
|
||||
|
@ -157,8 +143,8 @@ module ApplicationTests
|
|||
require "#{app_path}/app/models/book"
|
||||
#if structure is not loaded correctly, exception would be raised
|
||||
assert_equal 0, Book.count
|
||||
assert_match(/#{ActiveRecord::Base.configurations['test']['database']}/,
|
||||
ActiveRecord::Base.connection_config[:database])
|
||||
assert_match ActiveRecord::Base.configurations['test']['database'],
|
||||
ActiveRecord::Base.connection_config[:database]
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue