fix(iban): format iban after validation

This commit is contained in:
Paul Chavard 2022-10-06 15:49:34 +02:00
parent bc5e46e6de
commit a19bf050ef
2 changed files with 23 additions and 1 deletions

View file

@ -20,5 +20,20 @@
# type_de_champ_id :integer # type_de_champ_id :integer
# #
class Champs::IbanChamp < Champ class Champs::IbanChamp < Champ
validates_with IbanValidator validates_with IbanValidator, if: -> { validation_context != :brouillon }
after_validation :format_iban
def for_api
to_s.gsub(/\s+/, '')
end
def for_api_v2
for_api
end
private
def format_iban
self.value = value&.gsub(/\s+/, '')&.gsub(/(.{4})/, '\0 ')
end
end end

View file

@ -6,6 +6,13 @@ describe Champs::IbanChamp do
expect(build(:champ_iban, value: "FR7630006000011234567890189")).to be_valid expect(build(:champ_iban, value: "FR7630006000011234567890189")).to be_valid
expect(build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189")).to be_valid expect(build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189")).to be_valid
expect(build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189DSF")).to_not be_valid expect(build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189DSF")).to_not be_valid
expect(build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189")).to be_valid
end
it 'format value after validation' do
champ = build(:champ_iban, value: "FR76 3000 6000 0112 3456 7890 189")
champ.valid?
expect(champ.value).to eq("FR76 3000 6000 0112 3456 7890 189")
end end
end end
end end