aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/tasks
diff options
context:
space:
mode:
authorEugene Kenny <elkenny@gmail.com>2018-03-31 15:26:46 +0100
committerEugene Kenny <elkenny@gmail.com>2018-03-31 15:26:46 +0100
commit726e21e86ef092ebf8199041ba24ba492baca27f (patch)
treee9e5712112cfb07bcec99248ed4f57ab1340329d /activerecord/test/cases/tasks
parentf4680e492331ccf205ca6cc77d9cdf12d315deb0 (diff)
downloadrails-726e21e86ef092ebf8199041ba24ba492baca27f.tar.gz
rails-726e21e86ef092ebf8199041ba24ba492baca27f.tar.bz2
rails-726e21e86ef092ebf8199041ba24ba492baca27f.zip
Fix two-level database configurations with URLs
An entry in `ActiveRecord::Base.configurations` can either be a connection spec ("two-level") or a hash of specs ("three-level"). We were detecting two-level configurations by looking for the `database` key, but the database can also be specified as part of the `url` key, which meant we incorrectly treated those configurations as three-level.
Diffstat (limited to 'activerecord/test/cases/tasks')
-rw-r--r--activerecord/test/cases/tasks/database_tasks_test.rb62
1 files changed, 52 insertions, 10 deletions
diff --git a/activerecord/test/cases/tasks/database_tasks_test.rb b/activerecord/test/cases/tasks/database_tasks_test.rb
index 38c2c8b2f3..48d1fc7eb0 100644
--- a/activerecord/test/cases/tasks/database_tasks_test.rb
+++ b/activerecord/test/cases/tasks/database_tasks_test.rb
@@ -179,7 +179,7 @@ module ActiveRecord
@configurations = {
"development" => { "database" => "dev-db" },
"test" => { "database" => "test-db" },
- "production" => { "database" => "prod-db" }
+ "production" => { "url" => "prod-db-url" }
}
ActiveRecord::Base.stubs(:configurations).returns(@configurations)
@@ -188,7 +188,16 @@ module ActiveRecord
def test_creates_current_environment_database
ActiveRecord::Tasks::DatabaseTasks.expects(:create).
- with("database" => "prod-db")
+ with("database" => "test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.create_current(
+ ActiveSupport::StringInquirer.new("test")
+ )
+ end
+
+ def test_creates_current_environment_database_with_url
+ ActiveRecord::Tasks::DatabaseTasks.expects(:create).
+ with("url" => "prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.create_current(
ActiveSupport::StringInquirer.new("production")
@@ -237,7 +246,7 @@ module ActiveRecord
@configurations = {
"development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } },
"test" => { "primary" => { "database" => "test-db" }, "secondary" => { "database" => "secondary-test-db" } },
- "production" => { "primary" => { "database" => "prod-db" }, "secondary" => { "database" => "secondary-prod-db" } }
+ "production" => { "primary" => { "url" => "prod-db-url" }, "secondary" => { "url" => "secondary-prod-db-url" } }
}
ActiveRecord::Base.stubs(:configurations).returns(@configurations)
@@ -246,10 +255,22 @@ module ActiveRecord
def test_creates_current_environment_database
ActiveRecord::Tasks::DatabaseTasks.expects(:create).
- with("database" => "prod-db")
+ with("database" => "test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.expects(:create).
+ with("database" => "secondary-test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.create_current(
+ ActiveSupport::StringInquirer.new("test")
+ )
+ end
+
+ def test_creates_current_environment_database_with_url
+ ActiveRecord::Tasks::DatabaseTasks.expects(:create).
+ with("url" => "prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.expects(:create).
- with("database" => "secondary-prod-db")
+ with("url" => "secondary-prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.create_current(
ActiveSupport::StringInquirer.new("production")
@@ -374,7 +395,7 @@ module ActiveRecord
@configurations = {
"development" => { "database" => "dev-db" },
"test" => { "database" => "test-db" },
- "production" => { "database" => "prod-db" }
+ "production" => { "url" => "prod-db-url" }
}
ActiveRecord::Base.stubs(:configurations).returns(@configurations)
@@ -382,7 +403,16 @@ module ActiveRecord
def test_drops_current_environment_database
ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
- with("database" => "prod-db")
+ with("database" => "test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.drop_current(
+ ActiveSupport::StringInquirer.new("test")
+ )
+ end
+
+ def test_drops_current_environment_database_with_url
+ ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
+ with("url" => "prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.drop_current(
ActiveSupport::StringInquirer.new("production")
@@ -421,7 +451,7 @@ module ActiveRecord
@configurations = {
"development" => { "primary" => { "database" => "dev-db" }, "secondary" => { "database" => "secondary-dev-db" } },
"test" => { "primary" => { "database" => "test-db" }, "secondary" => { "database" => "secondary-test-db" } },
- "production" => { "primary" => { "database" => "prod-db" }, "secondary" => { "database" => "secondary-prod-db" } }
+ "production" => { "primary" => { "url" => "prod-db-url" }, "secondary" => { "url" => "secondary-prod-db-url" } }
}
ActiveRecord::Base.stubs(:configurations).returns(@configurations)
@@ -429,10 +459,22 @@ module ActiveRecord
def test_drops_current_environment_database
ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
- with("database" => "prod-db")
+ with("database" => "test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
+ with("database" => "secondary-test-db")
+
+ ActiveRecord::Tasks::DatabaseTasks.drop_current(
+ ActiveSupport::StringInquirer.new("test")
+ )
+ end
+
+ def test_drops_current_environment_database_with_url
+ ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
+ with("url" => "prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.expects(:drop).
- with("database" => "secondary-prod-db")
+ with("url" => "secondary-prod-db-url")
ActiveRecord::Tasks::DatabaseTasks.drop_current(
ActiveSupport::StringInquirer.new("production")