# encoding: UTF-8
require 'spec_helper'
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
"" +
"" +
"" +
"" +
"" +
""
end
it "returns empty hash" do
expect(subject.address(xml)).to eq({})
end
end
end
end