brcobranca 2.0.6 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.document +5 -0
  2. data/.gitignore +30 -0
  3. data/Gemfile +11 -0
  4. data/Gemfile.lock +48 -0
  5. data/History.txt +13 -1
  6. data/LICENSE +20 -0
  7. data/README.rdoc +12 -5
  8. data/Rakefile +33 -37
  9. data/VERSION +1 -0
  10. data/brcobranca.gemspec +26 -35
  11. data/lib/brcobranca/arquivos/logos/{bb.jpg → bancobrasil.jpg} +0 -0
  12. data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
  13. data/lib/brcobranca/arquivos/logos/caixa.jpg +0 -0
  14. data/lib/brcobranca/boleto/banco_brasil.rb +150 -77
  15. data/lib/brcobranca/boleto/base.rb +146 -75
  16. data/lib/brcobranca/boleto/bradesco.rb +69 -0
  17. data/lib/brcobranca/boleto/caixa.rb +100 -0
  18. data/lib/brcobranca/boleto/hsbc.rb +95 -0
  19. data/lib/brcobranca/boleto/itau.rb +133 -0
  20. data/lib/brcobranca/boleto/real.rb +74 -0
  21. data/lib/brcobranca/boleto/template/base.rb +13 -0
  22. data/lib/brcobranca/boleto/template/rghost.rb +136 -62
  23. data/lib/brcobranca/boleto/unibanco.rb +115 -0
  24. data/lib/brcobranca/calculo.rb +132 -0
  25. data/lib/brcobranca/calculo_data.rb +42 -0
  26. data/lib/brcobranca/currency.rb +3 -4
  27. data/lib/brcobranca/formatacao.rb +102 -0
  28. data/lib/brcobranca/limpeza.rb +19 -0
  29. data/lib/brcobranca/retorno/base.rb +1 -2
  30. data/lib/brcobranca/retorno/retorno_cbr643.rb +42 -40
  31. data/lib/brcobranca/version.rb +3 -0
  32. data/lib/brcobranca.rb +93 -16
  33. data/spec/brcobranca/banco_bradesco_spec.rb +63 -50
  34. data/spec/brcobranca/banco_brasil_spec.rb +102 -136
  35. data/spec/brcobranca/banco_caixa_spec.rb +166 -0
  36. data/spec/brcobranca/banco_hsbc_spec.rb +83 -76
  37. data/spec/brcobranca/banco_real_spec.rb +54 -37
  38. data/spec/brcobranca/banco_unibanco_spec.rb +69 -52
  39. data/spec/brcobranca/base_spec.rb +24 -79
  40. data/spec/brcobranca/boletos_em_lote_spec.rb +46 -0
  41. data/spec/brcobranca/core_ext_spec.rb +24 -114
  42. data/spec/brcobranca/currency_spec.rb +1 -0
  43. data/spec/brcobranca/{banco_itau_spec.rb → itau_spec.rb} +112 -67
  44. data/spec/brcobranca/retorno_cbr643_spec.rb +13 -12
  45. data/spec/brcobranca/rghost_spec.rb +8 -7
  46. data/spec/brcobranca_spec.rb +16 -6
  47. data/spec/spec_helper.rb +11 -8
  48. metadata +107 -58
  49. data/Manifest.txt +0 -51
  50. data/PostInstall.txt +0 -4
  51. data/lib/brcobranca/boleto/banco_banespa.rb +0 -85
  52. data/lib/brcobranca/boleto/banco_bradesco.rb +0 -44
  53. data/lib/brcobranca/boleto/banco_hsbc.rb +0 -77
  54. data/lib/brcobranca/boleto/banco_itau.rb +0 -115
  55. data/lib/brcobranca/boleto/banco_real.rb +0 -70
  56. data/lib/brcobranca/boleto/banco_unibanco.rb +0 -79
  57. data/lib/brcobranca/boleto/template/util.rb +0 -32
  58. data/lib/brcobranca/config.rb +0 -9
  59. data/lib/brcobranca/core_ext.rb +0 -279
  60. data/spec/brcobranca/banco_banespa_spec.rb +0 -195
  61. data/spec/brcobranca/template/rghost_spec.rb +0 -65
  62. data/spec/brcobranca/template/util_spec.rb +0 -42
  63. data/spec/rcov.opts +0 -2
  64. data/spec/spec.opts +0 -6
  65. data/tasks/rcov.rake +0 -12
  66. data/tasks/rspec.rake +0 -21
