# 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