diff --git a/lib/site_settings/db_provider.rb b/lib/site_settings/db_provider.rb index 04d484c6f80..7757299fbd7 100644 --- a/lib/site_settings/db_provider.rb +++ b/lib/site_settings/db_provider.rb @@ -13,16 +13,14 @@ class SiteSettings::DbProvider def all return [] unless table_exists? - # note, not leaking out AR records, cause I want all editing to happen - # via this API - SqlBuilder.new("select name, data_type, value from #{@model.table_name}").map_exec(OpenStruct) + # Not leaking out AR records, cause I want all editing to happen via this API + SqlBuilder.new("SELECT name, data_type, value FROM #{@model.table_name}").map_exec(OpenStruct) end def find(name) return nil unless table_exists? - # note, not leaking out AR records, cause I want all editing to happen - # via this API + # Not leaking out AR records, cause I want all editing to happen via this API SqlBuilder.new("SELECT name, data_type, value FROM #{@model.table_name} WHERE name = :name") .map_exec(OpenStruct, name: name) .first diff --git a/lib/site_settings/local_process_provider.rb b/lib/site_settings/local_process_provider.rb index faff331d867..a9451505459 100644 --- a/lib/site_settings/local_process_provider.rb +++ b/lib/site_settings/local_process_provider.rb @@ -24,6 +24,9 @@ class SiteSettings::LocalProcessProvider end def save(name, value, data_type) + # NOTE: convert to string to simulate the conversion that is happening + # when using DbProvider + value = value.to_s settings[name] = Setting.new(name, value, data_type) end diff --git a/spec/components/site_setting_extension_spec.rb b/spec/components/site_setting_extension_spec.rb index 78c0e7d5edb..82afd880c97 100644 --- a/spec/components/site_setting_extension_spec.rb +++ b/spec/components/site_setting_extension_spec.rb @@ -3,27 +3,23 @@ require_dependency 'site_setting_extension' require_dependency 'site_settings/local_process_provider' describe SiteSettingExtension do - let :provider do + let :provider_local do SiteSettings::LocalProcessProvider.new end - def new_settings(provider=nil) + def new_settings(provider) Class.new do extend SiteSettingExtension - self.provider = provider if provider + self.provider = provider end end let :settings do - new_settings(provider) + new_settings(provider_local) end let :settings2 do - new_settings(provider) - end - - let :settings_db do - new_settings + new_settings(provider_local) end describe "refresh!" do @@ -238,10 +234,10 @@ describe SiteSettingExtension do end it 'should coerce correctly' do - settings_db.setting(:test_int_enum, 1, enum: TestIntEnumClass) - settings_db.test_int_enum = "2" - settings_db.refresh! - expect(settings_db.test_int_enum).to eq(2) + settings.setting(:test_int_enum, 1, enum: TestIntEnumClass) + settings.test_int_enum = "2" + settings.refresh! + expect(settings.test_int_enum).to eq(2) end end