@@ -1,12 +1,12 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  require File.dirname(__FILE__) + '/../spec_helper.rb'
2
3
 
3
- describe BancoBrasil do #:nodoc:[all]
4
+ describe Brcobranca::Boleto::BancoBrasil do #:nodoc:[all]
4
5
 
5
6
  before(:each) do
6
7
  @valid_attributes = {
7
8
  :especie_documento => "DM",
8
9
  :moeda => "9",
9
- :banco => "001",
10
10
  :data_documento => Date.today,
11
11
  :dias_vencimento => 1,
12
12
  :aceite => "S",
@@ -24,8 +24,8 @@ describe BancoBrasil do #:nodoc:[all]
24
24
  }
25
25
  end
26
26
 
27
- it "should create a new default instance" do
28
- boleto_novo = BancoBrasil.new
27
+ it "Criar nova instancia com atributos padrões" do
28
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new
29
29
  boleto_novo.banco.should eql("001")
30
30
  boleto_novo.especie_documento.should eql("DM")
31
31
  boleto_novo.especie.should eql("R$")
@@ -40,11 +40,10 @@ describe BancoBrasil do #:nodoc:[all]
40
40
  boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
41
41
  boleto_novo.carteira.should eql("18")
42
42
  boleto_novo.codigo_servico.should be_false
43
- boleto_novo.should be_instance_of(BancoBrasil)
44
43
  end
45
44
 
46
- it "should create a new instance given valid attributes" do
47
- boleto_novo = BancoBrasil.new(@valid_attributes)
45
+ it "Criar nova instancia com atributos válidos" do
46
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
48
47
  boleto_novo.banco.should eql("001")
49
48
  boleto_novo.especie_documento.should eql("DM")
50
49
  boleto_novo.especie.should eql("R$")
@@ -61,22 +60,21 @@ describe BancoBrasil do #:nodoc:[all]
61
60
  boleto_novo.documento_cedente.should eql("12345678912")
62
61
  boleto_novo.sacado.should eql("Claudio Pozzebom")
63
62
  boleto_novo.sacado_documento.should eql("12345678900")
64
- boleto_novo.conta_corrente.should eql("61900")
63
+ boleto_novo.conta_corrente.should eql("00061900")
65
64
  boleto_novo.agencia.should eql("4042")
66
65
  boleto_novo.convenio.should eql(12387989)
67
66
  boleto_novo.numero_documento.should eql("777700168")
68
67
  boleto_novo.carteira.should eql("18")
69
68
  boleto_novo.codigo_servico.should be_false
70
- boleto_novo.should be_instance_of(BancoBrasil)
71
69
  end
72
70
 
73
- it "should mount a valid invoice para convenio de 8 digitos e nosso numero de 9" do
71
+ it "Montar código de barras para convenio de 8 digitos e nosso número de 9" do
74
72
  @valid_attributes[:valor] = 135.00
75
73
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
76
74
  @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")
75
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
76
+
77
+ boleto_novo.codigo_barras_segunda_parte.should eql("0000001238798977770016818")
80
78
  boleto_novo.codigo_barras.should eql("00193376900000135000000001238798977770016818")
81
79
  boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798977 77700.168188 3 37690000013500")
82
80
  boleto_novo.conta_corrente_dv.should eql(0)
@@ -84,24 +82,24 @@ describe BancoBrasil do #:nodoc:[all]
84
82
 
85
83
  @valid_attributes[:dias_vencimento] = 1
86
84
  @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")
85
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
86
+
87
+ boleto_novo.codigo_barras_segunda_parte.should eql("0000001238798900770016818")
90
88
  boleto_novo.codigo_barras.should eql("00193377000000135000000001238798900770016818")
91
89
  boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798902 07700.168185 3 37700000013500")
92
90
  boleto_novo.conta_corrente_dv.should eql(0)
