Add ability to run validation on site settings. notification_email and other email address settings are now validated.

This commit is contained in:
Neil Lalonde
2014-06-09 15:17:36 -04:00
parent 8e882ad145
commit c61462662b
10 changed files with 100 additions and 10 deletions

View File

@@ -238,6 +238,10 @@ describe SiteSettingExtension do
end
context 'when overridden' do
after :each do
settings.remove_override!(:validated_setting)
end
it 'stores valid values' do
test_enum_class.expects(:valid_value?).with('fr').returns(true)
settings.test_enum = 'fr'
@@ -278,6 +282,36 @@ describe SiteSettingExtension do
end
end
describe "setting with a validator" do
before do
settings.setting(:validated_setting, "info@example.com", {validator: 'EmailSettingValidator'})
settings.refresh!
end
after :each do
settings.remove_override!(:validated_setting)
end
it "stores valid values" do
EmailSettingValidator.expects(:valid_value?).returns(true)
settings.validated_setting = 'success@example.com'
settings.validated_setting.should == 'success@example.com'
end
it "rejects invalid values" do
expect {
EmailSettingValidator.expects(:valid_value?).returns(false)
settings.validated_setting = 'nope'
}.to raise_error(Discourse::InvalidParameters)
settings.validated_setting.should == "info@example.com"
end
it "allows blank values" do
settings.validated_setting = ''
settings.validated_setting.should == ''
end
end
describe "set for an invalid setting name" do
it "raises an error" do
settings.setting(:test_setting, 77)