ibge-ruby 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +3 -0
  5. data/Gemfile.lock +79 -0
  6. data/README.md +155 -0
  7. data/Rakefile +1 -0
  8. data/ibge-ruby.gemspec +28 -0
  9. data/lib/ibge/distrito.rb +179 -0
  10. data/lib/ibge/mesorregiao.rb +92 -0
  11. data/lib/ibge/microrregiao.rb +110 -0
  12. data/lib/ibge/municipio.rb +164 -0
  13. data/lib/ibge/pais.rb +53 -0
  14. data/lib/ibge/regiao.rb +55 -0
  15. data/lib/ibge/regiao_imediata.rb +110 -0
  16. data/lib/ibge/regiao_intermediaria.rb +92 -0
  17. data/lib/ibge/subdistrito.rb +160 -0
  18. data/lib/ibge/uf.rb +73 -0
  19. data/lib/ibge/utils.rb +7 -0
  20. data/lib/ibge/version.rb +3 -0
  21. data/lib/ibge.rb +18 -0
  22. data/spec/lib/ibge/distrito_spec.rb +250 -0
  23. data/spec/lib/ibge/mesorregiao_spec.rb +144 -0
  24. data/spec/lib/ibge/microrregiao_spec.rb +166 -0
  25. data/spec/lib/ibge/municipio_spec.rb +228 -0
  26. data/spec/lib/ibge/pais_spec.rb +62 -0
  27. data/spec/lib/ibge/regiao_imediata_spec.rb +162 -0
  28. data/spec/lib/ibge/regiao_intermediaria_spec.rb +140 -0
  29. data/spec/lib/ibge/regiao_spec.rb +90 -0
  30. data/spec/lib/ibge/subdistrito_spec.rb +228 -0
  31. data/spec/lib/ibge/uf_spec.rb +130 -0
  32. data/spec/spec_helper.rb +28 -0
  33. data/spec/vcr_cassettes/distrito/distritos_por_id_230440005.yml +55 -0
  34. data/spec/vcr_cassettes/distrito/distritos_por_id_230440005_230370905.yml +47 -0
  35. data/spec/vcr_cassettes/distrito/distritos_por_mesorregiao_2303.yml +47 -0
  36. data/spec/vcr_cassettes/distrito/distritos_por_mesorregiao_2303_2304.yml +47 -0
  37. data/spec/vcr_cassettes/distrito/distritos_por_microrregiao_23016.yml +47 -0
  38. data/spec/vcr_cassettes/distrito/distritos_por_microrregiao_23016_23017.yml +47 -0
  39. data/spec/vcr_cassettes/distrito/distritos_por_municipio_2307254.yml +53 -0
  40. data/spec/vcr_cassettes/distrito/distritos_por_municipio_2307254_2302206.yml +47 -0
  41. data/spec/vcr_cassettes/distrito/distritos_por_regiao_NE.yml +47 -0
  42. data/spec/vcr_cassettes/distrito/distritos_por_regiao_N_NE.yml +47 -0
  43. data/spec/vcr_cassettes/distrito/distritos_por_regiao_imediata_230001.yml +47 -0
  44. data/spec/vcr_cassettes/distrito/distritos_por_regiao_imediata_230001_230002.yml +47 -0
  45. data/spec/vcr_cassettes/distrito/distritos_por_regiao_intermediaria_2301.yml +47 -0
  46. data/spec/vcr_cassettes/distrito/distritos_por_regiao_intermediaria_2301_2302.yml +47 -0
  47. data/spec/vcr_cassettes/distrito/distritos_por_uf_BA_CE.yml +47 -0
  48. data/spec/vcr_cassettes/distrito/distritos_por_uf_CE.yml +51 -0
  49. data/spec/vcr_cassettes/distrito/obter_distritos.yml +55 -0
  50. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_id_2303.yml +47 -0
  51. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_id_2303_2304.yml +47 -0
  52. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_regiao_NE.yml +53 -0
  53. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_regiao_N_NE.yml +47 -0
  54. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_uf_BA_CE.yml +47 -0
  55. data/spec/vcr_cassettes/mesorregiao/mesorregioes_por_uf_CE.yml +49 -0
  56. data/spec/vcr_cassettes/mesorregiao/obter_mesorregioes.yml +55 -0
  57. data/spec/vcr_cassettes/microrregiao/microrregioes_por_id_23016.yml +47 -0
  58. data/spec/vcr_cassettes/microrregiao/microrregioes_por_id_23016_23017.yml +47 -0
  59. data/spec/vcr_cassettes/microrregiao/microrregioes_por_mesorregiao_2303.yml +55 -0
  60. data/spec/vcr_cassettes/microrregiao/microrregioes_por_mesorregiao_2303_2304.yml +47 -0
  61. data/spec/vcr_cassettes/microrregiao/microrregioes_por_regiao_NE.yml +47 -0
  62. data/spec/vcr_cassettes/microrregiao/microrregioes_por_regiao_N_NE.yml +47 -0
  63. data/spec/vcr_cassettes/microrregiao/microrregioes_por_uf_BA_CE.yml +47 -0
  64. data/spec/vcr_cassettes/microrregiao/microrregioes_por_uf_CE.yml +53 -0
  65. data/spec/vcr_cassettes/microrregiao/obter_microrregioes.yml +53 -0
  66. data/spec/vcr_cassettes/municipio/municipios_por_id_2307254.yml +53 -0
  67. data/spec/vcr_cassettes/municipio/municipios_por_id_2307254_2302206.yml +47 -0
  68. data/spec/vcr_cassettes/municipio/municipios_por_mesorregiao_2303.yml +47 -0
  69. data/spec/vcr_cassettes/municipio/municipios_por_mesorregiao_2303_2304.yml +47 -0
  70. data/spec/vcr_cassettes/municipio/municipios_por_microrregiao_23016.yml +47 -0
  71. data/spec/vcr_cassettes/municipio/municipios_por_microrregiao_23016_23017.yml +47 -0
  72. data/spec/vcr_cassettes/municipio/municipios_por_regiao_NE.yml +47 -0
  73. data/spec/vcr_cassettes/municipio/municipios_por_regiao_N_NE.yml +47 -0
  74. data/spec/vcr_cassettes/municipio/municipios_por_regiao_imediata_230001.yml +47 -0
  75. data/spec/vcr_cassettes/municipio/municipios_por_regiao_imediata_230001_230002.yml +47 -0
  76. data/spec/vcr_cassettes/municipio/municipios_por_regiao_intermediaria_2301.yml +47 -0
  77. data/spec/vcr_cassettes/municipio/municipios_por_regiao_intermediaria_2301_2302.yml +47 -0
  78. data/spec/vcr_cassettes/municipio/municipios_por_uf_BA_CE.yml +47 -0
  79. data/spec/vcr_cassettes/municipio/municipios_por_uf_CE.yml +51 -0
  80. data/spec/vcr_cassettes/municipio/obter_municipios.yml +51 -0
  81. data/spec/vcr_cassettes/pais/obter_paises.yml +53 -0
  82. data/spec/vcr_cassettes/pais/paises_por_identificador_76.yml +53 -0
  83. data/spec/vcr_cassettes/pais/paises_por_identificador_76_300.yml +47 -0
  84. data/spec/vcr_cassettes/regiao/obter_regioes.yml +53 -0
  85. data/spec/vcr_cassettes/regiao/regioes_por_identificador_NE.yml +48 -0
  86. data/spec/vcr_cassettes/regiao/regioes_por_identificador_N_NE.yml +48 -0
  87. data/spec/vcr_cassettes/regiao_imediata/obter_regioes_imediatas.yml +53 -0
  88. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_id_230001.yml +47 -0
  89. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_id_230001_230002.yml +47 -0
  90. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_intermediaria_2301.yml +47 -0
  91. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_intermediaria_2301_2302.yml +47 -0
  92. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_regiao_NE.yml +49 -0
  93. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_regiao_N_NE.yml +49 -0
  94. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_uf_BA_CE.yml +47 -0
  95. data/spec/vcr_cassettes/regiao_imediata/regioes_imediatas_por_uf_CE.yml +53 -0
  96. data/spec/vcr_cassettes/regiao_intermediaria/obter_regioes_intermediarias.yml +53 -0
  97. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_id_2301.yml +47 -0
  98. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_id_2301_2302.yml +47 -0
  99. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_regiao_NE.yml +47 -0
  100. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_regiao_N_NE.yml +47 -0
  101. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_uf_BA_CE.yml +47 -0
  102. data/spec/vcr_cassettes/regiao_intermediaria/regioes_intermediarias_por_uf_CE.yml +47 -0
  103. data/spec/vcr_cassettes/subdistrito/obter_subdistritos.yml +53 -0
  104. data/spec/vcr_cassettes/subdistrito/subdistritos_por_distrito_230440005.yml +47 -0
  105. data/spec/vcr_cassettes/subdistrito/subdistritos_por_distrito_230440005_230370905.yml +47 -0
  106. data/spec/vcr_cassettes/subdistrito/subdistritos_por_id_23044000512.yml +49 -0
  107. data/spec/vcr_cassettes/subdistrito/subdistritos_por_id_23044000512_23044006511.yml +47 -0
  108. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_23016.yml +46 -0
  109. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_23016_23017.yml +46 -0
  110. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_2303.yml +47 -0
  111. data/spec/vcr_cassettes/subdistrito/subdistritos_por_mesorregiao_2303_2304.yml +47 -0
  112. data/spec/vcr_cassettes/subdistrito/subdistritos_por_microrregiao_23016.yml +47 -0
  113. data/spec/vcr_cassettes/subdistrito/subdistritos_por_microrregiao_23016_23017.yml +47 -0
  114. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2304400.yml +55 -0
  115. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2304400_2927408.yml +47 -0
  116. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2307254.yml +46 -0
  117. data/spec/vcr_cassettes/subdistrito/subdistritos_por_municipio_2307254_2302206.yml +46 -0
  118. data/spec/vcr_cassettes/subdistrito/subdistritos_por_regiao_NE.yml +47 -0
  119. data/spec/vcr_cassettes/subdistrito/subdistritos_por_regiao_N_NE.yml +47 -0
  120. data/spec/vcr_cassettes/subdistrito/subdistritos_por_uf_BA_CE.yml +47 -0
  121. data/spec/vcr_cassettes/subdistrito/subdistritos_por_uf_CE.yml +53 -0
  122. data/spec/vcr_cassettes/uf/obter_ufs.yml +51 -0
  123. data/spec/vcr_cassettes/uf/ufs_por_identificador_BA_CE.yml +47 -0
  124. data/spec/vcr_cassettes/uf/ufs_por_identificador_CE.yml +55 -0
  125. data/spec/vcr_cassettes/uf/ufs_por_regiao_N.yml +53 -0
  126. data/spec/vcr_cassettes/uf/ufs_por_regiao_N_NE.yml +47 -0
  127. metadata +384 -0
