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 +4 -0
  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/arquivos/logos/banespa.jpg +0 -0
  8. data/lib/brcobranca/boleto/banco_banespa.rb +85 -0
  9. data/lib/brcobranca/boleto/banco_bradesco.rb +14 -1
  10. data/lib/brcobranca/boleto/banco_brasil.rb +18 -9
  11. data/lib/brcobranca/boleto/banco_hsbc.rb +22 -8
  12. data/lib/brcobranca/boleto/banco_itau.rb +20 -10
  13. data/lib/brcobranca/boleto/banco_real.rb +16 -2
  14. data/lib/brcobranca/boleto/banco_unibanco.rb +19 -5
  15. data/lib/brcobranca/boleto/base.rb +21 -15
  16. data/lib/brcobranca/boleto/template/rghost.rb +18 -16
  17. data/lib/brcobranca/boleto/template/util.rb +2 -0
  18. data/lib/brcobranca/core_ext.rb +57 -47
  19. data/lib/brcobranca/currency.rb +7 -10
  20. data/lib/brcobranca.rb +10 -2
  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 +32 -18
  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
@@ -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