93
- boleto_novo.nosso_numero_dv.should eql("X")
91
+ boleto_novo.nosso_numero_dv.should eql(7)
94
92
  end
95
93
 
96
- it "should mount a valid invoice para convenio de 7 digitos e nosso numero de 10" do
94
+ it "Montar código de barras para convenio de 7 digitos e nosso numero de 10" do
97
95
  @valid_attributes[:valor] = 135.00
98
96
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
99
97
  @valid_attributes[:dias_vencimento] = 2
100
98
  @valid_attributes[:convenio] = 1238798
101
99
  @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")
100
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
101
+
102
+ boleto_novo.codigo_barras_segunda_parte.should eql("0000001238798777770016818")
105
103
  boleto_novo.codigo_barras.should eql("00193377100000135000000001238798777770016818")
106
104
  boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 3 37710000013500")
107
105
  boleto_novo.conta_corrente_dv.should eql(0)
@@ -111,9 +109,9 @@ describe BancoBrasil do #:nodoc:[all]
111
109
  @valid_attributes[:dias_vencimento] = 2
112
110
  @valid_attributes[:convenio] = 1238798
113
111
  @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")
112
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
113
+
114
+ boleto_novo.codigo_barras_segunda_parte.should eql("0000001238798777770016818")
117
115
  boleto_novo.codigo_barras.should eql("00195377100000723560000001238798777770016818")
118
116
  boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 5 37710000072356")
119
117
  boleto_novo.conta_corrente_dv.should eql(0)
@@ -123,29 +121,29 @@ describe BancoBrasil do #:nodoc:[all]
123
121
  @valid_attributes[:dias_vencimento] = 0
124
122
  @valid_attributes[:convenio] = 1238798
125
123
  @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")
124
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
125
+
126
+ boleto_novo.codigo_barras_segunda_parte.should eql("0000001238798777770016818")
129
127
  boleto_novo.codigo_barras.should eql("00194376900000723560000001238798777770016818")
130
128
  boleto_novo.codigo_barras.linha_digitavel.should eql("00190.00009 01238.798779 77700.168188 4 37690000072356")
131
129
  boleto_novo.conta_corrente_dv.should eql(0)
132
130
  end
133
131
 
134
- it "should mount a valid invoice para convenio de 6 digitos e nosso numero de 5" do
132
+ it "Montar código de barras para convenio de 6 digitos e nosso numero de 5" do
135
133
  @valid_attributes[:valor] = 135.00
136
134
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
137
135
  @valid_attributes[:dias_vencimento] = 0
138
136
  @valid_attributes[:convenio] = 123879
139
137
  @valid_attributes[:numero_documento] = "1234"
140
- boleto_novo = BancoBrasil.new(@valid_attributes)
141
- boleto_novo.should be_instance_of(BancoBrasil)
138
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
139
+
142
140
  boleto_novo.conta_corrente_dv.should eql(0)
143
- boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790123440420006190018")
141
+ boleto_novo.codigo_barras_segunda_parte.should eql("1238790123440420006190018")
144
142
  boleto_novo.codigo_barras.should eql("00192376900000135001238790123440420006190018")
145
- boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90123.440423 00061.900189 2 37690000013500")
143
+ boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90123.440423 00061.900189 2 37690000013500")
146
144
  end
147
145
 
148
- it "should mount a valid invoice para convenio de 6 digitos, nosso numero de 17 e carteira 16" do
146
+ it "Montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 16" do
149
147
  @valid_attributes[:valor] = 135.00
150
148
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
151
149
  @valid_attributes[:dias_vencimento] = 0
@@ -153,15 +151,15 @@ describe BancoBrasil do #:nodoc:[all]
153
151
  @valid_attributes[:numero_documento] = "1234567899"
154
152
  @valid_attributes[:carteira] = "16"
155
153
  @valid_attributes[:codigo_servico] = true
156
- boleto_novo = BancoBrasil.new(@valid_attributes)
157
- boleto_novo.should be_instance_of(BancoBrasil)
154
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
155
+
158
156
  boleto_novo.conta_corrente_dv.should eql(0)
