提交 97229c69 编写于 作者: C Carlos Antonio da Silva

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.
上级 66dc5762
......@@ -26,56 +26,48 @@ def set_database_url
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 @@ def db_schema_dump
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 @@ def db_fixtures_load
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 @@ def db_structure_dump_and_load
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 @@ def db_test_load_structure
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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册