From d715b6b3bb0145fe7eab5bc65b3c31f9c53a87bb Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Fri, 12 May 2023 16:08:12 +1000 Subject: [PATCH] Spec fix LocalisedNumber validation to allow negative number As part of this PR https://github.com/openfoodfoundation/openfoodnetwork/pull/10329 LocalisedNumber validation was tightened, but that means negative number were not valid anymore. This commit has been cherry-picked after this fix has already been applied. Now we just change the order of characters in the regex because humans are used to reading the minus at the beginning of the number. But this change doesn't change the logic at all. --- lib/spree/localized_number.rb | 2 +- spec/lib/spree/localized_number_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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