fix(db): add phone fixer

This commit is contained in:
Eric Leroy-Terquem 2023-10-12 15:39:08 +02:00
parent 5e8d59244e
commit a960395edb
2 changed files with 62 additions and 0 deletions

13
app/lib/phone_fixer.rb Normal file
View file

@ -0,0 +1,13 @@
class PhoneFixer
def self.fix(phones_string)
phone_candidates = phones_string
.split(/-/)
.map { |phone_with_space| phone_with_space.gsub(/\s/, '') }
phone_candidates.find { |phone| phone.start_with?(/0(6|7)/) } || phone_candidates.first
end
def self.fixable?(phones_string)
/-/.match?(phones_string)
end
end

View file

@ -0,0 +1,49 @@
describe PhoneFixer do
describe '#fix' do
subject { described_class.fix(phone_str) }
context 'when separated evenly with space between and after dash' do
let(:phone_str) { "0203040506 - 0607080900" }
it { is_expected.to eq('0607080900') }
end
context 'when separated oddly without space after dash' do
let(:phone_str) { "0203040506 -0607080900" }
it { is_expected.to eq('0607080900') }
end
context 'when separated oddly without space after dash' do
let(:phone_str) { "0203040506- 0607080900" }
it { is_expected.to eq('0607080900') }
end
context 'when having space inside number' do
let(:phone_str) { "020 3040 506 - 06070 8 09 00 " }
it { is_expected.to eq('0607080900') }
end
end
describe '#fixable' do
subject { described_class.fixable?(phone_str) }
context 'when separated evenly with space between and after dash' do
let(:phone_str) { "0203040506 - 0607080900" }
it { is_expected.to be_truthy }
end
context 'when separated oddly without space after dash' do
let(:phone_str) { "0203040506 -0607080900" }
it { is_expected.to be_truthy }
end
context 'when separated oddly without space after dash' do
let(:phone_str) { "0203040506- 0607080900" }
it { is_expected.to be_truthy }
end
context 'when having space inside number' do
let(:phone_str) { "020 3040 506 - 06070 8 09 00 " }
it { is_expected.to be_truthy }
end
context 'when separated by space' do
let(:phone_str) { "0203040506 0607080900" }
it { is_expected.to be_falsey }
end
end
end