159
- boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790000000123456789921")
157
+ boleto_novo.codigo_barras_segunda_parte.should eql("1238790000000123456789921")
160
158
  boleto_novo.codigo_barras.should eql("00199376900000135001238790000000123456789921")
161
159
  boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90000.000126 34567.899215 9 37690000013500")
162
160
  end
163
161
 
164
- it "should mount a valid invoice para convenio de 6 digitos, nosso numero de 17 e carteira 18" do
162
+ it "Montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 18" do
165
163
  @valid_attributes[:valor] = 135.00
166
164
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
167
165
  @valid_attributes[:dias_vencimento] = 0
@@ -169,15 +167,15 @@ describe BancoBrasil do #:nodoc:[all]
169
167
  @valid_attributes[:numero_documento] = "1234567899"
170
168
  @valid_attributes[:carteira] = "18"
171
169
  @valid_attributes[:codigo_servico] = true
172
- boleto_novo = BancoBrasil.new(@valid_attributes)
173
- boleto_novo.should be_instance_of(BancoBrasil)
170
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
171
+
174
172
  boleto_novo.conta_corrente_dv.should eql(0)
175
- boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238790000000123456789921")
173
+ boleto_novo.codigo_barras_segunda_parte.should eql("1238790000000123456789921")
176
174
  boleto_novo.codigo_barras.should eql("00199376900000135001238790000000123456789921")
177
175
  boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23876 90000.000126 34567.899215 9 37690000013500")
178
176
  end
179
177
 
180
- it "should mount raise error para convenio de 6 digitos, nosso numero de 17 e carteira 17" do
178
+ it "Não montar código de barras para convenio de 6 digitos, nosso numero de 17 e carteira 17" do
181
179
  @valid_attributes[:valor] = 135.00
182
180
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
183
181
  @valid_attributes[:dias_vencimento] = 0
@@ -185,75 +183,36 @@ describe BancoBrasil do #:nodoc:[all]
185
183
  @valid_attributes[:numero_documento] = "1234567899"
186
184
  @valid_attributes[:carteira] = "17"
187
185
  @valid_attributes[:codigo_servico] = true
188
- boleto_novo = BancoBrasil.new(@valid_attributes)
189
- boleto_novo.should be_instance_of(BancoBrasil)
186
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
187
+
190
188
  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")
189
+ lambda { boleto_novo.codigo_barras_segunda_parte }.should raise_error(RuntimeError)
190
+ lambda { boleto_novo.codigo_barras_segunda_parte }.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
191
  end
194
192
 
195
- it "should mount a valid invoice para convenio de 4 digitos e nosso numero de 7" do
193
+ it "Montar código de barras para convenio de 4 digitos e nosso numero de 7" do
196
194
  @valid_attributes[:valor] = 135.00
197
195
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
198
196
  @valid_attributes[:dias_vencimento] = 0
199
197
  @valid_attributes[:convenio] = 1238
200
198
  @valid_attributes[:numero_documento] = "123456"
201
199
  @valid_attributes[:codigo_servico] = true
202
- boleto_novo = BancoBrasil.new(@valid_attributes)
203
- boleto_novo.should be_instance_of(BancoBrasil)
200
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
201
+
204
202
  boleto_novo.conta_corrente_dv.should eql(0)
205
- boleto_novo.monta_codigo_43_digitos.should eql("0019376900000135001238012345640420006190018")
203
+ boleto_novo.codigo_barras_segunda_parte.should eql("1238012345640420006190018")
206
204
  boleto_novo.codigo_barras.should eql("00191376900000135001238012345640420006190018")
207
205
  boleto_novo.codigo_barras.linha_digitavel.should eql("00191.23801 12345.640424 00061.900189 1 37690000013500")
208
206
  end
209
207
 
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)
208
+ it "Não permitir gerar boleto com atributos inválido" do
209
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new
210
+ lambda { boleto_novo.codigo_barras }.should raise_error(Brcobranca::NaoImplementado)
211
+ boleto_novo.errors.count.should eql(2)
253
212
  end
254
213
 
255
- it "should calculate agencia_dv" do
256
- boleto_novo = BancoBrasil.new(@valid_attributes)
214
+ it "Calcular agencia_dv" do
215
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
257
216
  boleto_novo.agencia = "85068014982"
