Stop using global vars where not needed

Simplify local process site setting provider
Stop setting up methods over and over
Centralize cache clearing
This commit is contained in:
Sam
2014-03-28 16:36:17 +11:00
parent 64b0d7e0ea
commit 8fc2549873
4 changed files with 110 additions and 35 deletions

View File

@ -6,13 +6,73 @@ describe SiteSettingExtension do
class FakeSettings
extend SiteSettingExtension
provider = SiteSettings::LocalProcessProvider
self.provider = SiteSettings::LocalProcessProvider.new
end
class FakeSettings2
extend SiteSettingExtension
self.provider = FakeSettings.provider
end
let :settings do
FakeSettings
end
let :settings2 do
FakeSettings2
end
describe "refresh!" do
it "will reset to default if provider vanishes" do
settings.setting(:hello, 1)
settings.hello = 100
settings.hello.should == 100
settings.provider.clear
settings.refresh!
settings.hello.should == 1
end
it "will set to new value if provider changes" do
settings.setting(:hello, 1)
settings.hello = 100
settings.hello.should == 100
settings.provider.save(:hello, 99, SiteSetting.types[:fixnum] )
settings.refresh!
settings.hello.should == 99
end
it "Publishes changes cross sites" do
settings.setting(:hello, 1)
settings2.setting(:hello, 1)
settings.hello = 100
settings2.refresh!
settings2.hello.should == 100
settings.hello = 99
settings2.refresh!
settings2.hello.should == 99
end
end
describe "multisite" do
it "has no db cross talk" do
settings.setting(:hello, 1)
settings.hello = 100
settings.provider.current_site = "boom"
settings.hello.should == 1
end
end
describe "int setting" do
before do
settings.setting(:test_setting, 77)