data/lib/ibge/uf.rb ADDED
@@ -0,0 +1,73 @@
1
+ module IBGE
2
+ class UF
3
+ attr_accessor :id, :nome, :sigla, :regiao
4
+
5
+ def initialize(options = {})
6
+ @id = options['id']
7
+ @nome = options['nome']
8
+ @sigla = options['sigla']
9
+ @regiao = Regiao.new(options['regiao'])
10
+ end
11
+
12
+ # Obtém o conjunto de Unidades da Federação do Brasil.
13
+ #
14
+ # @example
15
+ # ufs = IBGE::UF.obter_ufs
16
+ # ufs.first.class #=> IBGE::UF
17
+ # ufs.first.nome #=> "Acre"
18
+ # ufs.map(&:sigla) #=> ['AC', 'AM', 'AP'...]
19
+ def self.obter_ufs
20
+ resposta = RestClient.get("#{BASE_URL}/estados")
21
+
22
+ tratar_retorno(resposta)
23
+ end
24
+
25
+ # Obtém o conjunto de Unidades da Federação do Brasil a partir dos respectivos identificadores.
26
+ # Pode ser informada a sigla, identificador (ID) ou um array de siglas/identificadores.
27
+ #
28
+ # @param ufs [String, Integer, Array]
29
+ # @return [UF, Array<UF>]
30
+ #
31
+ # @example
32
+ # uf = IBGE::UF.uf_por_identificador('CE')
33
+ #
34
+ # ufs = IBGE::UF.ufs_por_identificador(['BA', 'CE'])
35
+ def self.ufs_por_identificador(ufs)
36
+ ufs = IBGE.formatar(ufs)
37
+ resposta = RestClient.get("#{BASE_URL}/estados/#{ufs}")
38
+
39
+ tratar_retorno(resposta)
40
+ end
41
+
42
+ # Obtém o conjunto de Unidades da Federação do Brasil a partir dos identificadores das regiões.
43
+ # Pode ser informada a sigla, o identificador (ID) ou um array de siglas/identificadores.
44
+ #
45
+ # @param regioes [String, Integer, Array]
46
+ # @return [Array<UF>]
47
+ #
48
+ # @example
49
+ # ufs = IBGE::UF.ufs_por_regiao('NE')
50
+ # ufs.first.nome #=> "Maranhão"
51
+ #
52
+ # ufs = IBGE::UF.ufs_por_regiao(['NE', 'N'])
53
+ # ufs.map(&:nome) #=> ['Ceará', 'Amazonas'...]
54
+ def self.ufs_por_regiao(regioes)
55
+ regioes = IBGE.formatar(regioes)
56
+ resposta = RestClient.get("#{BASE_URL}/regioes/#{regioes}/estados")
57
+
58
+ tratar_retorno(resposta)
59
+ end
60
+
61
+ private
62
+
63
+ def self.tratar_retorno(resposta)
64
+ ufs = JSON.parse(resposta.body)
65
+
66
+ if ufs.is_a?(Array)
67
+ ufs.map { |uf| UF.new(uf) }
68
+ else
69
+ UF.new(ufs)
70
+ end
71
+ end
72
+ end
73
+ end
data/lib/ibge/utils.rb ADDED
@@ -0,0 +1,7 @@
1
+ module IBGE
2
+ class << self
3
+ def formatar(parametro)
4
+ parametro.is_a?(Array) ? parametro.join('%7C') : parametro
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module IBGE
2
+ VERSION = '1.0.2'.freeze
3
+ end
data/lib/ibge.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'rest-client'
2
+ require 'json'
3
+ require 'ibge/utils'
4
+
5
+ module IBGE
6
+ BASE_URL = 'https://servicodados.ibge.gov.br/api/v1/localidades'
7
+
8
+ autoload :Distrito, 'ibge/distrito'
9
+ autoload :Mesorregiao, 'ibge/mesorregiao'
10
+ autoload :Microrregiao, 'ibge/microrregiao'
11
+ autoload :Municipio, 'ibge/municipio'
12
+ autoload :Subdistrito, 'ibge/subdistrito'
13
+ autoload :Regiao, 'ibge/regiao'
14
+ autoload :RegiaoImediata, 'ibge/regiao_imediata'
15
+ autoload :RegiaoIntermediaria, 'ibge/regiao_intermediaria'
16
+ autoload :Pais, 'ibge/pais'
17
+ autoload :UF, 'ibge/uf'
18
+ end
@@ -0,0 +1,250 @@
1
+ describe IBGE::Distrito do
2
+ shared_examples_for 'objeto' do
3
+ it 'deve retornar o nome Fortaleza' do
4
+ expect(subject.first.nome).to eq('Fortaleza')
5
+ end
6
+
7
+ it 'deve retornar o ID 230440005' do
8
+ expect(subject.first.id).to eq("230440005")
9
+ end
10
+
11
+ it 'deve retornar o município, que é um objeto IBGE::Municipio' do
12
+ expect(subject.first.municipio).to be_an IBGE::Municipio
13
+ end
14
+ end
15
+
16
+ shared_examples_for 'array' do |tamanho|
17
+ it 'deve retornar um Array<IBGE::Distrito>' do
18
+ aggregate_failures do
19
+ is_expected.to be_an Array
20
+ expect(subject.first).to be_an IBGE::Distrito
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '.obter_distritos' do
26
+ subject do
27
+ VCR.use_cassette('distrito/obter_distritos') do
28
+ IBGE::Distrito.obter_distritos
29
+ end
30
+ end
31
+
32
+ it_has_behavior 'array'
33
+ end
34
+
35
+ describe '.distritos_por_id' do
36
+ context 'recebendo um array de IDs (["230440005", "230370905"]) como parâmetro' do
37
+ subject do
38
+ VCR.use_cassette('distrito/distritos_por_id:230440005|230370905', erb: { param: '230440005%7C230370905' }) do
39
+ IBGE::Distrito.distritos_por_id(%w(230440005 230370905))
40
+ end
41
+ end
42
+
43
+ it_has_behavior 'array'
44
+ end
45
+
46
+ context 'recebendo um ID ("230440005") como parâmetro' do
47
+ subject do
48
+ VCR.use_cassette('distrito/distritos_por_id:230440005', erb: { param: '230440005' }) do
49
+ IBGE::Distrito.distritos_por_id('230440005')
50
+ end
51
+ end
52
+
53
+ it_has_behavior 'objeto'
54
+ end
55
+ end
56
+
57
+ describe '.distritos_por_uf' do
58
+ context 'recebendo um array de siglas (["BA", "CE"]) como parâmetro' do
59
+ subject do
60
+ VCR.use_cassette('distrito/distritos_por_uf:BA|CE', erb: { param: 'BA%7CCE' }) do
61
+ IBGE::Distrito.distritos_por_uf(%w(BA CE))
62
+ end
63
+ end
64
+
65
+ it_has_behavior 'array'
66
+ end
67
+
68
+ context 'recebendo um array de IDs ([29, 23]) como parâmetro' do
69
+ subject do
70
+ VCR.use_cassette('distrito/distritos_por_uf:BA|CE', erb: { param: '29%7C23' }) do
71
+ IBGE::Distrito.distritos_por_uf([29, 23])
72
+ end
73
+ end
74
+
75
+ it_has_behavior 'array'
76
+ end
77
+
78
+ context 'recebendo uma sigla (CE) como parâmetro' do
79
+ subject do
80
+ VCR.use_cassette('distrito/distritos_por_uf:CE', erb: { param: 'CE' }) do
81
+ IBGE::Distrito.distritos_por_uf('CE')
82
+ end
83
+ end
84
+
85
+ it_has_behavior 'array'
86
+ end
87
+
88
+ context 'recebendo um ID (23) como parâmetro' do
89
+ subject do
90
+ VCR.use_cassette('distrito/distritos_por_uf:CE', erb: { param: 23 }) do
91
+ IBGE::Distrito.distritos_por_uf(23)
92
+ end
93
+ end
94
+
95
+ it_has_behavior 'array'
96
+ end
97
+ end
98
+
99
+ describe '.distritos_por_regiao' do
100
+ context 'recebendo um array de siglas (["N", "NE"]) como parâmetro' do
101
+ subject do
102
+ VCR.use_cassette('distrito/distritos_por_regiao:N|NE', erb: { param: 'N%7CNE' }) do
103
+ IBGE::Distrito.distritos_por_regiao(%w(N NE))
104
+ end
105
+ end
106
+
107
+ it_has_behavior 'array'
108
+ end
109
+
110
+ context 'recebendo um array de IDs ([1, 2]) como parâmetro' do
111
+ subject do
112
+ VCR.use_cassette('distrito/distritos_por_regiao:N|NE', erb: { param: '1%7C2' }) do
113
+ IBGE::Distrito.distritos_por_regiao([1, 2])
114
+ end
115
+ end
116
+
117
+ it_has_behavior 'array'
118
+ end
119
+
120
+ context 'recebendo um ID (2) como parâmetro' do
121
+ subject do
122
+ VCR.use_cassette('distrito/distritos_por_regiao:NE', erb: { param: 2 }) do
123
+ IBGE::Distrito.distritos_por_regiao(2)
124
+ end
125
+ end
126
+
127
+ it_has_behavior 'array'
128
+ end
129
+
130
+ context 'recebendo uma sigla (NE) como parâmetro' do
131
+ subject do
132
+ VCR.use_cassette('distrito/distritos_por_regiao:NE', erb: { param: 'NE' }) do
133
+ IBGE::Distrito.distritos_por_regiao('NE')
134
+ end
135
+ end
136
+
137
+ it_has_behavior 'array'
138
+ end
139
+ end
140
+
141
+ describe '.distritos_por_municipio' do
142
+ context 'recebendo um array de IDs (["2307254", "2302206"]) como parâmetro' do
143
+ subject do
144
+ VCR.use_cassette('distrito/distritos_por_municipio:2307254|2302206', erb: { param: '2307254%7C2302206' }) do
145
+ IBGE::Distrito.distritos_por_municipio(['2307254', '2302206'])
146
+ end
147
+ end
148
+
149
+ it_has_behavior 'array'
150
+ end
151
+
152
+ context 'recebendo um ID ("2307254") como parâmetro' do
153
+ subject do
154
+ VCR.use_cassette('distrito/distritos_por_municipio:2307254', erb: { param: '2307254' }) do
155
+ IBGE::Distrito.distritos_por_municipio('2307254')
156
+ end
157
+ end
158
+
159
+ it_has_behavior 'array'
160
+ end
161
+ end
162
+
163
+ describe '.distritos_por_regiao_imediata' do
164
+ context 'recebendo um array de IDs ([230001, 230002]) como parâmetro' do
165
+ subject do
166
+ VCR.use_cassette('distrito/distritos_por_regiao_imediata:230001|230002', erb: { param: '230001%7C230002' }) do
167
+ IBGE::Distrito.distritos_por_regiao_imediata([230001, 230002])
168
+ end
169
+ end
170
+
171
+ it_has_behavior 'array'
172
+ end
173
+
174
+ context 'recebendo um ID (230001) como parâmetro' do
175
+ subject do
176
+ VCR.use_cassette('distrito/distritos_por_regiao_imediata:230001', erb: { param: '230001' }) do
177
+ IBGE::Distrito.distritos_por_regiao_imediata(230001)
178
+ end
179
+ end
180
+
181
+ it_has_behavior 'array'
182
+ end
183
+ end
184
+
185
+ describe '.distritos_por_regiao_intermediaria' do
186
+ context 'recebendo um array de IDs ([2301, 2302]) como parâmetro' do
187
+ subject do
188
+ VCR.use_cassette('distrito/distritos_por_regiao_intermediaria:2301|2302', erb: { param: '2301%7C23017' }) do
189
+ IBGE::Distrito.distritos_por_regiao_intermediaria([2301, 2302])
190
+ end
191
+ end
192
+
193
+ it_has_behavior 'array'
194
+ end
195
+
196
+ context 'recebendo um ID (2301) como parâmetro' do
197
+ subject do
198
+ VCR.use_cassette('distrito/distritos_por_regiao_intermediaria:2301', erb: { param: '2301' }) do
199
+ IBGE::Distrito.distritos_por_regiao_intermediaria(2301)
200
+ end
201
+ end
202
+
203
+ it_has_behavior 'array'
204
+ end
205
+ end
206
+
207
+ describe '.distritos_por_mesorregiao' do
208
+ context 'recebendo um array de IDs ([2303, 2304]) como parâmetro' do
209
+ subject do
210
+ VCR.use_cassette('distrito/distritos_por_mesorregiao:2303|2304', erb: { param: '2303%7C2304' }) do
211
+ IBGE::Distrito.distritos_por_mesorregiao([2303, 2304])
212
+ end
213
+ end
214
+
215
+ it_has_behavior 'array'
216
+ end
217
+
218
+ context 'recebendo um ID (2303) como parâmetro' do
219
+ subject do
220
+ VCR.use_cassette('distrito/distritos_por_mesorregiao:2303', erb: { param: '2303' }) do
221
+ IBGE::Distrito.distritos_por_mesorregiao(2303)
222
+ end
223
+ end
224
+
225
+ it_has_behavior 'array'
226
+ end
227
+ end
228
+
229
+ describe '.distritos_por_microrregiao' do
230
+ context 'recebendo um array de IDs ([23016, 23017]) como parâmetro' do
231
+ subject do
232
+ VCR.use_cassette('distrito/distritos_por_microrregiao:23016|23017', erb: { param: '23016%7C23017' }) do
233
+ IBGE::Distrito.distritos_por_microrregiao([23016, 23017])
234
+ end
235
+ end
236
+
237
+ it_has_behavior 'array'
238
+ end
239
+
240
+ context 'recebendo um ID (23016) como parâmetro' do
241
+ subject do
242
+ VCR.use_cassette('distrito/distritos_por_microrregiao:23016', erb: { param: '23016' }) do
243
+ IBGE::Distrito.distritos_por_microrregiao(23016)
244
+ end
245
+ end
246
+
247
+ it_has_behavior 'array'
248
+ end
249
+ end
250
+ end
@@ -0,0 +1,144 @@
1
+ describe IBGE::Mesorregiao do
2
+ shared_examples_for 'objeto' do
3
+ it 'deve retornar um objeto IBGE::Mesorregiao' do
4
+ is_expected.to be_an IBGE::Mesorregiao
5
+ end
6
+
7
+ it 'deve retornar o nome Metropolitana de Fortaleza' do
8
+ expect(subject.nome).to eq('Metropolitana de Fortaleza')
9
+ end
10
+
11
+ it 'deve retornar o ID 2303' do
12
+ expect(subject.id).to eq(2303)
13
+ end
14
+
15
+ it 'deve retornar a UF, que é um objeto IBGE::UF' do
16
+ expect(subject.uf).to be_an IBGE::UF
17
+ end
18
+ end
19
+
20
+ shared_examples_for 'array' do
21
+ it 'deve retornar um Array<IBGE::Mesorregiao>' do
22
+ aggregate_failures do
23
+ is_expected.to be_an Array
24
+ expect(subject.first).to be_an IBGE::Mesorregiao
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '.obter_mesorregioes' do
30
+ subject do
31
+ VCR.use_cassette('mesorregiao/obter_mesorregioes') do
32
+ IBGE::Mesorregiao.obter_mesorregioes
33
+ end
34
+ end
35
+
36
+ it_has_behavior 'array'
37
+ end
38
+
39
+ describe '.mesorregioes_por_uf' do
40
+ context 'recebendo um array de siglas (["BA", "CE"]) como parâmetro' do
41
+ subject do
42
+ VCR.use_cassette('mesorregiao/mesorregioes_por_uf:BA|CE', erb: { param: 'BA%7CCE' }) do
43
+ IBGE::Mesorregiao.mesorregioes_por_uf(%w(BA CE))
44
+ end
45
+ end
46
+
47
+ it_has_behavior 'array'
48
+ end
49
+
50
+ context 'recebendo um array de IDs ([29, 23]) como parâmetro' do
51
+ subject do
52
+ VCR.use_cassette('mesorregiao/mesorregioes_por_uf:BA|CE', erb: { param: '29%7C23' }) do
53
+ IBGE::Mesorregiao.mesorregioes_por_uf([29, 23])
54
+ end
55
+ end
56
+
57
+ it_has_behavior 'array'
58
+ end
59
+
60
+ context 'recebendo uma sigla (CE) como parâmetro' do
61
+ subject do
62
+ VCR.use_cassette('mesorregiao/mesorregioes_por_uf:CE', erb: { param: 'CE' }) do
63
+ IBGE::Mesorregiao.mesorregioes_por_uf('CE')
64
+ end
65
+ end
66
+
67
+ it_has_behavior 'array'
68
+ end
69
+
70
+ context 'recebendo um ID (23) como parâmetro' do
71
+ subject do
72
+ VCR.use_cassette('mesorregiao/mesorregioes_por_uf:CE', erb: { param: 23 }) do
73
+ IBGE::Mesorregiao.mesorregioes_por_uf(23)
74
+ end
75
+ end
76
+
77
+ it_has_behavior 'array'
78
+ end
79
+ end
80
+
81
+ describe '.mesorregioes_por_regiao' do
82
+ context 'recebendo um array de siglas (["N", "NE"]) como parâmetro' do
83
+ subject do
84
+ VCR.use_cassette('mesorregiao/mesorregioes_por_regiao:N|NE', erb: { param: 'N%7CNE' }) do
85
+ IBGE::Mesorregiao.mesorregioes_por_regiao(%w(N NE))
86
+ end
87
+ end
88
+
89
+ it_has_behavior 'array'
90
+ end
91
+
92
+ context 'recebendo um array de IDs ([1, 2]) como parâmetro' do
93
+ subject do
94
+ VCR.use_cassette('mesorregiao/mesorregioes_por_regiao:N|NE', erb: { param: '1%7C2' }) do
95
+ IBGE::Mesorregiao.mesorregioes_por_regiao([1, 2])
96
+ end
97
+ end
98
+
99
+ it_has_behavior 'array'
100
+ end
101
+
102
+ context 'recebendo um ID (2) como parâmetro' do
103
+ subject do
104
+ VCR.use_cassette('mesorregiao/mesorregioes_por_regiao:NE', erb: { param: 2 }) do
105
+ IBGE::Mesorregiao.mesorregioes_por_regiao(2)
106
+ end
107
+ end
108
+
109
+ it_has_behavior 'array'
110
+ end
111
+
112
+ context 'recebendo uma sigla (NE) como parâmetro' do
113
+ subject do
114
+ VCR.use_cassette('mesorregiao/mesorregioes_por_regiao:NE', erb: { param: 'NE' }) do
115
+ IBGE::Mesorregiao.mesorregioes_por_regiao('NE')
116
+ end
117
+ end
118
+
119
+ it_has_behavior 'array'
120
+ end
121
+ end
122
+
123
+ describe '.mesorregioes_por_id' do
124
+ context 'recebendo um array de IDs ([2303, 2304]) como parâmetro' do
125
+ subject do
126
+ VCR.use_cassette('mesorregiao/mesorregioes_por_id:2303|2304', erb: { param: '2303|2304' }) do
127
+ IBGE::Mesorregiao.mesorregioes_por_id([2303, 2304])
128
+ end
129
+ end
130
+
131
+ it_has_behavior 'array'
132
+ end
133
+
134
+ context 'recebendo um ID (2303) como parâmetro' do
135
+ subject do
136
+ VCR.use_cassette('mesorregiao/mesorregioes_por_id:2303', erb: { param: '2303' }) do
137
+ IBGE::Mesorregiao.mesorregioes_por_id(2303)
138
+ end
139
+ end
140
+
141
+ it_has_behavior 'objeto'
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,166 @@
1
+ describe IBGE::Microrregiao do
2
+ shared_examples_for 'objeto' do
3
+ it 'deve retornar um objeto IBGE::Microrregiao' do
4
+ is_expected.to be_an IBGE::Microrregiao
5
+ end
6
+
7
+ it 'deve retornar o ID 23016' do
8
+ expect(subject.id).to eq(23016)
9
+ end
10
+
11
+ it 'deve retornar o nome Fortaleza' do
12
+ expect(subject.nome).to eq('Fortaleza')
13
+ end
14
+
15
+ it 'deve retornar a mesorregião, que é um objeto IBGE::Mesorregiao' do
16
+ expect(subject.mesorregiao).to be_an IBGE::Mesorregiao
17
+ end
18
+ end
19
+
20
+ shared_examples_for 'array' do
21
+ it 'deve retornar um Array<IBGE::Microrregiao>' do
22
+ aggregate_failures do
23
+ is_expected.to be_an Array
24
+ expect(subject.first).to be_an IBGE::Microrregiao
25
+ end
26
+ end
27
+ end
28
+
29
+ describe '.obter_microrregioes' do
30
+ subject do
31
+ VCR.use_cassette('microrregiao/obter_microrregioes') do
32
+ IBGE::Microrregiao.obter_microrregioes
33
+ end
34
+ end
35
+
36
+ it_has_behavior 'array'
37
+ end
38
+
39
+ describe '.microrregioes_por_id' do
40
+ context 'recebendo um array de IDs ([23016, 23017]) como parâmetro' do
41
+ subject do
42
+ VCR.use_cassette('microrregiao/microrregioes_por_id:23016|23017', erb: { param: '23016%7C23017' }) do
43
+ IBGE::Microrregiao.microrregioes_por_id([23016, 23017])
44
+ end
45
+ end
46
+
47
+ it_has_behavior 'array'
48
+ end
49
+
50
+ context 'recebendo um ID (23016) como parâmetro' do
51
+ subject do
52
+ VCR.use_cassette('microrregiao/microrregioes_por_id:23016', erb: { param: '23016' }) do
53
+ IBGE::Microrregiao.microrregioes_por_id(23016)
54
+ end
55
+ end
56
+
57
+ it_has_behavior 'objeto'
58
+ end
59
+ end
60
+
61
+ describe '.microrregioes_por_uf' do
62
+ context 'recebendo um array de siglas (["BA", "CE"]) como parâmetro' do
63
+ subject do
64
+ VCR.use_cassette('microrregiao/microrregioes_por_uf:BA|CE', erb: { param: 'BA%7CCE' }) do
65
+ IBGE::Microrregiao.microrregioes_por_uf(%w(BA CE))
66
+ end
67
+ end
68
+
69
+ it_has_behavior 'array'
70
+ end
71
+
72
+ context 'recebendo um array de IDs ([29, 23]) como parâmetro' do
73
+ subject do
74
+ VCR.use_cassette('microrregiao/microrregioes_por_uf:BA|CE', erb: { param: '29%7C23' }) do
75
+ IBGE::Microrregiao.microrregioes_por_uf([29, 23])
76
+ end
77
+ end
78
+
79
+ it_has_behavior 'array'
80
+ end
81
+
82
+ context 'recebendo uma sigla (CE) como parâmetro' do
83
+ subject do
84
+ VCR.use_cassette('microrregiao/microrregioes_por_uf:CE', erb: { param: 'CE' }) do
85
+ IBGE::Microrregiao.microrregioes_por_uf('CE')
86
+ end
87
+ end
88
+
89
+ it_has_behavior 'array'
90
+ end
91
+
92
+ context 'recebendo um ID (23) como parâmetro' do
93
+ subject do
94
+ VCR.use_cassette('microrregiao/microrregioes_por_uf:CE', erb: { param: 23 }) do
95
+ IBGE::Microrregiao.microrregioes_por_uf(23)
96
+ end
97
+ end
98
+
99
+ it_has_behavior 'array'
100
+ end
101
+ end
102
+
103
+ describe '.microrregioes_por_regiao' do
104
+ context 'recebendo um array de siglas (["N", "NE"]) como parâmetro' do
105
+ subject do
106
+ VCR.use_cassette('microrregiao/microrregioes_por_regiao:N|NE', erb: { param: 'N%7CNE' }) do
107
+ IBGE::Microrregiao.microrregioes_por_regiao(%w(N NE))
108
+ end
109
+ end
110
+
111
+ it_has_behavior 'array'
112
+ end
113
+
114
+ context 'recebendo um array de IDs ([1, 2]) como parâmetro' do
115
+ subject do
116
+ VCR.use_cassette('microrregiao/microrregioes_por_regiao:N|NE', erb: { param: '1%7C2' }) do
117
+ IBGE::Microrregiao.microrregioes_por_regiao([1, 2])
118
+ end
119
+ end
120
+
121
+ it_has_behavior 'array'
122
+ end
123
+
124
+ context 'recebendo um ID (2) como parâmetro' do
125
+ subject do
126
+ VCR.use_cassette('microrregiao/microrregioes_por_regiao:NE', erb: { param: 2 }) do
127
+ IBGE::Microrregiao.microrregioes_por_regiao(2)
128
+ end
129
+ end
130
+
131
+ it_has_behavior 'array'
132
+ end
133
+
134
+ context 'recebendo uma sigla (NE) como parâmetro' do
135
+ subject do
136
+ VCR.use_cassette('microrregiao/microrregioes_por_regiao:NE', erb: { param: 'NE' }) do
137
+ IBGE::Microrregiao.microrregioes_por_regiao('NE')
138
+ end
139
+ end
140
+
141
+ it_has_behavior 'array'
142
+ end
143
+ end
144
+
145
+ describe '.microrregioes_por_mesorregiao' do
146
+ context 'recebendo um array de IDs ([2303, 2304]) como parâmetro' do
147
+ subject do
148
+ VCR.use_cassette('microrregiao/microrregioes_por_mesorregiao:2303|2304', erb: { param: '2303%7C2304' }) do
149
+ IBGE::Microrregiao.microrregioes_por_mesorregiao([2303, 2304])
150
+ end
151
+ end
152
+
153
+ it_has_behavior 'array'
154
+ end
155
+
156
+ context 'recebendo um ID (2303) como parâmetro' do
157
+ subject do
158
+ VCR.use_cassette('microrregiao/microrregioes_por_mesorregiao:2303', erb: { param: '2303' }) do
159
+ IBGE::Microrregiao.microrregioes_por_mesorregiao(2303)
160
+ end
161
+ end
162
+
163
+ it_has_behavior 'array'
164
+ end
165
+ end
166
+ end