Add method to add new settings
This commit is contained in:
@@ -125,5 +125,11 @@ class Setting < ApplicationRecord
|
|||||||
def reset_defaults
|
def reset_defaults
|
||||||
defaults.each { |name, value| self[name] = value }
|
defaults.each { |name, value| self[name] = value }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_new_settings
|
||||||
|
defaults.each do |name, value|
|
||||||
|
self[name] = value unless find_by(key: name)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -117,4 +117,60 @@ describe Setting do
|
|||||||
expect(Setting.all).to eq all_settings
|
expect(Setting.all).to eq all_settings
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe ".add_new_settings" do
|
||||||
|
context "default settings with strings" do
|
||||||
|
before do
|
||||||
|
allow(Setting).to receive(:defaults).and_return({ stub: "stub" })
|
||||||
|
end
|
||||||
|
|
||||||
|
it "creates the setting if it doesn't exist" do
|
||||||
|
expect(Setting.where(key: :stub)).to be_empty
|
||||||
|
|
||||||
|
Setting.add_new_settings
|
||||||
|
|
||||||
|
expect(Setting.where(key: :stub)).not_to be_empty
|
||||||
|
expect(Setting.find_by(key: :stub).value).to eq "stub"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't modify custom values" do
|
||||||
|
Setting["stub"] = "custom"
|
||||||
|
|
||||||
|
Setting.add_new_settings
|
||||||
|
|
||||||
|
expect(Setting.find_by(key: :stub).value).to eq "custom"
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't modify custom nil values" do
|
||||||
|
Setting["stub"] = nil
|
||||||
|
|
||||||
|
Setting.add_new_settings
|
||||||
|
|
||||||
|
expect(Setting.find_by(key: :stub).value).to be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "nil default settings" do
|
||||||
|
before do
|
||||||
|
allow(Setting).to receive(:defaults).and_return({ stub: nil })
|
||||||
|
end
|
||||||
|
|
||||||
|
it "creates the setting if it doesn't exist" do
|
||||||
|
expect(Setting.where(key: :stub)).to be_empty
|
||||||
|
|
||||||
|
Setting.add_new_settings
|
||||||
|
|
||||||
|
expect(Setting.where(key: :stub)).not_to be_empty
|
||||||
|
expect(Setting.find_by(key: :stub).value).to be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't modify custom values" do
|
||||||
|
Setting["stub"] = "custom"
|
||||||
|
|
||||||
|
Setting.add_new_settings
|
||||||
|
|
||||||
|
expect(Setting.find_by(key: :stub).value).to eq "custom"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user