diff --git a/app/models/setting.rb b/app/models/setting.rb index 2d7d8d43c..40659ed74 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -7,6 +7,10 @@ class Setting < ActiveRecord::Base key.start_with?('feature.') end + def enabled? + feature_flag? && value.present? + end + class << self def [](key) where(key: key).pluck(:value).first.presence diff --git a/spec/models/setting_spec.rb b/spec/models/setting_spec.rb index 99234de95..c5e8e224a 100644 --- a/spec/models/setting_spec.rb +++ b/spec/models/setting_spec.rb @@ -28,4 +28,30 @@ describe Setting do expect(setting.feature_flag?).to eq false end end + + describe "#enabled?" do + it "should be true if feature_flag and value present" do + setting = Setting.create(key: 'feature.whatever', value: 1) + expect(setting.enabled?).to eq true + + setting.value = "true" + expect(setting.enabled?).to eq true + + setting.value = "whatever" + expect(setting.enabled?).to eq true + end + + it "should be false if feature_flag and value blank" do + setting = Setting.create(key: 'feature.whatever') + expect(setting.enabled?).to eq false + + setting.value = "" + expect(setting.enabled?).to eq false + end + + it "should be false if not feature_flag" do + setting = Setting.create(key: 'whatever', value: "whatever") + expect(setting.enabled?).to eq false + end + end end