diff --git a/lib/validators/integer_setting_validator.rb b/lib/validators/integer_setting_validator.rb index 0a0f5789642..364538c62d0 100644 --- a/lib/validators/integer_setting_validator.rb +++ b/lib/validators/integer_setting_validator.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class IntegerSettingValidator + include ActionView::Helpers::NumberHelper + def initialize(opts = {}) @opts = opts @opts[:min] = 0 unless @opts[:min].present? || @opts[:hidden] @@ -17,11 +19,15 @@ class IntegerSettingValidator def error_message if @opts[:min] && @opts[:max] - I18n.t("site_settings.errors.invalid_integer_min_max", min: @opts[:min], max: @opts[:max]) + I18n.t( + "site_settings.errors.invalid_integer_min_max", + min: number_with_delimiter(@opts[:min]), + max: number_with_delimiter(@opts[:max]), + ) elsif @opts[:min] - I18n.t("site_settings.errors.invalid_integer_min", min: @opts[:min]) + I18n.t("site_settings.errors.invalid_integer_min", min: number_with_delimiter(@opts[:min])) elsif @opts[:max] - I18n.t("site_settings.errors.invalid_integer_max", max: @opts[:max]) + I18n.t("site_settings.errors.invalid_integer_max", max: number_with_delimiter(@opts[:max])) else I18n.t("site_settings.errors.invalid_integer") end diff --git a/spec/lib/validators/integer_setting_validator_spec.rb b/spec/lib/validators/integer_setting_validator_spec.rb index 369b7a223d5..1633263e470 100644 --- a/spec/lib/validators/integer_setting_validator_spec.rb +++ b/spec/lib/validators/integer_setting_validator_spec.rb @@ -81,7 +81,7 @@ RSpec.describe IntegerSettingValidator do end context "with min and max" do - subject(:validator) { described_class.new(min: -1, max: 3) } + subject(:validator) { described_class.new(min: -1, max: 1_000_000) } include_examples "for all IntegerSettingValidator opts" @@ -92,9 +92,13 @@ RSpec.describe IntegerSettingValidator do end it "returns false if value is out of range" do - expect(validator.valid_value?(4)).to eq(false) + expect(validator.valid_value?(1_000_001)).to eq(false) expect(validator.valid_value?(-2)).to eq(false) end + + it "returns formatted error" do + expect(validator.error_message).to eq("Value must be between -1 and 1,000,000.") + end end context "when setting is hidden" do