2019-02-12 15:42:44 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "cases/helper"
|
|
|
|
|
|
|
|
class DatabaseConfigurationsTest < ActiveRecord::TestCase
|
|
|
|
unless in_memory_db?
|
|
|
|
def test_empty_returns_true_when_db_configs_are_empty
|
|
|
|
old_config = ActiveRecord::Base.configurations
|
|
|
|
config = {}
|
|
|
|
|
|
|
|
ActiveRecord::Base.configurations = config
|
|
|
|
|
|
|
|
assert_predicate ActiveRecord::Base.configurations, :empty?
|
|
|
|
assert_predicate ActiveRecord::Base.configurations, :blank?
|
|
|
|
ensure
|
|
|
|
ActiveRecord::Base.configurations = old_config
|
|
|
|
ActiveRecord::Base.establish_connection :arunit
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_configs_for_getter_with_env_name
|
|
|
|
configs = ActiveRecord::Base.configurations.configs_for(env_name: "arunit")
|
|
|
|
|
|
|
|
assert_equal 1, configs.size
|
|
|
|
assert_equal ["arunit"], configs.map(&:env_name)
|
|
|
|
end
|
|
|
|
|
2020-02-20 14:06:17 -05:00
|
|
|
def test_configs_for_getter_with_name
|
2019-12-03 14:34:45 -05:00
|
|
|
previous_env, ENV["RAILS_ENV"] = ENV["RAILS_ENV"], "arunit2"
|
|
|
|
|
2020-02-20 14:06:17 -05:00
|
|
|
config = ActiveRecord::Base.configurations.configs_for(name: "primary")
|
2019-12-03 14:34:45 -05:00
|
|
|
|
|
|
|
assert_equal "arunit2", config.env_name
|
2020-02-20 14:06:17 -05:00
|
|
|
assert_equal "primary", config.name
|
2019-12-03 14:34:45 -05:00
|
|
|
ensure
|
|
|
|
ENV["RAILS_ENV"] = previous_env
|
|
|
|
end
|
|
|
|
|
2020-02-20 14:06:17 -05:00
|
|
|
def test_configs_for_getter_with_env_and_name
|
|
|
|
config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
|
2019-02-12 15:42:44 -05:00
|
|
|
|
|
|
|
assert_equal "arunit", config.env_name
|
2020-02-20 14:06:17 -05:00
|
|
|
assert_equal "primary", config.name
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_default_hash_returns_config_hash_from_default_env
|
|
|
|
original_rails_env = ENV["RAILS_ENV"]
|
|
|
|
ENV["RAILS_ENV"] = "arunit"
|
|
|
|
|
2019-12-17 16:47:55 -05:00
|
|
|
assert_deprecated do
|
2020-02-20 14:06:17 -05:00
|
|
|
assert_equal ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary").configuration_hash, ActiveRecord::Base.configurations.default_hash
|
2019-12-17 16:47:55 -05:00
|
|
|
end
|
2019-02-12 15:42:44 -05:00
|
|
|
ensure
|
|
|
|
ENV["RAILS_ENV"] = original_rails_env
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_find_db_config_returns_a_db_config_object_for_the_given_env
|
|
|
|
config = ActiveRecord::Base.configurations.find_db_config("arunit2")
|
|
|
|
|
|
|
|
assert_equal "arunit2", config.env_name
|
2020-02-20 14:06:17 -05:00
|
|
|
assert_equal "primary", config.name
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
|
2020-07-06 05:24:05 -04:00
|
|
|
def test_find_db_config_prioritize_db_config_object_for_the_current_env
|
|
|
|
config = ActiveRecord::DatabaseConfigurations.new({
|
|
|
|
"primary" => {
|
|
|
|
"adapter" => "randomadapter"
|
|
|
|
},
|
|
|
|
ActiveRecord::ConnectionHandling::DEFAULT_ENV.call => {
|
|
|
|
"primary" => {
|
|
|
|
"adapter" => "sqlite3",
|
|
|
|
"database" => ":memory:"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}).find_db_config("primary")
|
|
|
|
|
|
|
|
assert_equal "primary", config.name
|
|
|
|
assert_equal ActiveRecord::ConnectionHandling::DEFAULT_ENV.call, config.env_name
|
|
|
|
assert_equal ":memory:", config.database
|
|
|
|
end
|
|
|
|
|
2019-09-17 14:27:41 -04:00
|
|
|
def test_to_h_turns_db_config_object_back_into_a_hash_and_is_deprecated
|
2019-02-12 15:42:44 -05:00
|
|
|
configs = ActiveRecord::Base.configurations
|
|
|
|
assert_equal "ActiveRecord::DatabaseConfigurations", configs.class.name
|
2019-09-17 14:27:41 -04:00
|
|
|
assert_deprecated do
|
|
|
|
assert_equal "Hash", configs.to_h.class.name
|
|
|
|
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements"], ActiveRecord::Base.configurations.to_h.keys.sort
|
|
|
|
end
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class LegacyDatabaseConfigurationsTest < ActiveRecord::TestCase
|
|
|
|
unless in_memory_db?
|
|
|
|
def test_setting_configurations_hash
|
|
|
|
old_config = ActiveRecord::Base.configurations
|
|
|
|
config = { "adapter" => "sqlite3" }
|
|
|
|
|
|
|
|
assert_deprecated do
|
|
|
|
ActiveRecord::Base.configurations["readonly"] = config
|
|
|
|
end
|
|
|
|
|
|
|
|
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements", "readonly"], ActiveRecord::Base.configurations.configs_for.map(&:env_name).sort
|
|
|
|
ensure
|
|
|
|
ActiveRecord::Base.configurations = old_config
|
|
|
|
ActiveRecord::Base.establish_connection :arunit
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-09-17 14:27:41 -04:00
|
|
|
def test_can_turn_configurations_into_a_hash_and_is_deprecated
|
|
|
|
assert_deprecated do
|
|
|
|
assert ActiveRecord::Base.configurations.to_h.is_a?(Hash), "expected to be a hash but was not."
|
|
|
|
assert_equal ["arunit", "arunit2", "arunit_without_prepared_statements"].sort, ActiveRecord::Base.configurations.to_h.keys.sort
|
|
|
|
end
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_each_is_deprecated
|
|
|
|
assert_deprecated do
|
2019-07-26 12:58:55 -04:00
|
|
|
all_configs = ActiveRecord::Base.configurations.values
|
|
|
|
ActiveRecord::Base.configurations.each do |env_name, config|
|
|
|
|
assert_includes ["arunit", "arunit2", "arunit_without_prepared_statements"], env_name
|
|
|
|
assert_includes all_configs, config
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_first_is_deprecated
|
2019-09-12 13:10:57 -04:00
|
|
|
first_config = ActiveRecord::Base.configurations.configurations.map(&:configuration_hash).first
|
2019-02-12 15:42:44 -05:00
|
|
|
assert_deprecated do
|
2019-07-26 12:58:55 -04:00
|
|
|
env_name, config = ActiveRecord::Base.configurations.first
|
|
|
|
assert_equal "arunit", env_name
|
|
|
|
assert_equal first_config, config
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_fetch_is_deprecated
|
|
|
|
assert_deprecated do
|
|
|
|
db_config = ActiveRecord::Base.configurations.fetch("arunit").first
|
|
|
|
assert_equal "arunit", db_config.env_name
|
2020-02-20 14:06:17 -05:00
|
|
|
assert_equal "primary", db_config.name
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_values_are_deprecated
|
2019-09-12 13:10:57 -04:00
|
|
|
config_hashes = ActiveRecord::Base.configurations.configurations.map(&:configuration_hash)
|
2019-02-12 15:42:44 -05:00
|
|
|
assert_deprecated do
|
|
|
|
assert_equal config_hashes, ActiveRecord::Base.configurations.values
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-09-12 13:10:57 -04:00
|
|
|
def test_deprecated_config_method
|
2020-02-20 14:06:17 -05:00
|
|
|
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
|
2019-09-12 13:10:57 -04:00
|
|
|
|
|
|
|
assert_equal db_config.configuration_hash.stringify_keys, assert_deprecated { db_config.config }
|
|
|
|
end
|
|
|
|
|
2019-02-12 15:42:44 -05:00
|
|
|
def test_unsupported_method_raises
|
|
|
|
assert_raises NotImplementedError do
|
|
|
|
ActiveRecord::Base.configurations.select { |a| a == "foo" }
|
|
|
|
end
|
|
|
|
end
|
2020-02-20 14:06:17 -05:00
|
|
|
|
|
|
|
def test_spec_name_in_configs_for_is_deprecated
|
|
|
|
assert_deprecated do
|
|
|
|
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", spec_name: "primary")
|
|
|
|
|
|
|
|
assert_equal "primary", db_config.name
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_spec_name_getter_is_deprecated
|
|
|
|
db_config = ActiveRecord::Base.configurations.configs_for(env_name: "arunit", name: "primary")
|
|
|
|
|
|
|
|
assert_deprecated do
|
|
|
|
assert_equal "primary", db_config.spec_name
|
|
|
|
end
|
|
|
|
end
|
2019-02-12 15:42:44 -05:00
|
|
|
end
|