Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cleaning up after some warnings, adding slightly higher-level tests.
- Loading branch information
Showing
6 changed files
with
309 additions
and
9 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
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
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
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
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 | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -0,0 +1,296 @@ | |||
require 'cases/helper' | |||
|
|||
module ActiveRecord | |||
class DatabaseTasksCreateTest < ActiveRecord::TestCase | |||
def setup | |||
@mysql_tasks, @postgresql_tasks, @sqlite_tasks = stub, stub, stub | |||
|
|||
ActiveRecord::Tasks::MySQLDatabaseTasks.stubs(:new).returns @mysql_tasks | |||
ActiveRecord::Tasks::PostgreSQLDatabaseTasks.stubs(:new). | |||
returns @postgresql_tasks | |||
ActiveRecord::Tasks::SQLiteDatabaseTasks.stubs(:new).returns @sqlite_tasks | |||
end | |||
|
|||
def test_mysql_create | |||
@mysql_tasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create 'adapter' => 'mysql' | |||
end | |||
|
|||
def test_mysql2_create | |||
@mysql_tasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create 'adapter' => 'mysql2' | |||
end | |||
|
|||
def test_postgresql_create | |||
@postgresql_tasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create 'adapter' => 'postgresql' | |||
end | |||
|
|||
def test_sqlite_create | |||
@sqlite_tasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create 'adapter' => 'sqlite3' | |||
end | |||
end | |||
|
|||
class DatabaseTasksCreateAllTest < ActiveRecord::TestCase | |||
def setup | |||
@configurations = {'development' => {'database' => 'my-db'}} | |||
|
|||
ActiveRecord::Base.stubs(:configurations).returns(@configurations) | |||
end | |||
|
|||
def test_ignores_configurations_without_databases | |||
@configurations['development'].merge!('database' => nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create).never | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
|
|||
def test_ignores_remote_databases | |||
@configurations['development'].merge!('host' => 'my.server.tld') | |||
$stderr.stubs(:puts).returns(nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create).never | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
|
|||
def test_warning_for_remote_databases | |||
@configurations['development'].merge!('host' => 'my.server.tld') | |||
|
|||
$stderr.expects(:puts).with('This task only modifies local databases. my-db is on a remote host.') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
|
|||
def test_creates_configurations_with_local_ip | |||
@configurations['development'].merge!('host' => '127.0.0.1') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
|
|||
def test_creates_configurations_with_local_host | |||
@configurations['development'].merge!('host' => 'localhost') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
|
|||
def test_creates_configurations_with_blank_hosts | |||
@configurations['development'].merge!('host' => nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_all | |||
end | |||
end | |||
|
|||
class DatabaseTasksCreateCurrentTest < ActiveRecord::TestCase | |||
def setup | |||
@configurations = { | |||
'development' => {'database' => 'dev-db'}, | |||
'test' => {'database' => 'test-db'}, | |||
'production' => {'database' => 'prod-db'} | |||
} | |||
|
|||
ActiveRecord::Base.stubs(:configurations).returns(@configurations) | |||
ActiveRecord::Base.stubs(:establish_connection).returns(true) | |||
end | |||
|
|||
def test_creates_current_environment_database | |||
Rails.stubs(:env).returns ActiveSupport::StringInquirer.new('production') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create). | |||
with('database' => 'prod-db') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_current | |||
end | |||
|
|||
def test_creates_test_database_when_environment_is_database | |||
Rails.stubs(:env).returns ActiveSupport::StringInquirer.new('development') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:create). | |||
with('database' => 'dev-db') | |||
ActiveRecord::Tasks::DatabaseTasks.expects(:create). | |||
with('database' => 'test-db') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_current | |||
end | |||
|
|||
def test_establishes_connection_for_the_given_environment | |||
Rails.stubs(:env).returns ActiveSupport::StringInquirer.new('development') | |||
ActiveRecord::Tasks::DatabaseTasks.stubs(:create).returns true | |||
|
|||
ActiveRecord::Base.expects(:establish_connection).with('development') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.create_current | |||
end | |||
end | |||
|
|||
class DatabaseTasksDropTest < ActiveRecord::TestCase | |||
def setup | |||
@mysql_tasks, @postgresql_tasks, @sqlite_tasks = stub, stub, stub | |||
|
|||
ActiveRecord::Tasks::MySQLDatabaseTasks.stubs(:new).returns @mysql_tasks | |||
ActiveRecord::Tasks::PostgreSQLDatabaseTasks.stubs(:new). | |||
returns @postgresql_tasks | |||
ActiveRecord::Tasks::SQLiteDatabaseTasks.stubs(:new).returns @sqlite_tasks | |||
end | |||
|
|||
def test_mysql_create | |||
@mysql_tasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop 'adapter' => 'mysql' | |||
end | |||
|
|||
def test_mysql2_create | |||
@mysql_tasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop 'adapter' => 'mysql2' | |||
end | |||
|
|||
def test_postgresql_create | |||
@postgresql_tasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop 'adapter' => 'postgresql' | |||
end | |||
|
|||
def test_sqlite_create | |||
@sqlite_tasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop 'adapter' => 'sqlite3' | |||
end | |||
end | |||
|
|||
class DatabaseTasksDropAllTest < ActiveRecord::TestCase | |||
def setup | |||
@configurations = {:development => {'database' => 'my-db'}} | |||
|
|||
ActiveRecord::Base.stubs(:configurations).returns(@configurations) | |||
end | |||
|
|||
def test_ignores_configurations_without_databases | |||
@configurations[:development].merge!('database' => nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop).never | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
|
|||
def test_ignores_remote_databases | |||
@configurations[:development].merge!('host' => 'my.server.tld') | |||
$stderr.stubs(:puts).returns(nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop).never | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
|
|||
def test_warning_for_remote_databases | |||
@configurations[:development].merge!('host' => 'my.server.tld') | |||
|
|||
$stderr.expects(:puts).with('This task only modifies local databases. my-db is on a remote host.') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
|
|||
def test_creates_configurations_with_local_ip | |||
@configurations[:development].merge!('host' => '127.0.0.1') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
|
|||
def test_creates_configurations_with_local_host | |||
@configurations[:development].merge!('host' => 'localhost') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
|
|||
def test_creates_configurations_with_blank_hosts | |||
@configurations[:development].merge!('host' => nil) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_all | |||
end | |||
end | |||
|
|||
class DatabaseTasksDropCurrentTest < ActiveRecord::TestCase | |||
def setup | |||
@configurations = { | |||
'development' => {'database' => 'dev-db'}, | |||
'test' => {'database' => 'test-db'}, | |||
'production' => {'database' => 'prod-db'} | |||
} | |||
|
|||
ActiveRecord::Base.stubs(:configurations).returns(@configurations) | |||
end | |||
|
|||
def test_creates_current_environment_database | |||
Rails.stubs(:env).returns ActiveSupport::StringInquirer.new('production') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop). | |||
with('database' => 'prod-db') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_current | |||
end | |||
|
|||
def test_creates_test_database_when_environment_is_database | |||
Rails.stubs(:env).returns ActiveSupport::StringInquirer.new('development') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop). | |||
with('database' => 'dev-db') | |||
ActiveRecord::Tasks::DatabaseTasks.expects(:drop). | |||
with('database' => 'test-db') | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.drop_current | |||
end | |||
end | |||
|
|||
class DatabaseTasksPurgeTest < ActiveRecord::TestCase | |||
def setup | |||
@mysql_tasks, @postgresql_tasks, @sqlite_tasks = stub, stub, stub | |||
|
|||
ActiveRecord::Tasks::MySQLDatabaseTasks.stubs(:new).returns @mysql_tasks | |||
ActiveRecord::Tasks::PostgreSQLDatabaseTasks.stubs(:new). | |||
returns @postgresql_tasks | |||
ActiveRecord::Tasks::SQLiteDatabaseTasks.stubs(:new).returns @sqlite_tasks | |||
end | |||
|
|||
def test_mysql_create | |||
@mysql_tasks.expects(:purge) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.purge 'adapter' => 'mysql' | |||
end | |||
|
|||
def test_mysql2_create | |||
@mysql_tasks.expects(:purge) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.purge 'adapter' => 'mysql2' | |||
end | |||
|
|||
def test_postgresql_create | |||
@postgresql_tasks.expects(:purge) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.purge 'adapter' => 'postgresql' | |||
end | |||
|
|||
def test_sqlite_create | |||
@sqlite_tasks.expects(:purge) | |||
|
|||
ActiveRecord::Tasks::DatabaseTasks.purge 'adapter' => 'sqlite3' | |||
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