From b02c07747274875a34838e037ae213d316253e19 Mon Sep 17 00:00:00 2001 From: Donal McBreen Date: Thu, 6 Nov 2025 11:27:47 +0000 Subject: [PATCH] Allow a single database in databases configuration No need to be strict about this, we know what the user means. --- lib/solid_cache/configuration.rb | 2 +- test/unit/configuration_test.rb | 37 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 test/unit/configuration_test.rb diff --git a/lib/solid_cache/configuration.rb b/lib/solid_cache/configuration.rb index 17efbaf..597f84a 100644 --- a/lib/solid_cache/configuration.rb +++ b/lib/solid_cache/configuration.rb @@ -37,7 +37,7 @@ def set_connects_to(database:, databases:, connects_to:) when database { shards: { database.to_sym => { writing: database.to_sym } } } when databases - { shards: databases.map(&:to_sym).index_with { |database| { writing: database } } } + { shards: Array(databases).map(&:to_sym).index_with { |database| { writing: database } } } when connects_to connects_to else diff --git a/test/unit/configuration_test.rb b/test/unit/configuration_test.rb new file mode 100644 index 0000000..63e2bb5 --- /dev/null +++ b/test/unit/configuration_test.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require "test_helper" + +class SolidCache::ConfigurationTest < ActiveSupport::TestCase + test "databases option accepts a single database name as a string" do + config = SolidCache::Configuration.new(databases: "cache") + assert_equal({ shards: { cache: { writing: :cache } } }, config.connects_to) + end + + test "databases option accepts a single database name as a symbol" do + config = SolidCache::Configuration.new(databases: :cache) + assert_equal({ shards: { cache: { writing: :cache } } }, config.connects_to) + end + + test "databases option accepts an array of database names" do + config = SolidCache::Configuration.new(databases: [:cache1, :cache2]) + assert_equal({ + shards: { + cache1: { writing: :cache1 }, + cache2: { writing: :cache2 } + } + }, config.connects_to) + end + + test "database option accepts a single database name" do + config = SolidCache::Configuration.new(database: :cache) + assert_equal({ shards: { cache: { writing: :cache } } }, 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]) + end + assert_equal "You can only specify one of :database, :databases, or :connects_to", error.message + end +end