diff --git a/lib/spree/localized_number.rb b/lib/spree/localized_number.rb index 05cc7e7e2e..f972399b0a 100644 --- a/lib/spree/localized_number.rb +++ b/lib/spree/localized_number.rb @@ -45,7 +45,7 @@ module Spree def self.valid_localizable_number?(number) return true unless number.is_a?(String) || number.respond_to?(:to_d) # Invalid if only two digits between dividers, or if any non-number characters - return false if number.to_s =~ /[.,]\d{2}[.,]/ || number.to_s =~ /[^0-9,.-]+/ + return false if number.to_s =~ /[.,]\d{2}[.,]/ || number.to_s =~ /[^-0-9,.]+/ true end diff --git a/spec/lib/spree/localized_number_spec.rb b/spec/lib/spree/localized_number_spec.rb index bafe0c822d..b19df7e7ef 100644 --- a/spec/lib/spree/localized_number_spec.rb +++ b/spec/lib/spree/localized_number_spec.rb @@ -58,6 +58,12 @@ describe Spree::LocalizedNumber do it "returns true" do expect(described_class.valid_localizable_number?(1599.99)).to eql true end + + context "with a negative number" do + it "returns true" do + expect(described_class.valid_localizable_number?(-1599.99)).to eql true + end + end end context "with letters" do