未验证 提交 a95c2eca 编写于 作者: A Aaron Patterson 提交者: GitHub

Merge pull request #34453 from bogdanvlviv/exercise-connected_to-and-connects_to

Exercise `connected_to` and `connects_to` methods
......@@ -107,7 +107,7 @@ def connects_to(database: {})
# end
def connected_to(database: nil, role: nil, &blk)
if database && role
raise ArgumentError, "connected_to can only accept a database or role argument, but not both arguments."
raise ArgumentError, "connected_to can only accept a `database` or a `role` argument, but not both arguments."
elsif database
if database.is_a?(Hash)
role, database = database.first
......
......@@ -153,6 +153,20 @@ def test_switching_connections_with_database_config_hash
ENV["RAILS_ENV"] = previous_env
end
def test_switching_connections_with_database_and_role_raises
error = assert_raises(ArgumentError) do
ActiveRecord::Base.connected_to(database: :readonly, role: :writing) { }
end
assert_equal "connected_to can only accept a `database` or a `role` argument, but not both arguments.", error.message
end
def test_switching_connections_without_database_and_role_raises
error = assert_raises(ArgumentError) do
ActiveRecord::Base.connected_to { }
end
assert_equal "must provide a `database` or a `role`.", error.message
end
def test_switching_connections_with_database_symbol
previous_env, ENV["RAILS_ENV"] = ENV["RAILS_ENV"], "default_env"
......@@ -207,6 +221,27 @@ def test_connects_to_using_top_level_key_in_two_level_config
ActiveRecord::Base.configurations = @prev_configs
ActiveRecord::Base.establish_connection(:arunit)
end
def test_connects_to_returns_array_of_established_connections
config = {
"development" => { "adapter" => "sqlite3", "database" => "db/primary.sqlite3" },
"development_readonly" => { "adapter" => "sqlite3", "database" => "db/readonly.sqlite3" }
}
@prev_configs, ActiveRecord::Base.configurations = ActiveRecord::Base.configurations, config
result = ActiveRecord::Base.connects_to database: { writing: :development, reading: :development_readonly }
assert_equal(
[
ActiveRecord::Base.connection_handlers[:writing].retrieve_connection_pool("primary"),
ActiveRecord::Base.connection_handlers[:reading].retrieve_connection_pool("primary")
],
result
)
ensure
ActiveRecord::Base.configurations = @prev_configs
ActiveRecord::Base.establish_connection(:arunit)
end
end
def test_connection_pools
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册