258
217
  boleto_novo.agencia_dv.should eql(9)
259
218
  boleto_novo.agencia = "05009401448"
@@ -280,66 +239,73 @@ describe BancoBrasil do #:nodoc:[all]
280
239
  boleto_novo.agencia_dv.should eql(6)
281
240
  end
282
241
 
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)
242
+ it "Montar nosso_numero_boleto" do
243
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
294
244
  boleto_novo.numero_documento = "4042"
295
- boleto_novo.nosso_numero_boleto.should eql("123879894042-0")
296
- boleto_novo.nosso_numero_dv.should eql(0)
245
+ boleto_novo.nosso_numero_boleto.should eql("12387989000004042-4")
246
+ boleto_novo.nosso_numero_dv.should eql(4)
297
247
  boleto_novo.numero_documento = "61900"
298
- boleto_novo.nosso_numero_boleto.should eql("1238798961900-1")
299
- boleto_novo.nosso_numero_dv.should eql(1)
248
+ boleto_novo.nosso_numero_boleto.should eql("12387989000061900-7")
249
+ boleto_novo.nosso_numero_dv.should eql(7)
300
250
  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)
251
+ boleto_novo.nosso_numero_boleto.should eql("12387989000000719-2")
252
+ boleto_novo.nosso_numero_dv.should eql(2)
312
253
  boleto_novo.numero_documento = 4042
313
- boleto_novo.nosso_numero_boleto.should eql("123879894042-0")
314
- boleto_novo.nosso_numero_dv.should eql(0)
254
+ boleto_novo.nosso_numero_boleto.should eql("12387989000004042-4")
255
+ boleto_novo.nosso_numero_dv.should eql(4)
315
256
  boleto_novo.numero_documento = 61900
316
- boleto_novo.nosso_numero_boleto.should eql("1238798961900-1")
317
- boleto_novo.nosso_numero_dv.should eql(1)
257
+ boleto_novo.nosso_numero_boleto.should eql("12387989000061900-7")
258
+ boleto_novo.nosso_numero_dv.should eql(7)
318
259
  boleto_novo.numero_documento = 719
319
- boleto_novo.nosso_numero_boleto.should eql("12387989719-3")
320
- boleto_novo.nosso_numero_dv.should eql(3)
260
+ boleto_novo.nosso_numero_boleto.should eql("12387989000000719-2")
261
+ boleto_novo.nosso_numero_dv.should eql(2)
321
262
  end
322
263
 
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")
264
+ it "Montar agencia_conta_boleto" do
265
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
266
+
267
+ boleto_novo.agencia_conta_boleto.should eql("4042-8 / 00061900-0")
327
268
  boleto_novo.agencia = "0719"
328
- boleto_novo.agencia_conta_boleto.should eql("0719-6 / 61900-0")
269
+ boleto_novo.agencia_conta_boleto.should eql("0719-6 / 00061900-0")
329
270
  boleto_novo.agencia = "0548"
330
271
  boleto_novo.conta_corrente = "1448"
331
- boleto_novo.agencia_conta_boleto.should eql("0548-7 / 1448-6")
272
+ boleto_novo.agencia_conta_boleto.should eql("0548-7 / 00001448-6")
332
273
  end
333
-
334
- it "should test outputs" do
274
+
275
+ it "Busca logotipo do banco" do
276
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new
277
+ File.exist?(boleto_novo.logotipo).should be_true
278
+ File.stat(boleto_novo.logotipo).zero?.should be_false
279
+ end
280
+
281
+ it "Gerar boleto nos formatos válidos com método to_" do
282
+ @valid_attributes[:valor] = 135.00
283
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
284
+ @valid_attributes[:dias_vencimento] = 2
285
+ @valid_attributes[:convenio] = 1238798
286
+ @valid_attributes[:numero_documento] = "7777700168"
287
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
288
+ %w| pdf jpg tif png ps |.each do |format|
289
+ file_body=boleto_novo.send("to_#{format}".to_sym)
290
+ tmp_file=Tempfile.new("foobar." << format)
291
+ tmp_file.puts file_body
292
+ tmp_file.close
293
+ File.exist?(tmp_file.path).should be_true
294
+ File.stat(tmp_file.path).zero?.should be_false
295
+ File.delete(tmp_file.path).should eql(1)
296
+ File.exist?(tmp_file.path).should be_false
297
+ end
298
+ end
299
+
300
+ it "Gerar boleto nos formatos válidos" do
335
301
  @valid_attributes[:valor] = 135.00
