tulios-brcobranca-rails2 2.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/History.txt +29 -0
  2. data/Manifest.txt +54 -0
  3. data/PostInstall.txt +4 -0
  4. data/README.rdoc +75 -0
  5. data/Rakefile +41 -0
  6. data/brcobranca.gemspec +43 -0
  7. data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
  8. data/lib/brcobranca/arquivos/logos/bb.jpg +0 -0
  9. data/lib/brcobranca/arquivos/logos/bradesco.jpg +0 -0
  10. data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
  11. data/lib/brcobranca/arquivos/logos/hsbc.jpg +0 -0
  12. data/lib/brcobranca/arquivos/logos/itau.jpg +0 -0
  13. data/lib/brcobranca/arquivos/logos/real.jpg +0 -0
  14. data/lib/brcobranca/arquivos/logos/unibanco.jpg +0 -0
  15. data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
  16. data/lib/brcobranca/boleto/banco_banespa.rb +85 -0
  17. data/lib/brcobranca/boleto/banco_bradesco.rb +44 -0
  18. data/lib/brcobranca/boleto/banco_brasil.rb +88 -0
  19. data/lib/brcobranca/boleto/banco_caixa.rb +118 -0
  20. data/lib/brcobranca/boleto/banco_hsbc.rb +77 -0
  21. data/lib/brcobranca/boleto/banco_itau.rb +115 -0
  22. data/lib/brcobranca/boleto/banco_real.rb +70 -0
  23. data/lib/brcobranca/boleto/banco_unibanco.rb +79 -0
  24. data/lib/brcobranca/boleto/base.rb +154 -0
  25. data/lib/brcobranca/boleto/template/rghost.rb +153 -0
  26. data/lib/brcobranca/boleto/template/util.rb +34 -0
  27. data/lib/brcobranca/config.rb +9 -0
  28. data/lib/brcobranca/core_ext.rb +287 -0
  29. data/lib/brcobranca/currency.rb +67 -0
  30. data/lib/brcobranca/retorno/base.rb +43 -0
  31. data/lib/brcobranca/retorno/retorno_cbr643.rb +44 -0
  32. data/lib/brcobranca.rb +43 -0
  33. data/spec/arquivos/CBR64310.RET +28 -0
  34. data/spec/brcobranca/banco_banespa_spec.rb +195 -0
  35. data/spec/brcobranca/banco_bradesco_spec.rb +179 -0
  36. data/spec/brcobranca/banco_brasil_spec.rb +353 -0
  37. data/spec/brcobranca/banco_caixa_spec.rb +192 -0
  38. data/spec/brcobranca/banco_hsbc_spec.rb +216 -0
  39. data/spec/brcobranca/banco_itau_spec.rb +202 -0
  40. data/spec/brcobranca/banco_real_spec.rb +145 -0
  41. data/spec/brcobranca/banco_unibanco_spec.rb +193 -0
  42. data/spec/brcobranca/base_spec.rb +240 -0
  43. data/spec/brcobranca/core_ext_spec.rb +275 -0
  44. data/spec/brcobranca/currency_spec.rb +81 -0
  45. data/spec/brcobranca/retorno_cbr643_spec.rb +69 -0
  46. data/spec/brcobranca/rghost_spec.rb +36 -0
  47. data/spec/brcobranca/template/rghost_spec.rb +65 -0
  48. data/spec/brcobranca/template/util_spec.rb +42 -0
  49. data/spec/brcobranca_spec.rb +8 -0
  50. data/spec/rcov.opts +2 -0
  51. data/spec/spec.opts +6 -0
  52. data/spec/spec_helper.rb +10 -0
  53. data/tasks/rcov.rake +12 -0
  54. data/tasks/rspec.rake +21 -0
  55. metadata +202 -0
