diff options
author | Pat Allan <pat@freelancing-gods.com> | 2012-06-17 21:37:44 +0200 |
---|---|---|
committer | Pat Allan <pat@freelancing-gods.com> | 2012-06-17 21:37:44 +0200 |
commit | 8d5710c8987b9d624e276f4f47f91130b46b0440 (patch) | |
tree | 9a0c820204f9b33681174528a876ee86b56e1642 /activerecord/test | |
parent | 4422e0342612b581687e809149e8fa71ff719104 (diff) | |
download | rails-8d5710c8987b9d624e276f4f47f91130b46b0440.tar.gz rails-8d5710c8987b9d624e276f4f47f91130b46b0440.tar.bz2 rails-8d5710c8987b9d624e276f4f47f91130b46b0440.zip |
Cleaning up after some warnings, adding slightly higher-level tests.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/database_tasks_test.rb | 296 | ||||
-rw-r--r-- | activerecord/test/cases/sqlite_rake_test.rb | 2 |
2 files changed, 296 insertions, 2 deletions
diff --git a/activerecord/test/cases/database_tasks_test.rb b/activerecord/test/cases/database_tasks_test.rb new file mode 100644 index 0000000000..3cb82a8683 --- /dev/null +++ b/activerecord/test/cases/database_tasks_test.rb @@ -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 diff --git a/activerecord/test/cases/sqlite_rake_test.rb b/activerecord/test/cases/sqlite_rake_test.rb index c6f533d375..ad7146e2a9 100644 --- a/activerecord/test/cases/sqlite_rake_test.rb +++ b/activerecord/test/cases/sqlite_rake_test.rb @@ -1,8 +1,6 @@ require 'cases/helper' require 'pathname' -module Rails; end unless defined?(Rails) - module ActiveRecord class SqliteDBCreateTest < ActiveRecord::TestCase def setup |