kivanio-brcobranca 2.0.5 → 2.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/History.txt +5 -1
  2. data/Manifest.txt +24 -0
  3. data/PostInstall.txt +4 -0
  4. data/README.rdoc +4 -4
  5. data/Rakefile +9 -6
  6. data/brcobranca.gemspec +9 -9
  7. data/lib/brcobranca.rb +10 -2
  8. data/lib/brcobranca/arquivos/logos/banespa.jpg +0 -0
  9. data/lib/brcobranca/boleto/banco_banespa.rb +85 -0
  10. data/lib/brcobranca/boleto/banco_bradesco.rb +14 -1
  11. data/lib/brcobranca/boleto/banco_brasil.rb +18 -9
  12. data/lib/brcobranca/boleto/banco_hsbc.rb +22 -8
  13. data/lib/brcobranca/boleto/banco_itau.rb +20 -10
  14. data/lib/brcobranca/boleto/banco_real.rb +16 -2
  15. data/lib/brcobranca/boleto/banco_unibanco.rb +19 -5
  16. data/lib/brcobranca/boleto/base.rb +21 -15
  17. data/lib/brcobranca/boleto/template/rghost.rb +18 -16
  18. data/lib/brcobranca/boleto/template/util.rb +2 -0
  19. data/lib/brcobranca/core_ext.rb +57 -47
  20. data/lib/brcobranca/currency.rb +7 -10
  21. data/spec/arquivos/CBR64310.RET +28 -0
  22. data/spec/brcobranca/banco_banespa_spec.rb +195 -0
  23. data/spec/brcobranca/banco_bradesco_spec.rb +179 -0
  24. data/spec/brcobranca/banco_brasil_spec.rb +353 -0
  25. data/spec/brcobranca/banco_hsbc_spec.rb +216 -0
  26. data/spec/brcobranca/banco_itau_spec.rb +202 -0
  27. data/spec/brcobranca/banco_real_spec.rb +145 -0
  28. data/spec/brcobranca/banco_unibanco_spec.rb +193 -0
  29. data/spec/brcobranca/base_spec.rb +240 -0
  30. data/spec/brcobranca/core_ext_spec.rb +275 -0
  31. data/spec/brcobranca/currency_spec.rb +81 -0
  32. data/spec/brcobranca/retorno_cbr643_spec.rb +69 -0
  33. data/spec/brcobranca/rghost_spec.rb +36 -0
  34. data/spec/brcobranca/template/rghost_spec.rb +65 -0
  35. data/spec/brcobranca/template/util_spec.rb +42 -0
  36. data/spec/brcobranca_spec.rb +8 -0
  37. data/spec/rcov.opts +2 -0
  38. data/spec/spec.opts +6 -0
  39. data/spec/spec_helper.rb +10 -0
  40. data/tasks/rcov.rake +12 -0
  41. data/tasks/rspec.rake +21 -0
  42. metadata +34 -31
  43. data/test/test_banco_bradesco.rb +0 -87
  44. data/test/test_banco_brasil.rb +0 -276
  45. data/test/test_banco_hsbc.rb +0 -81
  46. data/test/test_banco_itau.rb +0 -103
  47. data/test/test_banco_real.rb +0 -112
  48. data/test/test_banco_unibanco.rb +0 -92
  49. data/test/test_base.rb +0 -162
  50. data/test/test_core_ext.rb +0 -227
  51. data/test/test_currency.rb +0 -51
  52. data/test/test_helper.rb +0 -5
  53. data/test/test_retorno_cbr643.rb +0 -66
  54. data/test/test_rghost.rb +0 -49
@@ -56,15 +56,12 @@ module Brcobranca #:nodoc:[all]
56
56
  end
57
57
  end
58
58
 
59
- class Fixnum #:nodoc:[all]
60
- include Brcobranca::Currency::Number
59
+ # TODO - porque não incluir somente na Numeric?
60
+ # [ Fixnum, Bignum, Float ].each do |klass|
61
+ [ Numeric].each do |klass|
62
+ klass.class_eval { include Brcobranca::Currency::Number }
61
63
  end