336
302
  @valid_attributes[:data_documento] = Date.parse("2008-02-01")
337
303
  @valid_attributes[:dias_vencimento] = 2
338
304
  @valid_attributes[:convenio] = 1238798
339
305
  @valid_attributes[:numero_documento] = "7777700168"
340
- boleto_novo = BancoBrasil.new(@valid_attributes)
306
+ boleto_novo = Brcobranca::Boleto::BancoBrasil.new(@valid_attributes)
341
307
  %w| pdf jpg tif png ps |.each do |format|
342
- file_body=boleto_novo.to(format.to_sym)
308
+ file_body=boleto_novo.to(format)
343
309
  tmp_file=Tempfile.new("foobar." << format)
344
310
  tmp_file.puts file_body
345
311
  tmp_file.close
@@ -0,0 +1,166 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
3
+
4
+ describe Brcobranca::Boleto::Caixa do #:nodoc:[all]
5
+
6
+ before 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 => 1.23,
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 => '0013877',
22
+ :convenio => '100000',
23
+ :numero_documento => '123456789123456'
24
+ }
25
+ end
26
+
27
+ it 'Criar nova instância com atributos padrões' do
28
+ boleto_novo = Brcobranca::Boleto::Caixa.new
29
+ boleto_novo.banco.should eql('104')
30
+ boleto_novo.banco_dv.should eql('0')
31
+ boleto_novo.especie_documento.should eql('DM')
32
+ boleto_novo.especie.should eql('R$')
33
+ boleto_novo.moeda.should eql('9')
34
+ boleto_novo.data_documento.should eql(Date.today)
35
+ boleto_novo.dias_vencimento.should eql(1)
36
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
37
+ boleto_novo.aceite.should eql('S')
38
+ boleto_novo.quantidade.should eql(1)
39
+ boleto_novo.valor.should eql(0.0)
40
+ boleto_novo.valor_documento.should eql(0.0)
41
+ boleto_novo.local_pagamento.should eql('QUALQUER BANCO ATÉ O VENCIMENTO')
42
+ boleto_novo.codigo_servico.should be_false
43
+ carteira = "#{Brcobranca::Boleto::Caixa::MODALIDADE_COBRANCA[:sem_registro]}" <<
44
+ "#{Brcobranca::Boleto::Caixa::EMISSAO_BOLETO[:cedente]}"
45
+ boleto_novo.carteira.should eql(carteira)
46
+ end
47
+
48
+ it "Criar nova instancia com atributos válidos" do
49
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes
50
+ @valid_attributes.keys.each do |key|
51
+ boleto_novo.send(key).should eql(@valid_attributes[key])
52
+ end
53
+ boleto_novo.should be_valid
54
+ end
55
+
56
+ it 'Gerar o dígito verificador do convênio' do
57
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes
58
+ boleto_novo.convenio_dv.should_not be_nil
59
+ boleto_novo.convenio_dv.should == '4'
60
+ end
61
+
62
+ it "Gerar o código de barras" do
63
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes
64
+ lambda { boleto_novo.codigo_barras }.should_not raise_error
65
+ boleto_novo.codigo_barras_segunda_parte.should_not be_blank
66
+ boleto_novo.codigo_barras_segunda_parte.should eql('1000004123245647891234568')
67
+ end
68
+
69
+ it "Não permitir gerar boleto com atributos inválidos" do
70
+ boleto_novo = Brcobranca::Boleto::Caixa.new
71
+ lambda { boleto_novo.codigo_barras }.should raise_error(Brcobranca::BoletoInvalido)
72
+ end
73
+
74
+ it 'Tamanho do número de convênio deve ser de 6 dígitos' do
75
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:convenio => '1234567')
76
+ boleto_novo.should_not be_valid
77
+ end
78
+
79
+ it 'Número do convênio deve ser preenchido com zeros à esquerda quando menor que 6 dígitos' do
80
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:convenio => '12345')
81
+ boleto_novo.convenio.should == '012345'
82
+ boleto_novo.should be_valid
83
+ end
84
+
85
+ it 'Tamanho da carteira deve ser de 2 dígitos' do
86
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:carteira => '145')
87
+ boleto_novo.should_not be_valid
88
+
89
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:carteira => '1')
90
+ boleto_novo.should_not be_valid
91
+ end
92
+
93
+ it 'Tamanho do número documento deve ser de 15 dígitos' do
94
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:numero_documento => '1234567891234567')
95
+ boleto_novo.should_not be_valid
96
+ end
97
+
98
+ it 'Número do documento deve ser preenchido com zeros à esquerda quando menor que 15 dígitos' do
99
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes.merge(:numero_documento => '1')
100
+ boleto_novo.numero_documento.should == '000000000000001'
101
+ boleto_novo.should be_valid
102
+ end
103
+
104
+ it "Montar nosso_numero_boleto" do
105
+ boleto_novo = Brcobranca::Boleto::Caixa.new @valid_attributes
106
+ boleto_novo.nosso_numero_boleto.should == "#{boleto_novo.carteira}" <<
107
+ "#{boleto_novo.numero_documento}" <<
108
+ "-#{boleto_novo.nosso_numero_dv}"
109
+ end
110
+
111
+ it "Montar agencia_conta_boleto" do
112
+ boleto_novo = Brcobranca::Boleto::Caixa.new(@valid_attributes)
113
+
114
+ boleto_novo.agencia_conta_boleto.should eql("1565/100000-4")
115
+
116
+ boleto_novo.convenio = "123456"
117
+ boleto_novo.agencia_conta_boleto.should eql("1565/123456-1")
118
+
119
+ boleto_novo.agencia = "2030"
120
+ boleto_novo.convenio = "654321"
121
+ boleto_novo.agencia_conta_boleto.should eql("2030/654321-9")
122
+ end
123
+
124
+ it "Busca logotipo do banco" do
125
+ boleto_novo = Brcobranca::Boleto::Caixa.new
126
+ File.exist?(boleto_novo.logotipo).should be_true
127
+ File.stat(boleto_novo.logotipo).zero?.should be_false
128
+ end
129
+
130
+ it "Gerar boleto nos formatos válidos com método to_" do
131
+ @valid_attributes[:valor] = 135.00
132
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
133
+ @valid_attributes[:dias_vencimento] = 2
134
+ @valid_attributes[:numero_documento] = "000000077700168"
135
+ boleto_novo = Brcobranca::Boleto::Caixa.new(@valid_attributes)
136
+ %w| pdf jpg tif png ps |.each do |format|
137
+ file_body=boleto_novo.send("to_#{format}".to_sym)
138
+ tmp_file=Tempfile.new("foobar." << format)
139
+ tmp_file.puts file_body
140
+ tmp_file.close
141
+ File.exist?(tmp_file.path).should be_true
142
+ File.stat(tmp_file.path).zero?.should be_false
143
+ File.delete(tmp_file.path).should eql(1)
144
+ File.exist?(tmp_file.path).should be_false
145
+ end
146
+ end
147
+
148
+ it "Gerar boleto nos formatos válidos" do
149
+ @valid_attributes[:valor] = 135.00
150
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
151
+ @valid_attributes[:dias_vencimento] = 2
152
+ @valid_attributes[:numero_documento] = "000000077700168"
153
+ boleto_novo = Brcobranca::Boleto::Caixa.new(@valid_attributes)
154
+ %w| pdf jpg tif png ps |.each do |format|
155
+ file_body=boleto_novo.to(format)
156
+ tmp_file=Tempfile.new("foobar." << format)
157
+ tmp_file.puts file_body
158
+ tmp_file.close
159
+ File.exist?(tmp_file.path).should be_true
160
+ File.stat(tmp_file.path).zero?.should be_false
161
+ File.delete(tmp_file.path).should eql(1)
162
+ File.exist?(tmp_file.path).should be_false
163
+ end
164
+ end
165
+
166
+ end