Raise error when default is nil, add more specs

This commit is contained in:
Oliver Günther
2026-02-05 14:35:40 +01:00
parent 9ac8ec7ad1
commit 99d2263cf6
2 changed files with 39 additions and 2 deletions
+4
View File
@@ -1329,6 +1329,10 @@ module Settings
if persist_on_first_read && !writable
raise ArgumentError, "Settings using persist_on_first_read need to be writable"
end
if persist_on_first_read && default.nil?
raise ArgumentError, "Settings using persist_on_first_read need to have a default value"
end
end
def derive_default(default)
+35 -2
View File
@@ -666,6 +666,12 @@ RSpec.describe Setting do
it "returns the existing value" do
expect(described_class[setting_name]).to eq("existing_value")
end
it "can set the value to persist it and override the default" do
described_class[setting_name] = "another value"
read_value = described_class[setting_name]
expect(read_value).to eq("another value")
end
end
context "when settings table does not exist" do
@@ -682,12 +688,14 @@ RSpec.describe Setting do
describe ".persist_default_value", :settings_reset do
let(:setting_name) { "auto_init_test" }
let(:format) { :string }
let(:default) { -> { "test_value" } }
before do
Settings::Definition.add(
setting_name,
default: -> { "test_value" },
format: :string,
default:,
format:,
persist_on_first_read: true
)
end
@@ -718,5 +726,30 @@ RSpec.describe Setting do
expect(result).to eq("pre_existing")
end
end
context "with a more complex hash value" do
let(:format) { :hash }
let(:default) do
-> { { foo: :bar } }
end
it "returns the existing value" do
result = described_class.persist_default_value(setting_name)
expect(result).to eq({ foo: :bar })
end
end
end
describe ".persist_default_value with nil default", :settings_reset do
it "raises an error if persist_default_value is called without a default value" do
expect do
Settings::Definition.add(
:my_test_setting,
default: nil,
persist_on_first_read: true,
format: :string
)
end.to raise_error(ArgumentError)
end
end
end