62
- class Bignum #:nodoc:[all]
63
- include Brcobranca::Currency::Number
64
- end
65
- class Float #:nodoc:[all]
66
- include Brcobranca::Currency::Number
67
- end
68
- class String #:nodoc:[all]
69
- include Brcobranca::Currency::String
64
+
65
+ [ String ].each do |klass|
66
+ klass.class_eval { include Brcobranca::Currency::String }
70
67
  end
@@ -0,0 +1,28 @@
1
+ 02RETORNO01COBRANCA 33251000289353000000INSTITUTO MATO-GROSSENSE DO AL001BANCO DO BRASIL2001090000007 000000009703754590 1622420 000001
2
+ 70000000000000000332510002893531622420 1622420000000000310000001 01900000000000 1806200109 000000000000000906400114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000009064000000000000000000000000000000000000000000000000856420000000000000 0000000000000000000000000000000000000000000000000004000002
3
+ 70000000000000000332510002893531622420 1622420000000003010000001 01900000000000 1806200109 000000000000002235239909430002201090000500000000000000000000000000000000000000000000000000000000000000000000000000022352000000000000000000000000000000000000000000000002185220000000000000 0000000000000000000000000000000000000000000000000010000003
4
+ 70000000000000000332510002893531622420 1622420000000003110000001 01900000000000 1806200109 00000000000000165330012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000016533000000000000000000000000000000000000000000000001603320000000000000 0000000000000000000000000000000000000000000000000002000004
5
+ 70000000000000000332510002893531622420 1622420000000003210000001 01900000000000 1806200109 00000000000000157740012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000015774000000000000000000000000000000000000000000000001527420000000000000 0000000000000000000000000000000000000000000000000002000005
6
+ 70000000000000000332510002893531622420 1622420000000003310000001 01900000000000 1806200109 00000000000000414440012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000041444000000000000000000000000000000000000000000000004094420000000000000 0000000000000000000000000000000000000000000000000002000006
7
+ 70000000000000000332510002893531622420 1622420000000003410000001 01900000000000 1806200109 00000000000000610280012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000061028000000000000000000000000000000000000000000000006052820000000000000 0000000000000000000000000000000000000000000000000002000007
8
+ 70000000000000000332510002893531622420 1622420000000003510000001 01900000000000 1806200109 00000000000000608040012970X002201090000500000000000000000000000000000000000000000000000000000000000000000000000000060804000000000000000000000000000000000000000000000006030420000000000000 0000000000000000000000000000000000000000000000000002000008
9
+ 70000000000000000332510002893531622420 1622420000000003610000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000009
10
+ 70000000000000000332510002893531622420 1622420000000003710000001 01900000000000 1806200109 000000000000000565474808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005654000000000000000000000000000000000000000000000000515420000000000000 0000000000000000000000000000000000000000000000000010000010
11
+ 70000000000000000332510002893531622420 1622420000000003810000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000011
12
+ 70000000000000000332510002893531622420 1622420000000003910000001 01900000000000 1806200109 000000000000000528074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005280000000000000000000000000000000000000000000000000478020000000000000 0000000000000000000000000000000000000000000000000010000012
13
+ 70000000000000000332510002893531622420 1622420000000004010000001 01900000000000 1806200109 000000000000005610074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000010000013
14
+ 70000000000000000332510002893531622420 1622420000000004110000001 01900000000000 1806200109 000000000000000528074808110002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005280000000000000000000000000000000000000000000000000478020000000000000 0000000000000000000000000000000000000000000000000010000014
15
+ 70000000000000000332510002893531622420 1622420000000004210000001 01900000000000 1806200109 000000000000005610000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000004000015
16
+ 70000000000000000332510002893531622420 1622420000000004310000001 01900000000000 1806200109 000000000000001672000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000016720000000000000000000000000000000000000000000000001622020000000000000 0000000000000000000000000000000000000000000000000004000016
17
+ 70000000000000000332510002893531622420 1622420000000004410000001 01900000000000 1806200109 000000000000000535300136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000005353000000000000000000000000000000000000000000000000485320000000000000 0000000000000000000000000000000000000000000000000004000017
18
+ 70000000000000000332510002893531622420 1622420000000004510000001 01900000000000 1806200109 000000000000005210700130376002201090000500000000000000000000000000000000000000000000000000000000000000000000000000052107000000000000000000000000000000000000000000000005160720000000000000 0000000000000000000000000000000000000000000000000008000018
19
+ 70000000000000000332510002893531622420 1622420000000004610000001 01900000000000 1806200109 000000000000006043600114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000060436000000000000000000000000000000000000000000000005993620000000000000 0000000000000000000000000000000000000000000000000002000019
20
+ 70000000000000000332510002893531622420 1622420000000004710000001 01900000000000 1806200109 000000000000005610000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000004000020
21
+ 70000000000000000332510002893531622420 1622420000000004810000001 01900000000000 1806200109 000000000000000495000136439002201090000500000000000000000000000000000000000000000000000000000000000000000000000000004950000000000000000000000000000000000000000000000000445020000000000000 0000000000000000000000000000000000000000000000000004000021
22
+ 70000000000000000332510002893531622420 1622420000000005010000001 01900000000000 1806200109 000000000000005707000114923002201090000500000000000000000000000000000000000000000000000000000000000000000000000000057070000000000000000000000000000000000000000000000005657020000000000000 0000000000000000000000000000000000000000000000000002000022
23
+ 70000000000000000332510002893531622420 1622420000000005110000001 01900000000000 1806200109 000000000000005638600106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056386000000000000000000000000000000000000000000000005588620000000000000 0000000000000000000000000000000000000000000000000002000023
24
+ 70000000000000000332510002893531622420 1622420000000005210000001 01900000000000 1806200109 000000000000005610000106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056100000000000000000000000000000000000000000000000005560020000000000000 0000000000000000000000000000000000000000000000000002000024
25
+ 70000000000000000332510002893531622420 1622420000000005310000001 01900000000000 1806200109 000000000000005856400106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000058564000000000000000000000000000000000000000000000005806420000000000000 0000000000000000000000000000000000000000000000000002000025
26
+ 70000000000000000332510002893531622420 1622420000000005410000001 01900000000000 1806200109 000000000000005704600106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000057046000000000000000000000000000000000000000000000005654620000000000000 0000000000000000000000000000000000000000000000000002000026
27
+ 70000000000000000332510002893531622420 1622420000000005510000001 01900000000000 1806200109 000000000000005673800106599002201090000500000000000000000000000000000000000000000000000000000000000000000000000000056738000000000000000000000000000000000000000000000005623820000000000000 0000000000000000000000000000000000000000000000000002000027
28
+ 9201001 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000028
@@ -0,0 +1,195 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe BancoBanespa do
4
+
5
+ before(:each) do
6
+ @valid_attributes = {
7
+ :especie_documento => "DM",
8
+ :moeda => "9",
9
+ :banco => "033",
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 => "400",
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 = BancoBanespa.new
29
+ boleto_novo.banco.should eql("033")
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("COB")
42
+ boleto_novo.should be_instance_of(BancoBanespa)
43
+ end
44
+
45
+ it "should create a new instance given valid attributes" do
46
+ boleto_novo = BancoBanespa.new(@valid_attributes)
47
+ boleto_novo.banco.should eql("033")
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("Kivanio Barbosa")
60
+ boleto_novo.documento_cedente.should eql("12345678912")
61
+ boleto_novo.sacado.should eql("Claudio Pozzebom")
62
+ boleto_novo.sacado_documento.should eql("12345678900")
63
+ boleto_novo.conta_corrente.should eql("61900")
64
+ boleto_novo.agencia.should eql("400")
65
+ boleto_novo.convenio.should eql(12387989)
66
+ boleto_novo.numero_documento.should eql("777700168")
67
+ boleto_novo.carteira.should eql("COB")
68
+ boleto_novo.should be_instance_of(BancoBanespa)
69
+ end
70
+
71
+ # TODO - should give exception
72
+ it "should return nil when attributes are nil" do
73
+ @valid_attributes[:valor] = 0
74
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
75
+ @valid_attributes[:dias_vencimento] = 0
76
+ @valid_attributes[:numero_documento] = ""
77
+ @valid_attributes[:banco] = ""
78
+ @valid_attributes[:carteira] = ""
79
+ @valid_attributes[:moeda] = ""
80
+ @valid_attributes[:convenio] = ""
81
+
82
+ boleto_novo = BancoBanespa.new(@valid_attributes)
83
+ boleto_novo.should be_instance_of(BancoBanespa)
84
+ boleto_novo.monta_codigo_43_digitos.should be_nil
85
+ boleto_novo.codigo_barras.should be_nil
86
+ end
87
+
88
+ it "should mount a valid bank invoice" do
89
+ @valid_attributes[:valor] = 103.58
90
+ @valid_attributes[:data_documento] = Date.parse("2001-08-01")
91
+ @valid_attributes[:dias_vencimento] = 0
92
+ @valid_attributes[:convenio] = 14813026478
93
+ @valid_attributes[:numero_documento] = "0004952"
94
+ @valid_attributes[:conta_corrente] = "0403005"
95
+ boleto_novo = BancoBanespa.new(@valid_attributes)
96
+ boleto_novo.should be_instance_of(BancoBanespa)
97
+ boleto_novo.conta_corrente_dv.should eql(2)
98
+ boleto_novo.monta_codigo_43_digitos.should eql("0339139400000103581481302647800049520003306")
99
+ boleto_novo.codigo_barras.should eql("03398139400000103581481302647800049520003306")
100
+ boleto_novo.codigo_barras.linha_digitavel.should eql("03391.48132 02647.800040 95200.033066 8 13940000010358")
101
+
102
+ @valid_attributes[:valor] = 2952.95
103
+ @valid_attributes[:data_documento] = Date.parse("2009-08-14")
104
+ @valid_attributes[:dias_vencimento] = 5
105
+ @valid_attributes[:convenio] = 40013012168
106
+ @valid_attributes[:numero_documento] = "1234567"
107
+ @valid_attributes[:conta_corrente] = "0403005"
108
+ boleto_novo = BancoBanespa.new(@valid_attributes)
109
+ boleto_novo.should be_instance_of(BancoBanespa)
110
+ boleto_novo.conta_corrente_dv.should eql(2)
111
+ boleto_novo.monta_codigo_43_digitos.should eql("0339433400002952954001301216812345670003361")
112
+ boleto_novo.codigo_barras.should eql("03398433400002952954001301216812345670003361")
113
+ boleto_novo.codigo_barras.linha_digitavel.should eql("03394.00137 01216.812345 56700.033618 8 43340000295295")
114
+ end
115
+
116
+ it "should mount a valid campo_livre_com_dv1_e_dv2" do
117
+ @valid_attributes[:convenio] = "40013012168"
118
+ @valid_attributes[:numero_documento] = "7469108"
119
+ boleto_novo = BancoBanespa.new(@valid_attributes)
120
+ boleto_novo.should be_instance_of(BancoBanespa)
121
+ boleto_novo.campo_livre_com_dv1_e_dv2.should eql("4001301216874691080003384")
122
+
123
+ @valid_attributes[:convenio] = "40013012168"
124
+ @valid_attributes[:numero_documento] = "1234567"
125
+ boleto_novo = BancoBanespa.new(@valid_attributes)
126
+ boleto_novo.should be_instance_of(BancoBanespa)
127
+ boleto_novo.campo_livre_com_dv1_e_dv2.should eql("4001301216812345670003361")
128
+ end
129
+
130
+ it "should mount a valid nosso_numero and nosso_numero_dv" do
131
+ @valid_attributes[:numero_documento] = "0403005"
132
+ boleto_novo = BancoBanespa.new(@valid_attributes)
133
+ boleto_novo.should be_instance_of(BancoBanespa)
134
+ boleto_novo.nosso_numero.should eql("4000403005")
135
+ boleto_novo.nosso_numero_dv.should eql(6)
136
+ boleto_novo.nosso_numero_boleto.should eql("400 0403005 6")
137
+
138
+ @valid_attributes[:numero_documento] = "403005"
139
+ boleto_novo = BancoBanespa.new(@valid_attributes)
140
+ boleto_novo.should be_instance_of(BancoBanespa)
141
+ boleto_novo.nosso_numero.should eql("4000403005")
142
+ boleto_novo.nosso_numero_dv.should eql(6)
143
+ boleto_novo.nosso_numero_boleto.should eql("400 0403005 6")
144
+
145
+ @valid_attributes[:numero_documento] = "1234567"
146
+ boleto_novo = BancoBanespa.new(@valid_attributes)
147
+ boleto_novo.should be_instance_of(BancoBanespa)
148
+ boleto_novo.nosso_numero.should eql("4001234567")
149
+ boleto_novo.nosso_numero_dv.should eql(8)
150
+ boleto_novo.nosso_numero_boleto.should eql("400 1234567 8")
151
+
152
+ @valid_attributes[:agencia] = "123"
153
+ boleto_novo = BancoBanespa.new(@valid_attributes)
154
+ boleto_novo.should be_instance_of(BancoBanespa)
155
+ boleto_novo.nosso_numero.should eql("1231234567")
156
+ boleto_novo.nosso_numero_dv.should eql(0)
157
+ boleto_novo.nosso_numero_boleto.should eql("123 1234567 0")
158
+
159
+ @valid_attributes[:agencia] = "123"
160
+ @valid_attributes[:numero_documento] = "7469108"
161
+ boleto_novo = BancoBanespa.new(@valid_attributes)
162
+ boleto_novo.should be_instance_of(BancoBanespa)
163
+ boleto_novo.nosso_numero.should eql("1237469108")
164
+ boleto_novo.nosso_numero_dv.should eql(3)
165
+ boleto_novo.nosso_numero_boleto.should eql("123 7469108 3")
166
+ end
167
+
168
+ it "should mount a valid agencia_conta_dv" do
169
+ boleto_novo = BancoBanespa.new(@valid_attributes)
170
+ boleto_novo.should be_instance_of(BancoBanespa)
171
+ boleto_novo.agencia_conta_boleto.should eql("000 12 38798 9")
172
+ end
173
+
174
+ it "should test outputs" do
175
+ @valid_attributes[:valor] = 2952.95
176
+ @valid_attributes[:data_documento] = Date.parse("2009-08-14")
177
+ @valid_attributes[:dias_vencimento] = 5
178
+ @valid_attributes[:convenio] = 40013012168
179
+ @valid_attributes[:numero_documento] = "1234567"
180
+ @valid_attributes[:conta_corrente] = "0403005"
181
+ boleto_novo = BancoBanespa.new(@valid_attributes)
182
+ boleto_novo.should be_instance_of(BancoBanespa)
183
+ %w| pdf jpg tif png ps |.each do |format|
184
+ file_body=boleto_novo.to(format.to_sym)
185
+ tmp_file=Tempfile.new("foobar." << format)
186
+ tmp_file.puts file_body
187
+ tmp_file.close
188
+ File.exist?(tmp_file.path).should be_true
189
+ File.stat(tmp_file.path).zero?.should be_false
190
+ File.delete(tmp_file.path).should eql(1)
191
+ File.exist?(tmp_file.path).should be_false
192
+ end
193
+ end
194
+
195
+ end
@@ -0,0 +1,179 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe BancoBradesco do
4
+ before(:each) do
5
+ @valid_attributes = {
6
+ :especie_documento => "DM",
7
+ :moeda => "9",
8
+ :data_documento => Date.today,
9
+ :dias_vencimento => 1,
10
+ :aceite => "S",
11
+ :quantidade => 1,
12
+ :valor => 0.0,
13
+ :local_pagamento => "QUALQUER BANCO ATÉ O VENCIMENTO",
14
+ :cedente => "Kivanio Barbosa",
15
+ :documento_cedente => "12345678912",
16
+ :sacado => "Claudio Pozzebom",
17
+ :sacado_documento => "12345678900",
18
+ :agencia => "4042",
19
+ :conta_corrente => "61900",
20
+ :convenio => 12387989,
21
+ :numero_documento => "777700168"
22
+ }
23
+ end
24
+
25
+ it "should create a new default instance" do
26
+ boleto_novo = BancoBradesco.new
27
+ boleto_novo.banco.should eql("237")
28
+ boleto_novo.especie_documento.should eql("DM")
29
+ boleto_novo.especie.should eql("R$")
30
+ boleto_novo.moeda.should eql("9")
31
+ boleto_novo.data_documento.should eql(Date.today)
32
+ boleto_novo.dias_vencimento.should eql(1)
33
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
34
+ boleto_novo.aceite.should eql("S")
35
+ boleto_novo.quantidade.should eql(1)
36
+ boleto_novo.valor.should eql(0.0)
37
+ boleto_novo.valor_documento.should eql(0.0)
38
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
39
+ boleto_novo.carteira.should eql("06")
40
+ boleto_novo.should be_instance_of(BancoBradesco)
41
+ end
42
+
43
+ it "should create a new instance given valid attributes" do
44
+ boleto_novo = BancoBradesco.new(@valid_attributes)
45
+ boleto_novo.banco.should eql("237")
46
+ boleto_novo.especie_documento.should eql("DM")
47
+ boleto_novo.especie.should eql("R$")
48
+ boleto_novo.moeda.should eql("9")
49
+ boleto_novo.data_documento.should eql(Date.today)
50
+ boleto_novo.dias_vencimento.should eql(1)
51
+ boleto_novo.data_vencimento.should eql(Date.today + 1)
52
+ boleto_novo.aceite.should eql("S")
53
+ boleto_novo.quantidade.should eql(1)
54
+ boleto_novo.valor.should eql(0.0)
55
+ boleto_novo.valor_documento.should eql(0.0)
56
+ boleto_novo.local_pagamento.should eql("QUALQUER BANCO ATÉ O VENCIMENTO")
57
+ boleto_novo.cedente.should eql("Kivanio Barbosa")
58
+ boleto_novo.documento_cedente.should eql("12345678912")
59
+ boleto_novo.sacado.should eql("Claudio Pozzebom")
60
+ boleto_novo.sacado_documento.should eql("12345678900")
61
+ boleto_novo.conta_corrente.should eql("61900")
62
+ boleto_novo.agencia.should eql("4042")
63
+ boleto_novo.convenio.should eql(12387989)
64
+ boleto_novo.numero_documento.should eql("777700168")
65
+ boleto_novo.carteira.should eql("06")
66
+ boleto_novo.should be_instance_of(BancoBradesco)
67
+ end
68
+
69
+ it "should mount codigo de barras para carteira numero 06" do
70
+ @valid_attributes[:valor] = 2952.95
71
+ @valid_attributes[:data_documento] = Date.parse("2009-04-30")
72
+ @valid_attributes[:dias_vencimento] = 0
73
+ @valid_attributes[:numero_documento] = "75896452"
74
+ @valid_attributes[:conta_corrente] = "0403005"
75
+ @valid_attributes[:agencia] = "1172"
76
+ boleto_novo = BancoBradesco.new(@valid_attributes)
77
+ boleto_novo.should be_instance_of(BancoBradesco)
78
+ boleto_novo.monta_codigo_43_digitos.should eql("2379422300002952951172060007589645204030050")
79
+ boleto_novo.codigo_barras.should eql("23795422300002952951172060007589645204030050")
80
+ boleto_novo.codigo_barras.linha_digitavel.should eql("23791.17209 60007.589645 52040.300502 5 42230000295295")
81
+ end
82
+
83
+ it "should mount codigo de barras para carteira numero 03" do
84
+ @valid_attributes[:valor] = 135.00
85
+ @valid_attributes[:dias_vencimento] = 1
86
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
87
+ @valid_attributes[:numero_documento] = "777700168"
88
+ @valid_attributes[:conta_corrente] = "61900"
89
+ @valid_attributes[:agencia] = "4042"
90
+ @valid_attributes[:carteira] = "03"
91
+ boleto_novo = BancoBradesco.new(@valid_attributes)
92
+ boleto_novo.should be_instance_of(BancoBradesco)
93
+ boleto_novo.monta_codigo_43_digitos.should eql("2379377000000135004042030077770016800619000")
94
+ boleto_novo.codigo_barras.should eql("23791377000000135004042030077770016800619000")
95
+ boleto_novo.codigo_barras.linha_digitavel.should eql("23794.04201 30077.770011 68006.190000 1 37700000013500")
96
+ end
97
+
98
+ # TODO - should give exception
99
+ it "should return nil when attributes are nil" do
100
+ @valid_attributes[:valor] = 0
101
+ @valid_attributes[:data_documento] = Date.parse("2008-02-01")
102
+ @valid_attributes[:dias_vencimento] = 0
103
+ @valid_attributes[:numero_documento] = ""
104
+ @valid_attributes[:banco] = ""
105
+ @valid_attributes[:carteira] = ""
106
+ @valid_attributes[:moeda] = ""
107
+ @valid_attributes[:convenio] = ""
108
+ @valid_attributes[:conta_corrente] = ""
109
+ @valid_attributes[:agencia] = ""
110
+ @valid_attributes[:carteira] = ""
111
+
112
+ boleto_novo = BancoBradesco.new(@valid_attributes)
113
+ boleto_novo.should be_instance_of(BancoBradesco)
114
+ boleto_novo.monta_codigo_43_digitos.should be_nil
115
+ boleto_novo.codigo_barras.should be_nil
116
+ end
117
+
118
+ it "should mount nosso_numero_boleto" do
119
+ boleto_novo = BancoBradesco.new(@valid_attributes)
120
+ boleto_novo.should be_instance_of(BancoBradesco)
121
+ boleto_novo.numero_documento = "4042"
122
+ boleto_novo.carteira = "06"
123
+ boleto_novo.nosso_numero_boleto.should eql("06/00000004042-8")
124
+ boleto_novo.nosso_numero_dv.should eql(8)
125
+ boleto_novo.numero_documento = "61900"
126
+ boleto_novo.carteira = "05"
127
+ boleto_novo.nosso_numero_boleto.should eql("05/00000061900-0")
128
+ boleto_novo.nosso_numero_dv.should eql(0)
129
+ boleto_novo.numero_documento = "0719"
130
+ boleto_novo.carteira = "07"
131
+ boleto_novo.nosso_numero_boleto.should eql("07/00000000719-6")
132
+ boleto_novo.nosso_numero_dv.should eql(6)
133
+ boleto_novo.numero_documento = 4042
134
+ boleto_novo.carteira = "06"
135
+ boleto_novo.nosso_numero_boleto.should eql("06/00000004042-8")
136
+ boleto_novo.nosso_numero_dv.should eql(8)
137
+ boleto_novo.numero_documento = 61900
138
+ boleto_novo.carteira = "05"
139
+ boleto_novo.nosso_numero_boleto.should eql("05/00000061900-0")
140
+ boleto_novo.nosso_numero_dv.should eql(0)
141
+ boleto_novo.numero_documento = 719
142
+ boleto_novo.carteira = "07"
143
+ boleto_novo.nosso_numero_boleto.should eql("07/00000000719-6")
144
+ boleto_novo.nosso_numero_dv.should eql(6)
145
+ end
146
+
147
+ it "should mount agencia_conta_boleto" do
148
+ boleto_novo = BancoBradesco.new(@valid_attributes)
149
+ boleto_novo.should be_instance_of(BancoBradesco)
150
+ boleto_novo.agencia_conta_boleto.should eql("4042-8 / 61900-0")
151
+ boleto_novo.agencia = "0719"
152
+ boleto_novo.agencia_conta_boleto.should eql("0719-6 / 61900-0")
153
+ boleto_novo.agencia = "0548"
154
+ boleto_novo.conta_corrente = "1448"
155
+ boleto_novo.agencia_conta_boleto.should eql("0548-7 / 1448-6")
156
+ end
157
+
158
+ it "should test outputs" do
159
+ @valid_attributes[:valor] = 2952.95
160
+ @valid_attributes[:data_documento] = Date.parse("2009-04-30")
161
+ @valid_attributes[:dias_vencimento] = 0
162
+ @valid_attributes[:numero_documento] = "75896452"
163
+ @valid_attributes[:conta_corrente] = "0403005"
164
+ @valid_attributes[:agencia] = "1172"
165
+ boleto_novo = BancoBradesco.new(@valid_attributes)
166
+ boleto_novo.should be_instance_of(BancoBradesco)
167
+ %w| pdf jpg tif png ps |.each do |format|
168
+ file_body=boleto_novo.to(format.to_sym)
169
+ tmp_file=Tempfile.new("foobar." << format)
170
+ tmp_file.puts file_body
171
+ tmp_file.close
172
+ File.exist?(tmp_file.path).should be_true
173
+ File.stat(tmp_file.path).zero?.should be_false
174
+ File.delete(tmp_file.path).should eql(1)
175
+ File.exist?(tmp_file.path).should be_false
176
+ end
177
+ end
178
+
179
+ end
@@ -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