@@ -0,0 +1,353 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ describe BancoBrasil do #:nodoc:[all]
4
+
5
+ before(:each) do
6
+ @valid_attributes = {
7
+ :especie_documento => "DM",
8
+ :moeda => "9",
9
+ :banco => "001",
10
+ :data_documento => Date.today,
11
+ :dias_vencimento => 1,
12
+ :aceite => "S",
13
+ :quantidade => 1,
14
+ :valor => 0.0,
15
+ :local_pagamento => "QUALQUER BANCO ATÉ O VENCIMENTO",
16
+ :cedente => "Kivanio Barbosa",
17
+ :documento_cedente => "12345678912",
18
+ :sacado => "Claudio Pozzebom",
19
+ :sacado_documento => "12345678900",
20
+ :agencia => "4042",
21
+ :conta_corrente => "61900",
22
+ :convenio => 12387989,
23
+ :numero_documento => "777700168"
24
+ }
25
+ end
26
+
27
+ it "should create a new default instance" do
28
+ boleto_novo = BancoBrasil.new
29
+ boleto_novo.banco.should eql("001")
30
+ boleto_novo.especie_documento.should eql("DM")
31
+ boleto_novo.especie.should eql("R$")
32
+ boleto_novo.moeda.should eql("9")
33
+ boleto_novo.data_documento.should eql(Date.today)
34
+ boleto_novo.dias_vencimento.should eql(1)
35
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
36
+ boleto_novo.aceite.should eql("S")
37
+ boleto_novo.quantidade.should eql(1)
38
+ boleto_novo.valor.should eql(0.0)
39
+ boleto_novo.valor_documento.should eql(0.0)
40
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
41
+ boleto_novo.carteira.should eql("18")
42
+ boleto_novo.codigo_servico.should be_false
43
+ boleto_novo.should be_instance_of(BancoBrasil)
44
+ end
45
+
46
+ it "should create a new instance given valid attributes" do
47
+ boleto_novo = BancoBrasil.new(@valid_attributes)
48
+ boleto_novo.banco.should eql("001")
49
+ boleto_novo.especie_documento.should eql("DM")
50
+ boleto_novo.especie.should eql("R$")
51
+ boleto_novo.moeda.should eql("9")
52
+ boleto_novo.data_documento.should eql(Date.today)
53
+ boleto_novo.dias_vencimento.should eql(1)
54
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
55
+ boleto_novo.aceite.should eql("S")
56
+ boleto_novo.quantidade.should eql(1)
57
+ boleto_novo.valor.should eql(0.0)
58
+ boleto_novo.valor_documento.should eql(0.0)
59
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
60
+ boleto_novo.cedente.should eql("Kivanio Barbosa")
61
+ boleto_novo.documento_cedente.should eql("12345678912")
62
+ boleto_novo.sacado.should eql("Claudio Pozzebom")
63
+ boleto_novo.sacado_documento.should eql("12345678900")
64
+ boleto_novo.conta_corrente.should eql("61900")
65
+ boleto_novo.agencia.should eql("4042")
66
+ boleto_novo.convenio.should eql(12387989)
67
+ boleto_novo.numero_documento.should eql("777700168")
68
+ boleto_novo.carteira.should eql("18")
69
+ boleto_novo.codigo_servico.should be_false
70
+ boleto_novo.should be_instance_of(BancoBrasil)
71
+ end
72
+
73
+ it "should mount a valid invoice para convenio de 8 digitos e nosso numero de 9" do
74
+ @valid_attributes[:valor] = 135.00
75
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
76
+ @valid_attributes[:dias_vencimento] = 0
77
+ boleto_novo = BancoBrasil.new(@valid_attributes)
78
+ boleto_novo.should be_instance_of(BancoBrasil)
79
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135000000001238798977770016818")
80
+ boleto_novo.codigo_barras.should eql("00193376900000135000000001238798977770016818")
81
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798977 77700.168188 3 37690000013500")
82
+ boleto_novo.conta_corrente_dv.should eql(0)
83
+ boleto_novo.nosso_numero_dv.should eql(7)
84
+
85
+ @valid_attributes[:dias_vencimento] = 1
86
+ @valid_attributes[:numero_documento] = "7700168"
87
+ boleto_novo = BancoBrasil.new(@valid_attributes)
88
+ boleto_novo.should be_instance_of(BancoBrasil)
89
+ boleto_novo.monta_codigo_43_digitos.should eql("0019377000000135000000001238798900770016818")
90
+ boleto_novo.codigo_barras.should eql("00193377000000135000000001238798900770016818")
91
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798902 07700.168185 3 37700000013500")
92
+ boleto_novo.conta_corrente_dv.should eql(0)
93
+ boleto_novo.nosso_numero_dv.should eql("X")
94
+ end
95
+
96
+ it "should mount a valid invoice para convenio de 7 digitos e nosso numero de 10" do
97
+ @valid_attributes[:valor] = 135.00
98
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
99
+ @valid_attributes[:dias_vencimento] = 2
100
+ @valid_attributes[:convenio] = 1238798
101
+ @valid_attributes[:numero_documento] = "7777700168"
102
+ boleto_novo = BancoBrasil.new(@valid_attributes)
103
+ boleto_novo.should be_instance_of(BancoBrasil)
104
+ boleto_novo.monta_codigo_43_digitos.should eql("0019377100000135000000001238798777770016818")
105
+ boleto_novo.codigo_barras.should eql("00193377100000135000000001238798777770016818")
106
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 3 37710000013500")
107
+ boleto_novo.conta_corrente_dv.should eql(0)
108
+
109
+ @valid_attributes[:valor] = 723.56
110
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
111
+ @valid_attributes[:dias_vencimento] = 2
112
+ @valid_attributes[:convenio] = 1238798
113
+ @valid_attributes[:numero_documento] = "7777700168"
114
+ boleto_novo = BancoBrasil.new(@valid_attributes)
115
+ boleto_novo.should be_instance_of(BancoBrasil)
116
+ boleto_novo.monta_codigo_43_digitos.should eql("0019377100000723560000001238798777770016818")
117
+ boleto_novo.codigo_barras.should eql("00195377100000723560000001238798777770016818")
118
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 5 37710000072356")
119
+ boleto_novo.conta_corrente_dv.should eql(0)
120
+
121
+ @valid_attributes[:valor] = 723.56
122
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
123
+ @valid_attributes[:dias_vencimento] = 0
124
+ @valid_attributes[:convenio] = 1238798
125
+ @valid_attributes[:numero_documento] = "7777700168"
126
+ boleto_novo = BancoBrasil.new(@valid_attributes)
127
+ boleto_novo.should be_instance_of(BancoBrasil)
128
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000723560000001238798777770016818")
129
+ boleto_novo.codigo_barras.should eql("00194376900000723560000001238798777770016818")
130
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 4 37690000072356")
131
+ boleto_novo.conta_corrente_dv.should eql(0)
132
+ end
133
+
134
+ it "should mount a valid invoice para convenio de 6 digitos e nosso numero de 5" do
135
+ @valid_attributes[:valor] = 135.00
136
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
137
+ @valid_attributes[:dias_vencimento] = 0
138
+ @valid_attributes[:convenio] = 123879
139
+ @valid_attributes[:numero_documento] = "1234"
140
+ boleto_novo = BancoBrasil.new(@valid_attributes)
141
+ boleto_novo.should be_instance_of(BancoBrasil)
142
+ boleto_novo.conta_corrente_dv.should eql(0)
143
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790123440420006190018")
144
+ boleto_novo.codigo_barras.should eql("00192376900000135001238790123440420006190018")
145
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90123.440423 00061.900189 2 37690000013500")
146
+ end
147
+
148
+ it "should mount a valid invoice para convenio de 6 digitos, nosso numero de 17 e carteira 16" do
149
+ @valid_attributes[:valor] = 135.00
150
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
151
+ @valid_attributes[:dias_vencimento] = 0
152
+ @valid_attributes[:convenio] = 123879
153
+ @valid_attributes[:numero_documento] = "1234567899"
154
+ @valid_attributes[:carteira] = "16"
155
+ @valid_attributes[:codigo_servico] = true
156
+ boleto_novo = BancoBrasil.new(@valid_attributes)
157
+ boleto_novo.should be_instance_of(BancoBrasil)
158
+ boleto_novo.conta_corrente_dv.should eql(0)
159
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790000000123456789921")
160
+ boleto_novo.codigo_barras.should eql("00199376900000135001238790000000123456789921")
161
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90000.000126 34567.899215 9 37690000013500")
162
+ end
163
+
164
+ it "should mount a valid invoice para convenio de 6 digitos, nosso numero de 17 e carteira 18" do
165
+ @valid_attributes[:valor] = 135.00
166
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
167
+ @valid_attributes[:dias_vencimento] = 0
168
+ @valid_attributes[:convenio] = 123879
169
+ @valid_attributes[:numero_documento] = "1234567899"
170
+ @valid_attributes[:carteira] = "18"
171
+ @valid_attributes[:codigo_servico] = true
172
+ boleto_novo = BancoBrasil.new(@valid_attributes)
173
+ boleto_novo.should be_instance_of(BancoBrasil)
174
+ boleto_novo.conta_corrente_dv.should eql(0)
175
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790000000123456789921")
176
+ boleto_novo.codigo_barras.should eql("00199376900000135001238790000000123456789921")
177
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90000.000126 34567.899215 9 37690000013500")
178
+ end
179
+
180
+ it "should mount raise error para convenio de 6 digitos, nosso numero de 17 e carteira 17" do
181
+ @valid_attributes[:valor] = 135.00
182
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
183
+ @valid_attributes[:dias_vencimento] = 0
184
+ @valid_attributes[:convenio] = 123879
185
+ @valid_attributes[:numero_documento] = "1234567899"
186
+ @valid_attributes[:carteira] = "17"
187
+ @valid_attributes[:codigo_servico] = true
188
+ boleto_novo = BancoBrasil.new(@valid_attributes)
189
+ boleto_novo.should be_instance_of(BancoBrasil)
190
+ boleto_novo.conta_corrente_dv.should eql(0)
191
+ lambda { boleto_novo.monta_codigo_43_digitos }.should raise_error(RuntimeError)
192
+ lambda { boleto_novo.monta_codigo_43_digitos }.should raise_error("Só é permitido emitir boletos com nosso número de 17 dígitos com carteiras 16 ou 18. Sua carteira atual é 17")
193
+ end
194
+
195
+ it "should mount a valid invoice para convenio de 4 digitos e nosso numero de 7" do
196
+ @valid_attributes[:valor] = 135.00
197
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
198
+ @valid_attributes[:dias_vencimento] = 0
199
+ @valid_attributes[:convenio] = 1238
200
+ @valid_attributes[:numero_documento] = "123456"
201
+ @valid_attributes[:codigo_servico] = true
202
+ boleto_novo = BancoBrasil.new(@valid_attributes)
203
+ boleto_novo.should be_instance_of(BancoBrasil)
204
+ boleto_novo.conta_corrente_dv.should eql(0)
205
+ boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238012345640420006190018")
206
+ boleto_novo.codigo_barras.should eql("00191376900000135001238012345640420006190018")
207
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23801 12345.640424 00061.900189 1 37690000013500")
208
+ end
209
+
210
+ # TODO - should give exception
211
+ it "should return nil when attributes are nil" do
212
+ @valid_attributes[:valor] = 0
213
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
214
+ @valid_attributes[:dias_vencimento] = 0
215
+ @valid_attributes[:numero_documento] = ""
216
+ @valid_attributes[:banco] = ""
217
+ @valid_attributes[:carteira] = ""
218
+ @valid_attributes[:moeda] = ""
219
+ @valid_attributes[:convenio] = ""
220
+
221
+ boleto_novo = BancoBrasil.new(@valid_attributes)
222
+ boleto_novo.should be_instance_of(BancoBrasil)
223
+ boleto_novo.monta_codigo_43_digitos.should be_nil
224
+ boleto_novo.codigo_barras.should be_nil
225
+ end
226
+
227
+ it "should calculate bando_dv" do
228
+ boleto_novo = BancoBrasil.new(@valid_attributes)
229
+ boleto_novo.banco = "85068014982"
230
+ boleto_novo.banco_dv.should eql(9)
231
+ boleto_novo.banco = "05009401448"
232
+ boleto_novo.banco_dv.should eql(1)
233
+ boleto_novo.banco = "12387987777700168"
234
+ boleto_novo.banco_dv.should eql(2)
235
+ boleto_novo.banco = "4042"
236
+ boleto_novo.banco_dv.should eql(8)
237
+ boleto_novo.banco = "61900"
238
+ boleto_novo.banco_dv.should eql(0)
239
+ boleto_novo.banco = "0719"
240
+ boleto_novo.banco_dv.should eql(6)
241
+ boleto_novo.banco = 85068014982
242
+ boleto_novo.banco_dv.should eql(9)
243
+ boleto_novo.banco = 5009401448
244
+ boleto_novo.banco_dv.should eql(1)
245
+ boleto_novo.banco = 12387987777700168
246
+ boleto_novo.banco_dv.should eql(2)
247
+ boleto_novo.banco = 4042
248
+ boleto_novo.banco_dv.should eql(8)
249
+ boleto_novo.banco = 61900
250
+ boleto_novo.banco_dv.should eql(0)
251
+ boleto_novo.banco = 719
252
+ boleto_novo.banco_dv.should eql(6)
253
+ end
254
+
255
+ it "should calculate agencia_dv" do
256
+ boleto_novo = BancoBrasil.new(@valid_attributes)
257
+ boleto_novo.agencia = "85068014982"
258
+ boleto_novo.agencia_dv.should eql(9)
259
+ boleto_novo.agencia = "05009401448"
260
+ boleto_novo.agencia_dv.should eql(1)
261
+ boleto_novo.agencia = "12387987777700168"
262
+ boleto_novo.agencia_dv.should eql(2)
263
+ boleto_novo.agencia = "4042"
264
+ boleto_novo.agencia_dv.should eql(8)
265
+ boleto_novo.agencia = "61900"
266
+ boleto_novo.agencia_dv.should eql(0)
267
+ boleto_novo.agencia = "0719"
268
+ boleto_novo.agencia_dv.should eql(6)
269
+ boleto_novo.agencia = 85068014982
270
+ boleto_novo.agencia_dv.should eql(9)
271
+ boleto_novo.agencia = 5009401448
272
+ boleto_novo.agencia_dv.should eql(1)
273
+ boleto_novo.agencia = 12387987777700168
274
+ boleto_novo.agencia_dv.should eql(2)
275
+ boleto_novo.agencia = 4042
276
+ boleto_novo.agencia_dv.should eql(8)
277
+ boleto_novo.agencia = 61900
278
+ boleto_novo.agencia_dv.should eql(0)
279
+ boleto_novo.agencia = 719
280
+ boleto_novo.agencia_dv.should eql(6)
281
+ end
282
+
283
+ it "should mount nosso_numero_boleto" do
284
+ boleto_novo = BancoBrasil.new(@valid_attributes)
285
+ boleto_novo.numero_documento = "85068014982"
286
+ boleto_novo.nosso_numero_boleto.should eql("1238798985068014982-6")
287
+ boleto_novo.nosso_numero_dv.should eql(6)
288
+ boleto_novo.numero_documento = "05009401448"
289
+ boleto_novo.nosso_numero_boleto.should eql("1238798905009401448-9")
290
+ boleto_novo.nosso_numero_dv.should eql(9)
291
+ boleto_novo.numero_documento = "12387987777700168"
292
+ boleto_novo.nosso_numero_boleto.should eql("1238798912387987777700168-9")
293
+ boleto_novo.nosso_numero_dv.should eql(9)
294
+ boleto_novo.numero_documento = "4042"
295
+ boleto_novo.nosso_numero_boleto.should eql("123879894042-0")
296
+ boleto_novo.nosso_numero_dv.should eql(0)
297
+ boleto_novo.numero_documento = "61900"
298
+ boleto_novo.nosso_numero_boleto.should eql("1238798961900-1")
299
+ boleto_novo.nosso_numero_dv.should eql(1)
300
+ boleto_novo.numero_documento = "0719"
301
+ boleto_novo.nosso_numero_boleto.should eql("123879890719-9")
302
+ boleto_novo.nosso_numero_dv.should eql(9)
303
+ boleto_novo.numero_documento = 85068014982
304
+ boleto_novo.nosso_numero_boleto.should eql("1238798985068014982-6")
305
+ boleto_novo.nosso_numero_dv.should eql(6)
306
+ boleto_novo.numero_documento = 5009401448
307
+ boleto_novo.nosso_numero_boleto.should eql("123879895009401448-X")
308
+ boleto_novo.nosso_numero_dv.should eql("X")
309
+ boleto_novo.numero_documento = 12387987777700168
310
+ boleto_novo.nosso_numero_boleto.should eql("1238798912387987777700168-9")
311
+ boleto_novo.nosso_numero_dv.should eql(9)
312
+ boleto_novo.numero_documento = 4042
313
+ boleto_novo.nosso_numero_boleto.should eql("123879894042-0")
314
+ boleto_novo.nosso_numero_dv.should eql(0)
315
+ boleto_novo.numero_documento = 61900
316
+ boleto_novo.nosso_numero_boleto.should eql("1238798961900-1")
317
+ boleto_novo.nosso_numero_dv.should eql(1)
318
+ boleto_novo.numero_documento = 719
319
+ boleto_novo.nosso_numero_boleto.should eql("12387989719-3")
320
+ boleto_novo.nosso_numero_dv.should eql(3)
321
+ end
322
+
323
+ it "should mount agencia_conta_boleto" do
324
+ boleto_novo = BancoBrasil.new(@valid_attributes)
325
+ boleto_novo.should be_instance_of(BancoBrasil)
326
+ boleto_novo.agencia_conta_boleto.should eql("4042-8 / 61900-0")
327
+ boleto_novo.agencia = "0719"
328
+ boleto_novo.agencia_conta_boleto.should eql("0719-6 / 61900-0")
329
+ boleto_novo.agencia = "0548"
330
+ boleto_novo.conta_corrente = "1448"
331
+ boleto_novo.agencia_conta_boleto.should eql("0548-7 / 1448-6")
332
+ end
333
+
334
+ it "should test outputs" do
335
+ @valid_attributes[:valor] = 135.00
336
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
337
+ @valid_attributes[:dias_vencimento] = 2
338
+ @valid_attributes[:convenio] = 1238798
339
+ @valid_attributes[:numero_documento] = "7777700168"
340
+ boleto_novo = BancoBrasil.new(@valid_attributes)
341
+ %w| pdf jpg tif png ps |.each do |format|
342
+ file_body=boleto_novo.to(format.to_sym)
343
+ tmp_file=Tempfile.new("foobar." << format)
344
+ tmp_file.puts file_body
345
+ tmp_file.close
346
+ File.exist?(tmp_file.path).should be_true
347
+ File.stat(tmp_file.path).zero?.should be_false
348
+ File.delete(tmp_file.path).should eql(1)
349
+ File.exist?(tmp_file.path).should be_false
350
+ end
351
+ end
352
+
353
+ end
@@ -0,0 +1,192 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
3
+
4
+ describe BancoCaixa do #:nodoc:[all]
5
+
6
+ before(:each) do
7
+ @valid_attributes = {
8
+ :especie_documento => "DM",
9
+ :moeda => "9",
10
+ :data_documento => Date.today,
11
+ :dias_vencimento => 1,
12
+ :aceite => "S",
13
+ :quantidade => 1,
14
+ :valor => 0.0,
15
+ :local_pagamento => "QUALQUER BANCO ATÉ O VENCIMENTO",
16
+ :cedente => "Túlio Ornelas",
17
+ :documento_cedente => "200874000687",
18
+ :sacado => "Ana Carolina Mascarenhas",
19
+ :sacado_documento => "93463665751",
20
+ :agencia => "1565",
21
+ :conta_corrente => "13877",
22
+ :convenio => "87000000414",
23
+ :numero_documento => "1"
24
+ }
25
+ end
26
+
27
+ it "Criar nova instancia com atributos padrões" do
28
+ boleto_novo = BancoCaixa.new
29
+ boleto_novo.banco.should eql("104")
30
+ boleto_novo.especie_documento.should eql("DM")
31
+ boleto_novo.especie.should eql("R$")
32
+ boleto_novo.moeda.should eql("9")
33
+ boleto_novo.data_documento.should eql(Date.today)
34
+ boleto_novo.dias_vencimento.should eql(1)
35
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
36
+ boleto_novo.aceite.should eql("S")
37
+ boleto_novo.quantidade.should eql(1)
38
+ boleto_novo.valor.should eql(0.0)
39
+ boleto_novo.valor_documento.should eql(0.0)
40
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
41
+ boleto_novo.carteira.should eql(BancoCaixa::CARTEIRAS[14])
42
+ boleto_novo.codigo_servico.should be_false
43
+ end
44
+
45
+ it "Criar nova instancia com atributos válidos" do
46
+ boleto_novo = BancoCaixa.new(@valid_attributes)
47
+ boleto_novo.banco.should eql("104")
48
+ boleto_novo.especie_documento.should eql("DM")
49
+ boleto_novo.especie.should eql("R$")
50
+ boleto_novo.moeda.should eql("9")
51
+ boleto_novo.data_documento.should eql(Date.today)
52
+ boleto_novo.dias_vencimento.should eql(1)
53
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
54
+ boleto_novo.aceite.should eql("S")
55
+ boleto_novo.quantidade.should eql(1)
56
+ boleto_novo.valor.should eql(0.0)
57
+ boleto_novo.valor_documento.should eql(0.0)
58
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
59
+ boleto_novo.cedente.should eql("Túlio Ornelas")
60
+ boleto_novo.documento_cedente.should eql("200874000687")
61
+ boleto_novo.sacado.should eql("Ana Carolina Mascarenhas")
62
+ boleto_novo.sacado_documento.should eql("93463665751")
63
+ boleto_novo.conta_corrente.should eql("13877")
64
+ boleto_novo.agencia.should eql("1565")
65
+ boleto_novo.convenio.should eql("87000000414")
66
+ boleto_novo.numero_documento.should eql("8200000001")
67
+ boleto_novo.carteira.should eql(BancoCaixa::CARTEIRAS[14])
68
+ boleto_novo.codigo_servico.should be_false
69
+ end
70
+
71
+ it "Montar código de barras para convenio de 11 digitos e nosso número de 10" do
72
+ @valid_attributes[:valor] = 135.00
73
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
74
+ @valid_attributes[:dias_vencimento] = 0
75
+ boleto_novo = BancoCaixa.new(@valid_attributes)
76
+
77
+ boleto_novo.codigo_barras_segunda_parte.should eql("8200000001156587000000414")
78
+ boleto_novo.codigo_barras.should eql("10494376900000135008200000001156587000000414")
79
+ boleto_novo.codigo_barras.linha_digitavel.should eql("10498.20002 00001.156587 70000.004146 4 37690000013500")
80
+ boleto_novo.conta_corrente_dv.should eql(0)
81
+ boleto_novo.nosso_numero_dv.should eql(3)
82
+
83
+ @valid_attributes[:dias_vencimento] = 1
84
+ @valid_attributes[:numero_documento] = "2"
85
+ boleto_novo = BancoCaixa.new(@valid_attributes)
86
+
87
+ boleto_novo.codigo_barras_segunda_parte.should eql("8200000002156587000000414")
88
+ boleto_novo.codigo_barras.should eql("10491377000000135008200000002156587000000414")
89
+ boleto_novo.codigo_barras.linha_digitavel.should eql("10498.20002 00002.156586 70000.004146 1 37700000013500")
90
+ boleto_novo.conta_corrente_dv.should eql(0)
91
+ boleto_novo.nosso_numero_dv.should eql(1)
92
+ end
93
+
94
+ it "Não permitir gerar boleto com atributos inválidos" do
95
+ boleto_novo = BancoCaixa.new
96
+ lambda { boleto_novo.codigo_barras }.should raise_error(Brcobranca::BoletoInvalido)
97
+ end
98
+
99
+ it "Montar nosso_numero_boleto" do
100
+ boleto_novo = BancoCaixa.new(@valid_attributes)
101
+ boleto_novo.numero_documento = "1"
102
+ boleto_novo.nosso_numero_boleto.should eql("82000000013")
103
+ boleto_novo.nosso_numero_dv.should eql(3)
104
+ boleto_novo.numero_documento = "2"
105
+ boleto_novo.nosso_numero_boleto.should eql("82000000021")
106
+ boleto_novo.nosso_numero_dv.should eql(1)
107
+ boleto_novo.numero_documento = "3"
108
+ boleto_novo.nosso_numero_boleto.should eql("82000000031")
109
+ boleto_novo.nosso_numero_dv.should eql(1)
110
+ boleto_novo.numero_documento = 10
111
+ boleto_novo.nosso_numero_boleto.should eql("82000000102")
112
+ boleto_novo.nosso_numero_dv.should eql(2)
113
+ boleto_novo.numero_documento = 20
114
+ boleto_novo.nosso_numero_boleto.should eql("82000000201")
115
+ boleto_novo.nosso_numero_dv.should eql(1)
116
+ boleto_novo.numero_documento = 30
117
+ boleto_novo.nosso_numero_boleto.should eql("82000000307")
118
+ boleto_novo.nosso_numero_dv.should eql(7)
119
+ end
120
+
121
+ it "Montar agencia_conta_boleto" do
122
+ boleto_novo = BancoCaixa.new(@valid_attributes)
123
+
124
+ boleto_novo.agencia_conta_boleto.should eql("1565/13877-0")
125
+ boleto_novo.agencia = "1314"
126
+ boleto_novo.agencia_conta_boleto.should eql("1314/13877-0")
127
+ boleto_novo.agencia = "2030"
128
+ boleto_novo.conta_corrente = "067164"
129
+ boleto_novo.agencia_conta_boleto.should eql("2030/067164-9")
130
+ end
131
+
132
+ it "Busca logotipo do banco" do
133
+ boleto_novo = BancoCaixa.new
134
+ File.exist?(boleto_novo.monta_logo).should be_true
135
+ File.stat(boleto_novo.monta_logo).zero?.should be_false
136
+ end
137
+
138
+ it "Gerar boleto nos formatos válidos" do
139
+ @valid_attributes[:valor] = 135.00
140
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
141
+ @valid_attributes[:dias_vencimento] = 2
142
+ @valid_attributes[:numero_documento] = "77700168"
143
+ boleto_novo = BancoCaixa.new(@valid_attributes)
144
+ %w| pdf jpg tif png ps |.each do |format|
145
+ file_body=boleto_novo.to(format)
146
+ tmp_file=Tempfile.new("foobar." << format)
147
+ tmp_file.puts file_body
148
+ tmp_file.close
149
+ File.exist?(tmp_file.path).should be_true
150
+ File.stat(tmp_file.path).zero?.should be_false
151
+ File.delete(tmp_file.path).should eql(1)
152
+ File.exist?(tmp_file.path).should be_false
153
+ end
154
+ end
155
+
156
+ it 'deveria possuir o campo livre igual a segunda parte do codigo de barras' do
157
+ boleto_novo = BancoCaixa.new(@valid_attributes)
158
+ boleto_novo.codigo_barras_segunda_parte.should eql(boleto_novo.campo_livre)
159
+ end
160
+
161
+ it 'deveria retornar a carteira sempre com a sigla' do
162
+ boleto_novo = BancoCaixa.new :carteira => 14
163
+ boleto_novo.carteira.should eql(BancoCaixa::CARTEIRAS[14])
164
+
165
+ boleto_novo = BancoCaixa.new :carteira => 'SR'
166
+ boleto_novo.carteira.should eql(BancoCaixa::CARTEIRAS[14])
167
+ end
168
+
169
+ it 'deveria retornar o numero_documento com base na carteira' do
170
+ @valid_attributes[:numero_documento] = "1"
171
+ @valid_attributes[:carteira] = 14
172
+ boleto_novo = BancoCaixa.new(@valid_attributes)
173
+
174
+ boleto_novo.numero_documento.should eql("8200000001")
175
+
176
+ @valid_attributes[:carteira] = 11
177
+ boleto_novo = BancoCaixa.new(@valid_attributes)
178
+ lambda { boleto_novo.numero_documento }.should raise_error(Brcobranca::NaoImplementado)
179
+
180
+ @valid_attributes[:carteira] = 12
181
+ boleto_novo = BancoCaixa.new(@valid_attributes)
182
+ lambda { boleto_novo.numero_documento }.should raise_error(Brcobranca::NaoImplementado)
183
+ end
184
+
185
+ it "deveria calcular o banco_dv corretamente, com base no modulo10" do
186
+ boleto_novo = BancoCaixa.new
187
+ boleto_novo.banco.should eql("104")
188
+ boleto_novo.banco_dv.should eql(0)
189
+ boleto_novo.banco_dv.should eql(boleto_novo.banco.modulo10)
190
+ end
191
+
192
+ end