diff --git a/app/models/setting.rb b/app/models/setting.rb index 16e51fd53..92e327954 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -82,6 +82,8 @@ class Setting < ActiveRecord::Base Big5-HKSCS TIS-620) + MINIMUM_API_LIMIT = 100 + cattr_accessor :available_settings self.available_settings ||= {} @@ -191,6 +193,11 @@ class Setting < ActiveRecord::Base messages << [:mail_from, l('activerecord.errors.messages.invalid')] end end + if settings.key?(:api_limit) + if settings[:api_limit].to_i < MINIMUM_API_LIMIT + messages << [:api_limit, l('activerecord.errors.messages.greater_than_or_equal_to', MINIMUM_API_LIMIT)] + end + end messages end diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb index 45f97f8da..6a35d10c7 100644 --- a/test/unit/setting_test.rb +++ b/test/unit/setting_test.rb @@ -145,4 +145,14 @@ class SettingTest < ActiveSupport::TestCase end end end + + def test_api_limit_format_should_be_validated + with_locale 'en' do + errors = Setting.set_all_from_params({api_limit: (Setting::MINIMUM_API_LIMIT - 1).to_s}) + assert_includes errors, [:api_limit, "must be greater than or equal to #{Setting::MINIMUM_API_LIMIT}"] + + errors = Setting.set_all_from_params({api_limit: Setting::MINIMUM_API_LIMIT.to_s}) + assert_nil errors + end + end end