brcep 2.1.3 → 2.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/brcep/busca_endereco.rb +12 -11
- data/lib/brcep/version.rb +1 -1
- data/test/busca_endereco_test.rb +14 -4
- data/test/mocks/zip_04006000_bronze_business.xml +33 -0
- metadata +8 -7
data/lib/brcep/busca_endereco.rb
CHANGED
@@ -9,12 +9,15 @@ require 'rexml/document'
|
|
9
9
|
#
|
10
10
|
#Como fazer a busca de endereço por cep?
|
11
11
|
#
|
12
|
-
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
13
|
-
# BuscaEndereco.por_cep('22640100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
14
|
-
# BuscaEndereco.por_cep('22640-100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
15
|
-
# BuscaEndereco.por_cep('22.640-100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
16
|
-
# BuscaEndereco.por_cep('
|
17
|
-
#
|
12
|
+
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
13
|
+
# BuscaEndereco.por_cep('22640100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
14
|
+
# BuscaEndereco.por_cep('22640-100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
15
|
+
# BuscaEndereco.por_cep('22.640-100') ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', '22640100']
|
16
|
+
# BuscaEndereco.por_cep('04006000') ==> ["Rua", "Doutor Tomaz Carvalhal", "Paraiso", "SP", "Sao Paulo", "04006000"]
|
17
|
+
#
|
18
|
+
# É feita uma validação para ver se o cep possui 8 caracteres após a remoção de '.' e '-'.
|
19
|
+
# BuscaEndereco.por_cep('0000000') ==> RuntimeError 'O CEP informado possui um formato inválido.'
|
20
|
+
#
|
18
21
|
#Se necessário usar proxy, faça (de preferência em environment.rb):
|
19
22
|
# BuscaEndereco.proxy_addr= 'endereco.do.proxy'
|
20
23
|
# BuscaEndereco.proxy_port= 999 # porta a ser utilizada
|
@@ -54,10 +57,8 @@ class BuscaEndereco
|
|
54
57
|
# Exemplo:
|
55
58
|
# BuscaEndereco.por_cep(22640100) ==> ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro', 22640100]
|
56
59
|
def self.por_cep(numero)
|
57
|
-
|
58
|
-
raise "O CEP informado possui um formato inválido." if
|
59
|
-
|
60
|
-
@@cep = numero.to_s.gsub(/\./, '').gsub(/\-/, '').to_i
|
60
|
+
@@cep = numero.to_s.gsub(/\./, '').gsub(/\-/, '')
|
61
|
+
raise "O CEP informado possui um formato inválido." if @@cep.length != 8
|
61
62
|
|
62
63
|
@@retorno = []
|
63
64
|
|
@@ -98,4 +99,4 @@ class BuscaEndereco
|
|
98
99
|
@@retorno << elemento.text
|
99
100
|
end
|
100
101
|
end
|
101
|
-
end
|
102
|
+
end
|
data/lib/brcep/version.rb
CHANGED
data/test/busca_endereco_test.rb
CHANGED
@@ -3,8 +3,9 @@ require 'rubygems'
|
|
3
3
|
require 'net/http'
|
4
4
|
require 'mocha'
|
5
5
|
|
6
|
-
INVALID_ZIPS = [0, '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000']
|
6
|
+
INVALID_ZIPS = [0, '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '4006000']
|
7
7
|
VALID_ZIPS = [22640100, '22640100', '22.640100', '22640-100', '22.640-100']
|
8
|
+
VALID_ZIPS_WITH_ZERO_AT_BEGINNING = ['04006000', '04006-000', '04.006-000']
|
8
9
|
VALID_CEPS_NOT_FOUND_ON_BRONZE_BUSINESS = [20230024, '20230024', '20.230024', '20230-024', '20.230-024']
|
9
10
|
ZIPS_WITH_NO_ADDRESS_ASSOCIATED = [12345678, '12345678', '12.345678', '12345-678', '12.345-678']
|
10
11
|
|
@@ -20,7 +21,7 @@ class MockServerError < Net::HTTPServerError
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def limpa_cep(numero)
|
23
|
-
numero.to_s.gsub(/\./, '').gsub(/\-/, '')
|
24
|
+
numero.to_s.gsub(/\./, '').gsub(/\-/, '')
|
24
25
|
end
|
25
26
|
|
26
27
|
class BuscaEnderecoTest < Test::Unit::TestCase
|
@@ -46,12 +47,21 @@ class BuscaEnderecoTest < Test::Unit::TestCase
|
|
46
47
|
def test_valid_code_on_bronze_business
|
47
48
|
VALID_ZIPS.each do |valid_zip|
|
48
49
|
mock_get_response_from_bronze_business(limpa_cep(valid_zip))
|
49
|
-
|
50
|
+
|
50
51
|
assert_equal ['Avenida', 'das Americas', 'Barra da Tijuca', 'RJ', 'Rio de Janeiro',
|
51
52
|
limpa_cep(valid_zip)], BuscaEndereco.por_cep(valid_zip)
|
52
53
|
end
|
53
54
|
end
|
54
55
|
|
56
|
+
def test_valid_code_with_zero_at_beginning_on_bronze_business
|
57
|
+
VALID_ZIPS_WITH_ZERO_AT_BEGINNING.each do |valid_zip|
|
58
|
+
mock_get_response_from_bronze_business(limpa_cep(valid_zip))
|
59
|
+
|
60
|
+
assert_equal ['Rua', 'Doutor Tomaz Carvalhal', 'Paraiso', 'SP', 'Sao Paulo',
|
61
|
+
limpa_cep(valid_zip)], BuscaEndereco.por_cep(valid_zip)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
55
65
|
def test_valid_code_on_buscar_cep_when_bronze_business_is_unavailable
|
56
66
|
VALID_ZIPS.each do |valid_zip|
|
57
67
|
mock_get_response_from_buscar_cep_when_bronze_business_is_unavailable(limpa_cep(valid_zip))
|
@@ -144,4 +154,4 @@ class BuscaEnderecoTest < Test::Unit::TestCase
|
|
144
154
|
def zip_name(nome, web_service)
|
145
155
|
File.join(File.dirname(__FILE__), 'mocks', "zip_#{nome}_#{web_service}.xml")
|
146
156
|
end
|
147
|
-
end
|
157
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<DataSet xmlns="http://tempuri.org/">
|
3
|
+
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
4
|
+
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
|
5
|
+
<xs:complexType>
|
6
|
+
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
7
|
+
<xs:element name="tbCEP">
|
8
|
+
<xs:complexType>
|
9
|
+
<xs:sequence>
|
10
|
+
<xs:element name="logradouro" type="xs:string" minOccurs="0" />
|
11
|
+
<xs:element name="nome" type="xs:string" minOccurs="0" />
|
12
|
+
<xs:element name="bairro" type="xs:string" minOccurs="0" />
|
13
|
+
<xs:element name="UF" type="xs:string" minOccurs="0" />
|
14
|
+
<xs:element name="cidade" type="xs:string" minOccurs="0" />
|
15
|
+
</xs:sequence>
|
16
|
+
</xs:complexType>
|
17
|
+
</xs:element>
|
18
|
+
</xs:choice>
|
19
|
+
</xs:complexType>
|
20
|
+
</xs:element>
|
21
|
+
</xs:schema>
|
22
|
+
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
|
23
|
+
<NewDataSet xmlns="">
|
24
|
+
<tbCEP diffgr:id="tbCEP1" msdata:rowOrder="0">
|
25
|
+
<logradouro>Rua</logradouro>
|
26
|
+
<nome>Doutor Tomaz Carvalhal</nome>
|
27
|
+
<bairro>Paraiso</bairro>
|
28
|
+
<UF>SP</UF>
|
29
|
+
<cidade>Sao Paulo</cidade>
|
30
|
+
</tbCEP>
|
31
|
+
</NewDataSet>
|
32
|
+
</diffgr:diffgram>
|
33
|
+
</DataSet>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brcep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Marcos Tapaj\xC3\xB3s"
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2009-03-
|
15
|
+
date: 2009-03-04 00:00:00 -03:00
|
16
16
|
default_executable:
|
17
17
|
dependencies: []
|
18
18
|
|
@@ -29,20 +29,21 @@ files:
|
|
29
29
|
- README
|
30
30
|
- CHANGELOG
|
31
31
|
- MIT-LICENSE
|
32
|
+
- lib/brcep.rb
|
32
33
|
- lib/brcep
|
33
34
|
- lib/brcep/busca_endereco.rb
|
34
35
|
- lib/brcep/version.rb
|
35
|
-
-
|
36
|
+
- test/test_helper.rb
|
36
37
|
- test/busca_endereco_test.rb
|
37
38
|
- test/mocks
|
38
|
-
- test/mocks/zip_20230024_buscar_cep.xml
|
39
39
|
- test/mocks/zip_22640100.xml
|
40
|
-
- test/mocks/zip_22640100_bronze_business.xml
|
41
40
|
- test/mocks/zip_22640100_buscar_cep.xml
|
41
|
+
- test/mocks/zip_22640100_bronze_business.xml
|
42
|
+
- test/mocks/zip_not_found_buscar_cep.xml
|
43
|
+
- test/mocks/zip_20230024_buscar_cep.xml
|
42
44
|
- test/mocks/zip_invalid.xml
|
43
45
|
- test/mocks/zip_not_found_bronze_business.xml
|
44
|
-
- test/mocks/
|
45
|
-
- test/test_helper.rb
|
46
|
+
- test/mocks/zip_04006000_bronze_business.xml
|
46
47
|
has_rdoc: true
|
47
48
|
homepage: http://www.improveit.com.br/software_livre/brazilian_rails
|
48
49
|
post_install_message:
|