feat(Champs::number*): normalize values by stripping spaces.

This commit is contained in:
mfo 2024-06-25 18:01:48 +02:00
parent 68cf6b58a3
commit c50f949acd
No known key found for this signature in database
GPG key ID: 7CE3E1F5B794A8EC
4 changed files with 26 additions and 2 deletions

View file

@ -22,6 +22,6 @@ class Champs::DecimalNumberChamp < Champ
def format_value
return if value.blank?
self.value = value.tr(",", ".")
self.value = value.tr(",", ".").gsub(/[[:space:]]/, "")
end
end

View file

@ -1,4 +1,6 @@
class Champs::IntegerNumberChamp < Champ
before_validation :format_value
validates :value, numericality: {
only_integer: true,
allow_nil: true,
@ -8,4 +10,10 @@ class Champs::IntegerNumberChamp < Champ
object.errors.generate_message(:value, :not_an_integer)
}
}, if: :validate_champ_value_or_prefill?
def format_value
return if value.blank?
self.value = value.gsub(/[[:space:]]/, "")
end
end

View file

@ -24,6 +24,12 @@ describe Champs::DecimalNumberChamp do
end
end
context 'when value contain space' do
let(:champ) { create(:champ_decimal_number, :private, value:) }
let(:value) { ' 2.6666 ' }
it { expect(champ.value).to eq('2.6666') }
end
context 'when the value has too many decimal' do
let(:value) { '2.6666' }
@ -65,7 +71,7 @@ describe Champs::DecimalNumberChamp do
end
context 'with number having spaces' do
let(:value) { " 120 " }
it { is_expected.to be_nil }
it { is_expected.to eq(120) }
end
end
end

View file

@ -27,6 +27,16 @@ describe Champs::IntegerNumberChamp do
end
end
context 'when the value is a number with sapces' do
let(:value) { ' 120 ' }
it 'is valid and is formated' do
is_expected.to be_truthy
champ.save!
expect(champ.value).to eq('120')
end
end
context 'when the value is blank' do
let(:value) { '' }