diff options
Diffstat (limited to 'activerecord/test/cases/tasks/database_tasks_test.rb')
-rw-r--r-- | activerecord/test/cases/tasks/database_tasks_test.rb | 151 |
1 files changed, 82 insertions, 69 deletions
diff --git a/activerecord/test/cases/tasks/database_tasks_test.rb b/activerecord/test/cases/tasks/database_tasks_test.rb index ee53d576a1..a39a7371fe 100644 --- a/activerecord/test/cases/tasks/database_tasks_test.rb +++ b/activerecord/test/cases/tasks/database_tasks_test.rb @@ -156,20 +156,24 @@ module ActiveRecord class DatabaseTasksCreateAllTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations @configurations = { "development" => { "database" => "my-db" } } $stdout, @original_stdout = StringIO.new, $stdout $stderr, @original_stderr = StringIO.new, $stderr + + ActiveRecord::Base.configurations = @configurations end def teardown $stdout, $stderr = @original_stdout, @original_stderr + ActiveRecord::Base.configurations = @old_configurations end def test_ignores_configurations_without_databases @configurations["development"]["database"] = nil - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_not_called(ActiveRecord::Tasks::DatabaseTasks, :create) do ActiveRecord::Tasks::DatabaseTasks.create_all end @@ -179,7 +183,7 @@ module ActiveRecord def test_ignores_remote_databases @configurations["development"]["host"] = "my.server.tld" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_not_called(ActiveRecord::Tasks::DatabaseTasks, :create) do ActiveRecord::Tasks::DatabaseTasks.create_all end @@ -189,7 +193,7 @@ module ActiveRecord def test_warning_for_remote_databases @configurations["development"]["host"] = "my.server.tld" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do ActiveRecord::Tasks::DatabaseTasks.create_all assert_match "This task only modifies local databases. my-db is on a remote host.", @@ -200,7 +204,7 @@ module ActiveRecord def test_creates_configurations_with_local_ip @configurations["development"]["host"] = "127.0.0.1" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :create) do ActiveRecord::Tasks::DatabaseTasks.create_all end @@ -210,7 +214,7 @@ module ActiveRecord def test_creates_configurations_with_local_host @configurations["development"]["host"] = "localhost" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :create) do ActiveRecord::Tasks::DatabaseTasks.create_all end @@ -220,40 +224,33 @@ module ActiveRecord def test_creates_configurations_with_blank_hosts @configurations["development"]["host"] = nil - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :create) do ActiveRecord::Tasks::DatabaseTasks.create_all end end end - - private - - def with_stubbed_configurations_establish_connection - ActiveRecord::Base.stub(:configurations, @configurations) do - # To refrain from connecting to a newly created empty DB in - # sqlite3_mem tests - ActiveRecord::Base.connection_handler.stub( - :establish_connection, - nil - ) do - yield - end - end - end end class DatabaseTasksCreateCurrentTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations + @configurations = { "development" => { "database" => "dev-db" }, "test" => { "database" => "test-db" }, - "production" => { "url" => "prod-db-url" } + "production" => { "url" => "abstract://prod-db-url" } } + + ActiveRecord::Base.configurations = @configurations + end + + def teardown + ActiveRecord::Base.configurations = @old_configurations end def test_creates_current_environment_database - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -267,7 +264,7 @@ module ActiveRecord end def test_creates_current_environment_database_with_url - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -281,7 +278,7 @@ module ActiveRecord end def test_creates_test_and_development_databases_when_env_was_not_specified - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -301,7 +298,7 @@ module ActiveRecord old_env = ENV["RAILS_ENV"] ENV["RAILS_ENV"] = "development" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -328,29 +325,27 @@ module ActiveRecord end end end - - private - - def with_stubbed_configurations_establish_connection - ActiveRecord::Base.stub(:configurations, @configurations) do - ActiveRecord::Base.stub(:establish_connection, nil) do - yield - end - end - end end class DatabaseTasksCreateCurrentThreeTierTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations + @configurations = { "development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } }, "test" => { "primary" => { "database" => "test-db" }, "secondary" => { "database" => "secondary-test-db" } }, - "production" => { "primary" => { "url" => "prod-db-url" }, "secondary" => { "url" => "secondary-prod-db-url" } } + "production" => { "primary" => { "url" => "abstract://prod-db-url" }, "secondary" => { "url" => "abstract://secondary-prod-db-url" } } } + + ActiveRecord::Base.configurations = @configurations + end + + def teardown + ActiveRecord::Base.configurations = @old_configurations end def test_creates_current_environment_database - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -367,7 +362,7 @@ module ActiveRecord end def test_creates_current_environment_database_with_url - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -384,7 +379,7 @@ module ActiveRecord end def test_creates_test_and_development_databases_when_env_was_not_specified - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -406,7 +401,7 @@ module ActiveRecord old_env = ENV["RAILS_ENV"] ENV["RAILS_ENV"] = "development" - with_stubbed_configurations_establish_connection do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :create, @@ -439,16 +434,6 @@ module ActiveRecord end end end - - private - - def with_stubbed_configurations_establish_connection - ActiveRecord::Base.stub(:configurations, @configurations) do - ActiveRecord::Base.stub(:establish_connection, nil) do - yield - end - end - end end class DatabaseTasksDropTest < ActiveRecord::TestCase @@ -467,20 +452,24 @@ module ActiveRecord class DatabaseTasksDropAllTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations @configurations = { development: { "database" => "my-db" } } $stdout, @original_stdout = StringIO.new, $stdout $stderr, @original_stderr = StringIO.new, $stderr + + ActiveRecord::Base.configurations = @configurations end def teardown $stdout, $stderr = @original_stdout, @original_stderr + ActiveRecord::Base.configurations = @old_configurations end def test_ignores_configurations_without_databases @configurations[:development]["database"] = nil - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_not_called(ActiveRecord::Tasks::DatabaseTasks, :drop) do ActiveRecord::Tasks::DatabaseTasks.drop_all end @@ -490,7 +479,7 @@ module ActiveRecord def test_ignores_remote_databases @configurations[:development]["host"] = "my.server.tld" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_not_called(ActiveRecord::Tasks::DatabaseTasks, :drop) do ActiveRecord::Tasks::DatabaseTasks.drop_all end @@ -500,7 +489,7 @@ module ActiveRecord def test_warning_for_remote_databases @configurations[:development]["host"] = "my.server.tld" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do ActiveRecord::Tasks::DatabaseTasks.drop_all assert_match "This task only modifies local databases. my-db is on a remote host.", @@ -511,7 +500,7 @@ module ActiveRecord def test_drops_configurations_with_local_ip @configurations[:development]["host"] = "127.0.0.1" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :drop) do ActiveRecord::Tasks::DatabaseTasks.drop_all end @@ -521,7 +510,7 @@ module ActiveRecord def test_drops_configurations_with_local_host @configurations[:development]["host"] = "localhost" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :drop) do ActiveRecord::Tasks::DatabaseTasks.drop_all end @@ -531,7 +520,7 @@ module ActiveRecord def test_drops_configurations_with_blank_hosts @configurations[:development]["host"] = nil - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called(ActiveRecord::Tasks::DatabaseTasks, :drop) do ActiveRecord::Tasks::DatabaseTasks.drop_all end @@ -541,15 +530,22 @@ module ActiveRecord class DatabaseTasksDropCurrentTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations @configurations = { "development" => { "database" => "dev-db" }, "test" => { "database" => "test-db" }, - "production" => { "url" => "prod-db-url" } + "production" => { "url" => "abstract://prod-db-url" } } + + ActiveRecord::Base.configurations = @configurations + end + + def teardown + ActiveRecord::Base.configurations = @old_configurations end def test_drops_current_environment_database - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with(ActiveRecord::Tasks::DatabaseTasks, :drop, ["database" => "test-db"]) do ActiveRecord::Tasks::DatabaseTasks.drop_current( @@ -560,7 +556,7 @@ module ActiveRecord end def test_drops_current_environment_database_with_url - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with(ActiveRecord::Tasks::DatabaseTasks, :drop, ["url" => "prod-db-url"]) do ActiveRecord::Tasks::DatabaseTasks.drop_current( @@ -571,7 +567,7 @@ module ActiveRecord end def test_drops_test_and_development_databases_when_env_was_not_specified - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -591,7 +587,7 @@ module ActiveRecord old_env = ENV["RAILS_ENV"] ENV["RAILS_ENV"] = "development" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -612,15 +608,22 @@ module ActiveRecord class DatabaseTasksDropCurrentThreeTierTest < ActiveRecord::TestCase def setup + @old_configurations = ActiveRecord::Base.configurations @configurations = { "development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } }, "test" => { "primary" => { "database" => "test-db" }, "secondary" => { "database" => "secondary-test-db" } }, - "production" => { "primary" => { "url" => "prod-db-url" }, "secondary" => { "url" => "secondary-prod-db-url" } } + "production" => { "primary" => { "url" => "abstract://prod-db-url" }, "secondary" => { "url" => "abstract://secondary-prod-db-url" } } } + + ActiveRecord::Base.configurations = @configurations + end + + def teardown + ActiveRecord::Base.configurations = @old_configurations end def test_drops_current_environment_database - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -637,7 +640,7 @@ module ActiveRecord end def test_drops_current_environment_database_with_url - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -654,7 +657,7 @@ module ActiveRecord end def test_drops_test_and_development_databases_when_env_was_not_specified - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -676,7 +679,7 @@ module ActiveRecord old_env = ENV["RAILS_ENV"] ENV["RAILS_ENV"] = "development" - ActiveRecord::Base.stub(:configurations, @configurations) do + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :drop, @@ -848,12 +851,16 @@ module ActiveRecord class DatabaseTasksPurgeCurrentTest < ActiveRecord::TestCase def test_purges_current_environment_database + old_configurations = ActiveRecord::Base.configurations configurations = { "development" => { "database" => "dev-db" }, "test" => { "database" => "test-db" }, "production" => { "database" => "prod-db" } } - ActiveRecord::Base.stub(:configurations, configurations) do + + ActiveRecord::Base.configurations = configurations + + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :purge, @@ -864,13 +871,17 @@ module ActiveRecord end end end + ensure + ActiveRecord::Base.configurations = old_configurations end end class DatabaseTasksPurgeAllTest < ActiveRecord::TestCase def test_purge_all_local_configurations + old_configurations = ActiveRecord::Base.configurations configurations = { development: { "database" => "my-db" } } - ActiveRecord::Base.stub(:configurations, configurations) do + ActiveRecord::Base.configurations = configurations + ActiveRecord::Base.configurations do assert_called_with( ActiveRecord::Tasks::DatabaseTasks, :purge, @@ -879,6 +890,8 @@ module ActiveRecord ActiveRecord::Tasks::DatabaseTasks.purge_all end end + ensure + ActiveRecord::Base.configurations = old_configurations end end |