# frozen_string_literal: true
# encoding: UTF-8
describe Correios::CEP::Parser do
describe '#address' do
let(:expected_address) do
{
address: 'Rua Fernando Amorim',
neighborhood: 'Cavaleiro',
city: 'Jaboatão dos Guararapes',
state: 'PE',
zipcode: '54250610',
complement: ''
}
end
context 'when address is found' do
context 'and does not have complement' do
let(:xml) do
'' \
'' \
'' \
'' \
'Cavaleiro' \
'54250610' \
'Jaboatão dos Guararapes' \
'' \
'' \
'Rua Fernando Amorim' \
'0' \
'PE' \
'' \
'' \
'' \
''
end
it 'returns address' do
expect(subject.address(xml)).to eq expected_address
end
end
context 'and has one complement' do
let(:xml) do
'' \
'' \
'' \
'' \
'Cavaleiro' \
'54250610' \
'Jaboatão dos Guararapes' \
'de 1500 até o fim' \
'' \
'Rua Fernando Amorim' \
'0' \
'PE' \
'' \
'' \
'' \
''
end
it 'returns address' do
expected_address[:complement] = 'de 1500 até o fim'
expect(subject.address(xml)).to eq expected_address
end
end
context 'and has two complements' do
let(:xml) do
'' \
'' \
'' \
'' \
'Cavaleiro' \
'54250610' \
'Jaboatão dos Guararapes' \
'de 1500 até o fim' \
'(zona mista)' \
'Rua Fernando Amorim' \
'0' \
'PE' \
'' \
'' \
'' \
''
end
it 'returns address' do
expected_address[:complement] = 'de 1500 até o fim (zona mista)'
expect(subject.address(xml)).to eq expected_address
end
end
end
context 'when address is not found' do
let(:xml) do
'' \
'' \
'' \
'soap:Server' \
'CEP NAO ENCONTRADO' \
'' \
'CEP NAO ENCONTRADO' \
'' \
'' \
'' \
''
end
it 'returns empty hash' do
expect(subject.address(xml)).to eq({})
end
end
end
end