diff --git a/lib/solid_cache/configuration.rb b/lib/solid_cache/configuration.rb index 597f84a..1f0a47d 100644 --- a/lib/solid_cache/configuration.rb +++ b/lib/solid_cache/configuration.rb @@ -34,10 +34,8 @@ def set_connects_to(database:, databases:, connects_to:) @connects_to = case - when database - { shards: { database.to_sym => { writing: database.to_sym } } } - when databases - { shards: Array(databases).map(&:to_sym).index_with { |database| { writing: database } } } + when (dbs = database || databases) + { shards: Array(dbs).map(&:to_sym).index_with { |db| { writing: db } } } when connects_to connects_to else diff --git a/test/unit/configuration_test.rb b/test/unit/configuration_test.rb index 63e2bb5..3f85af1 100644 --- a/test/unit/configuration_test.rb +++ b/test/unit/configuration_test.rb @@ -28,6 +28,27 @@ class SolidCache::ConfigurationTest < ActiveSupport::TestCase assert_equal({ shards: { cache: { writing: :cache } } }, config.connects_to) end + test "database option also accepts an array of database names" do + config = SolidCache::Configuration.new(database: [:cache1, :cache2]) + assert_equal({ + shards: { + cache1: { writing: :cache1 }, + cache2: { writing: :cache2 } + } + }, config.connects_to) + end + + test "should respect connects_to option" do + connects_to = { + shards: { + cache1: { writing: :cache1 }, + cache2: { writing: :cache2 } + } + } + config = SolidCache::Configuration.new(connects_to: connects_to) + assert_equal(connects_to, config.connects_to) + end + test "raises ArgumentError when multiple connection options are provided" do error = assert_raises(ArgumentError) do SolidCache::Configuration.new(database: :cache, databases: [:cache1])