boleto_bancario 0.0.1.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/Changelog.markdown +6 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/Planning.markdown +131 -0
- data/README.markdown +208 -0
- data/Rakefile +9 -0
- data/TODO.markdown +5 -0
- data/boleto_bancario.gemspec +25 -0
- data/documentacoes_dos_boletos/Bradesco/Manual_BRADESCO.PDF +0 -0
- data/lib/boleto_bancario/calculos/digitos.rb +35 -0
- data/lib/boleto_bancario/calculos/fator_vencimento.rb +87 -0
- data/lib/boleto_bancario/calculos/fatores_de_multiplicacao.rb +67 -0
- data/lib/boleto_bancario/calculos/linha_digitavel.rb +158 -0
- data/lib/boleto_bancario/calculos/modulo10.rb +83 -0
- data/lib/boleto_bancario/calculos/modulo11.rb +54 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de2a7.rb +97 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de2a9.rb +83 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de2a9_resto_zero.rb +29 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x.rb +101 -0
- data/lib/boleto_bancario/core/banco_brasil.rb +532 -0
- data/lib/boleto_bancario/core/boleto.rb +525 -0
- data/lib/boleto_bancario/core/bradesco.rb +285 -0
- data/lib/boleto_bancario/core/itau.rb +455 -0
- data/lib/boleto_bancario/core/santander.rb +274 -0
- data/lib/boleto_bancario/version.rb +4 -0
- data/lib/boleto_bancario.rb +83 -0
- data/spec/boleto_bancario/calculos/digitos_spec.rb +19 -0
- data/spec/boleto_bancario/calculos/fator_vencimento_spec.rb +59 -0
- data/spec/boleto_bancario/calculos/fatores_de_multiplicacao_spec.rb +69 -0
- data/spec/boleto_bancario/calculos/linha_digitavel_spec.rb +57 -0
- data/spec/boleto_bancario/calculos/modulo10_spec.rb +49 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a7_spec.rb +43 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_resto_zero_spec.rb +39 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_spec.rb +61 -0
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x_spec.rb +37 -0
- data/spec/boleto_bancario/calculos/modulo11_spec.rb +19 -0
- data/spec/boleto_bancario/core/banco_brasil_spec.rb +383 -0
- data/spec/boleto_bancario/core/boleto_spec.rb +102 -0
- data/spec/boleto_bancario/core/bradesco_spec.rb +170 -0
- data/spec/boleto_bancario/core/itau_spec.rb +336 -0
- data/spec/boleto_bancario/core/santander_spec.rb +135 -0
- data/spec/shared_examples/boleto_bancario_shared_example.rb +164 -0
- data/spec/spec_helper.rb +14 -0
- metadata +221 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BoletoBancario
|
4
|
+
module Calculos
|
5
|
+
describe Modulo11FatorDe2a9RestoZero do
|
6
|
+
describe "#calculate" do
|
7
|
+
context "with a one number digit" do
|
8
|
+
subject { Modulo11FatorDe2a9RestoZero.new(6) }
|
9
|
+
|
10
|
+
it { should eq '0' }
|
11
|
+
end
|
12
|
+
|
13
|
+
context "with a two number digit" do
|
14
|
+
subject { Modulo11FatorDe2a9RestoZero.new(100) }
|
15
|
+
|
16
|
+
it { should eq '7' }
|
17
|
+
end
|
18
|
+
|
19
|
+
context "with a three number digit" do
|
20
|
+
subject { Modulo11FatorDe2a9RestoZero.new(1004) }
|
21
|
+
|
22
|
+
it { should eq '9' }
|
23
|
+
end
|
24
|
+
|
25
|
+
context "with a three number digit that returns zero" do
|
26
|
+
subject { Modulo11FatorDe2a9RestoZero.new(1088) }
|
27
|
+
|
28
|
+
it { should eq '0' }
|
29
|
+
end
|
30
|
+
|
31
|
+
context "when mod division return '10'" do
|
32
|
+
subject { Modulo11FatorDe2a9RestoZero.new(1073) }
|
33
|
+
|
34
|
+
it { should eq '1' }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BoletoBancario
|
4
|
+
module Calculos
|
5
|
+
describe Modulo11FatorDe2a9 do
|
6
|
+
context 'with Itau example' do
|
7
|
+
subject { Modulo11FatorDe2a9.new('3419166700000123451101234567880057123457000') }
|
8
|
+
|
9
|
+
it { should eq '6' }
|
10
|
+
end
|
11
|
+
|
12
|
+
context 'with Bradesco example' do
|
13
|
+
subject { Modulo11FatorDe2a9.new('9999101200000350007772130530150081897500000') }
|
14
|
+
|
15
|
+
it { should eq '1' }
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with Banco Brasil example' do
|
19
|
+
subject { Modulo11FatorDe2a9.new('0019373700000001000500940144816060680935031') }
|
20
|
+
|
21
|
+
it { should eq '3' }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with Caixa example' do
|
25
|
+
subject { Modulo11FatorDe2a9.new('1049107400000160000001100128701000901200200') }
|
26
|
+
|
27
|
+
it { should eq '1' }
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when calculations returns 11' do
|
31
|
+
subject { Modulo11FatorDe2a9.new('1049107400000160000001100128701000901200298') }
|
32
|
+
|
33
|
+
it { should eq '1' }
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when calculations returns 1' do
|
37
|
+
subject { Modulo11FatorDe2a9.new('1049107400000160000001100128701000901244437') }
|
38
|
+
|
39
|
+
it { should eq '1' }
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'with one digit' do
|
43
|
+
subject { Modulo11FatorDe2a9.new('1') }
|
44
|
+
|
45
|
+
it { should eq '9' }
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'with two digits' do
|
49
|
+
subject { Modulo11FatorDe2a9.new('91') }
|
50
|
+
|
51
|
+
it { should eq '4' }
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'with three digits' do
|
55
|
+
subject { Modulo11FatorDe2a9.new('189') }
|
56
|
+
|
57
|
+
it { should eq '9' }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BoletoBancario
|
4
|
+
module Calculos
|
5
|
+
describe Modulo11FatorDe9a2RestoX do
|
6
|
+
context "when the mod result is 10 (ten)" do
|
7
|
+
subject { Modulo11FatorDe9a2RestoX.new('3973') }
|
8
|
+
|
9
|
+
it { should eq 'X' }
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when the mod result is zero" do
|
13
|
+
subject { Modulo11FatorDe9a2RestoX.new('3995') }
|
14
|
+
|
15
|
+
it { should eq '0' }
|
16
|
+
end
|
17
|
+
|
18
|
+
context "using the 'Banco Brasil' documentation example" do
|
19
|
+
subject { Modulo11FatorDe9a2RestoX.new('01129004590') }
|
20
|
+
|
21
|
+
it { should eq '3' }
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when the result is one" do
|
25
|
+
subject { Modulo11FatorDe9a2RestoX.new('5964') }
|
26
|
+
|
27
|
+
it { should eq '1' }
|
28
|
+
end
|
29
|
+
|
30
|
+
context "with a five digit number" do
|
31
|
+
subject { Modulo11FatorDe9a2RestoX.new('10949') }
|
32
|
+
|
33
|
+
it { should eq '5' }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BoletoBancario
|
4
|
+
module Calculos
|
5
|
+
describe Modulo11 do
|
6
|
+
subject { Modulo11.new(1) }
|
7
|
+
|
8
|
+
describe "#fatores" do
|
9
|
+
before { Modulo11.any_instance.stub(:calculate).and_return(1) }
|
10
|
+
|
11
|
+
it { expect { subject.fatores }.to raise_error(NotImplementedError, "Not implemented #fatores in subclass.") }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#calculate" do
|
15
|
+
it { expect { Modulo11.new(1) }.to raise_error(NotImplementedError, "Not implemented #calculate in subclass.") }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,383 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module BoletoBancario
|
5
|
+
module Core
|
6
|
+
describe BancoBrasil do
|
7
|
+
it_should_behave_like 'boleto bancario'
|
8
|
+
|
9
|
+
describe "on validations" do
|
10
|
+
context "#agencia" do
|
11
|
+
it { should have_valid(:agencia).when('123', '1234') }
|
12
|
+
it { should_not have_valid(:agencia).when('12345', '123456', nil, '') }
|
13
|
+
end
|
14
|
+
|
15
|
+
context "#digito_agencia" do
|
16
|
+
it { should have_valid(:digito_agencia).when('1', '3', 'X') }
|
17
|
+
it { should_not have_valid(:digito_agencia).when('12', nil, '') }
|
18
|
+
end
|
19
|
+
|
20
|
+
context "#conta_corrente" do
|
21
|
+
it { should have_valid(:conta_corrente).when('12345678', '12345', '1234') }
|
22
|
+
it { should_not have_valid(:conta_corrente).when('123456789', nil, '') }
|
23
|
+
end
|
24
|
+
|
25
|
+
context "#digito_conta_corrente" do
|
26
|
+
it { should have_valid(:digito_conta_corrente).when('1') }
|
27
|
+
it { should_not have_valid(:digito_conta_corrente).when('12', nil, '') }
|
28
|
+
end
|
29
|
+
|
30
|
+
context "#codigo_cedente" do
|
31
|
+
it { should have_valid(:codigo_cedente).when('1234', '123456', '1234567', '12345678') }
|
32
|
+
it { should_not have_valid(:codigo_cedente).when('123', '1', '12', nil, '') }
|
33
|
+
end
|
34
|
+
|
35
|
+
context "when 'carteira' is 16 and 'codigo_cedente' 6 digits" do
|
36
|
+
subject { BancoBrasil.new(carteira: 16, codigo_cedente: 123456) }
|
37
|
+
|
38
|
+
it { should have_valid(:numero_documento).when('1234', '12345', '12345', '12345678911234567') }
|
39
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '123456', '123456789112345678') }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when 'carteira' is 18 and 'codigo_cedente' 6 digits" do
|
43
|
+
subject { BancoBrasil.new(carteira: 18, codigo_cedente: 123456) }
|
44
|
+
|
45
|
+
it { should have_valid(:numero_documento).when('1234', '12345', '12345678911234567') }
|
46
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '123456', '1234567', '123456789112345678') }
|
47
|
+
end
|
48
|
+
|
49
|
+
context "when 'carteira' is 12 and 'codigo_cedente' 6 digits" do
|
50
|
+
subject { BancoBrasil.new(carteira: 12, codigo_cedente: 123456) }
|
51
|
+
|
52
|
+
it { should have_valid(:numero_documento).when('12345', '1234') }
|
53
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '123456', '12345678911234567') }
|
54
|
+
end
|
55
|
+
|
56
|
+
context "when 'codigo_cedente' 4 digits" do
|
57
|
+
subject { BancoBrasil.new(codigo_cedente: 1234) }
|
58
|
+
|
59
|
+
it { should have_valid(:numero_documento).when('123', '1235', '1234567') }
|
60
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '12345678', '12345678911234567') }
|
61
|
+
end
|
62
|
+
|
63
|
+
context "when 'codigo_cedente' 7 digits" do
|
64
|
+
subject { BancoBrasil.new(codigo_cedente: 1234567) }
|
65
|
+
|
66
|
+
it { should have_valid(:numero_documento).when('1234567890', '1235', '1234567') }
|
67
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '12345678901', '12345678911234567') }
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when 'codigo_cedente' 8 digits" do
|
71
|
+
subject { BancoBrasil.new(codigo_cedente: 12345678) }
|
72
|
+
|
73
|
+
it { should have_valid(:numero_documento).when('123456789', '1235', '1234567') }
|
74
|
+
it { should_not have_valid(:numero_documento).when(nil, '', '1234567890', '12345678911234567') }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "#agencia" do
|
79
|
+
context "when have a value" do
|
80
|
+
subject { BancoBrasil.new(:agencia => '001') }
|
81
|
+
|
82
|
+
its(:agencia) { should eq '0001' }
|
83
|
+
end
|
84
|
+
|
85
|
+
context "when is nil" do
|
86
|
+
subject { BancoBrasil.new(:agencia => nil) }
|
87
|
+
|
88
|
+
its(:agencia) { should be nil }
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#conta_corrente" do
|
93
|
+
context "when have a value" do
|
94
|
+
subject { BancoBrasil.new(:conta_corrente => 913) }
|
95
|
+
|
96
|
+
its(:conta_corrente) { should eq '00000913' }
|
97
|
+
end
|
98
|
+
|
99
|
+
context "when is nil" do
|
100
|
+
subject { BancoBrasil.new(:conta_corrente => nil) }
|
101
|
+
|
102
|
+
its(:conta_corrente) { should be nil }
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "#numero_documento" do
|
107
|
+
context "when have 'codigo_cedente' 4 digits" do
|
108
|
+
subject { BancoBrasil.new(:numero_documento => 913, :codigo_cedente => 1234) }
|
109
|
+
|
110
|
+
its(:numero_documento) { should eq '0000913' }
|
111
|
+
end
|
112
|
+
|
113
|
+
context "when have 'codigo_cedente' 6 digits" do
|
114
|
+
subject { BancoBrasil.new(:numero_documento => 913, :codigo_cedente => 123456) }
|
115
|
+
|
116
|
+
its(:numero_documento) { should eq '00913' }
|
117
|
+
end
|
118
|
+
|
119
|
+
context "when have 'codigo_cedente' 7 digits" do
|
120
|
+
subject { BancoBrasil.new(:numero_documento => 913, :codigo_cedente => 1234567) }
|
121
|
+
|
122
|
+
its(:numero_documento) { should eq '0000000913' }
|
123
|
+
end
|
124
|
+
|
125
|
+
context "when have 'codigo_cedente' 8 digits" do
|
126
|
+
subject { BancoBrasil.new(:numero_documento => 913, :codigo_cedente => 12345678) }
|
127
|
+
|
128
|
+
its(:numero_documento) { should eq '000000913' }
|
129
|
+
end
|
130
|
+
|
131
|
+
context "when is nil" do
|
132
|
+
subject { BancoBrasil.new(:numero_documento => nil) }
|
133
|
+
|
134
|
+
its(:numero_documento) { should be nil }
|
135
|
+
end
|
136
|
+
|
137
|
+
context "when 'codigo_cedente' is nil" do
|
138
|
+
subject { BancoBrasil.new(:numero_documento => '12') }
|
139
|
+
|
140
|
+
its(:numero_documento) { should eq '12' }
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "#codigo_banco" do
|
145
|
+
its(:codigo_banco) { should eq '001' }
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "#digito_codigo_banco" do
|
149
|
+
its(:digito_codigo_banco) { should eq '9' }
|
150
|
+
end
|
151
|
+
|
152
|
+
describe "#agencia_codigo_cedente" do
|
153
|
+
subject { BancoBrasil.new(agencia: 9999, digito_agencia: 6, conta_corrente: 99999, digito_conta_corrente: 7) }
|
154
|
+
|
155
|
+
its(:agencia_codigo_cedente) { should eq '9999-6 / 00099999-7' }
|
156
|
+
end
|
157
|
+
|
158
|
+
describe "#nosso_numero" do
|
159
|
+
context "when 'codigo_cedente 4 digits" do
|
160
|
+
subject { BancoBrasil.new(codigo_cedente: 1234, numero_documento: 1984) }
|
161
|
+
|
162
|
+
its(:nosso_numero) { should eq '12340001984-7' }
|
163
|
+
end
|
164
|
+
|
165
|
+
context "when 'codigo_cedente 6 digits" do
|
166
|
+
subject { BancoBrasil.new(codigo_cedente: 123456, numero_documento: 1984) }
|
167
|
+
|
168
|
+
its(:nosso_numero) { should eq '12345601984-2' }
|
169
|
+
end
|
170
|
+
|
171
|
+
context "when 'codigo_cedente 7 digits" do
|
172
|
+
subject { BancoBrasil.new(codigo_cedente: 1234567, numero_documento: 1984) }
|
173
|
+
|
174
|
+
its(:nosso_numero) { should eq '12345670000001984' }
|
175
|
+
end
|
176
|
+
|
177
|
+
context "when 'codigo_cedente 8 digits" do
|
178
|
+
subject { BancoBrasil.new(codigo_cedente: 12345678, numero_documento: 1984) }
|
179
|
+
|
180
|
+
its(:nosso_numero) { should eq '12345678000001984' }
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe "#codigo_cedente_quatro_digitos?" do
|
185
|
+
context "when is true" do
|
186
|
+
subject { BancoBrasil.new(codigo_cedente: 1234) }
|
187
|
+
|
188
|
+
its(:codigo_cedente_quatro_digitos?) { should be true }
|
189
|
+
end
|
190
|
+
|
191
|
+
context "when is false" do
|
192
|
+
subject { BancoBrasil.new(codigo_cedente: 12345) }
|
193
|
+
|
194
|
+
its(:codigo_cedente_quatro_digitos?) { should be false }
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
describe "#codigo_cedente_seis_digitos?" do
|
199
|
+
context "when is true" do
|
200
|
+
subject { BancoBrasil.new(codigo_cedente: 123456) }
|
201
|
+
|
202
|
+
its(:codigo_cedente_seis_digitos?) { should be true }
|
203
|
+
end
|
204
|
+
|
205
|
+
context "when is false" do
|
206
|
+
subject { BancoBrasil.new(codigo_cedente: 1234567) }
|
207
|
+
|
208
|
+
its(:codigo_cedente_seis_digitos?) { should be false }
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
describe "#codigo_cedente_sete_digitos?" do
|
213
|
+
context "when is true" do
|
214
|
+
subject { BancoBrasil.new(codigo_cedente: 1234567) }
|
215
|
+
|
216
|
+
its(:codigo_cedente_sete_digitos?) { should be true }
|
217
|
+
end
|
218
|
+
|
219
|
+
context "when is false" do
|
220
|
+
subject { BancoBrasil.new(codigo_cedente: 12345678) }
|
221
|
+
|
222
|
+
its(:codigo_cedente_sete_digitos?) { should be false }
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
describe "#codigo_cedente_oito_digitos?" do
|
227
|
+
context "when is true" do
|
228
|
+
subject { BancoBrasil.new(codigo_cedente: 12345678) }
|
229
|
+
|
230
|
+
its(:codigo_cedente_oito_digitos?) { should be true }
|
231
|
+
end
|
232
|
+
|
233
|
+
context "when is false" do
|
234
|
+
subject { BancoBrasil.new(codigo_cedente: 123456789) }
|
235
|
+
|
236
|
+
its(:codigo_cedente_oito_digitos?) { should be false }
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
describe "#nosso_numero_dezessete_posicoes?" do
|
241
|
+
context "when 'carteira' 18, 'numero_documento' 17 digits and 'codigo_cedente' 6 digits" do
|
242
|
+
subject { BancoBrasil.new(numero_documento: 12345678911234567, carteira: 18, codigo_cedente: 123456) }
|
243
|
+
|
244
|
+
its(:nosso_numero_dezessete_posicoes?) { should be true }
|
245
|
+
end
|
246
|
+
|
247
|
+
context "when 'carteira' 16, 'numero_documento' 17 digits and 'codigo_cedente' 6 digits" do
|
248
|
+
subject { BancoBrasil.new(numero_documento: 12345678911234567, carteira: 16, codigo_cedente: 123456) }
|
249
|
+
|
250
|
+
its(:nosso_numero_dezessete_posicoes?) { should be true }
|
251
|
+
end
|
252
|
+
|
253
|
+
context "when is 'carteira' is not supported" do
|
254
|
+
subject { BancoBrasil.new(numero_documento: 123456789, carteira: 12, codigo_cedente: 123456) }
|
255
|
+
|
256
|
+
its(:nosso_numero_dezessete_posicoes?) { should be false }
|
257
|
+
end
|
258
|
+
|
259
|
+
context "when is 'codigo_cedente' is not supported" do
|
260
|
+
subject { BancoBrasil.new(numero_documento: 123456789, carteira: 16, codigo_cedente: 1234567) }
|
261
|
+
|
262
|
+
its(:nosso_numero_dezessete_posicoes?) { should be false }
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
describe "#codigo_de_barras" do
|
267
|
+
context "'codigo_cedente' with 4 digits" do
|
268
|
+
subject do
|
269
|
+
BancoBrasil.new do |banco_brasil|
|
270
|
+
banco_brasil.carteira = 18
|
271
|
+
banco_brasil.valor_documento = 2952.95
|
272
|
+
banco_brasil.numero_documento = 90801
|
273
|
+
banco_brasil.agencia = 7123
|
274
|
+
banco_brasil.digito_agencia = 6
|
275
|
+
banco_brasil.conta_corrente = 19345
|
276
|
+
banco_brasil.digito_conta_corrente = 7
|
277
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
278
|
+
banco_brasil.codigo_cedente = 4321
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
its(:codigo_de_barras) { should eq '00193556100002952954321009080171230001934518' }
|
283
|
+
its(:linha_digitavel) { should eq '00194.32103 09080.171235 00019.345180 3 55610000295295' }
|
284
|
+
end
|
285
|
+
|
286
|
+
context "'codigo_cedente' with 6 digits" do
|
287
|
+
subject do
|
288
|
+
BancoBrasil.new do |banco_brasil|
|
289
|
+
banco_brasil.carteira = 18
|
290
|
+
banco_brasil.valor_documento = 14001.99
|
291
|
+
banco_brasil.numero_documento = 12901
|
292
|
+
banco_brasil.agencia = 5030
|
293
|
+
banco_brasil.digito_agencia = 6
|
294
|
+
banco_brasil.conta_corrente = 14204195
|
295
|
+
banco_brasil.digito_conta_corrente = 7
|
296
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
297
|
+
banco_brasil.codigo_cedente = 555444
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
its(:codigo_de_barras) { should eq '00197556100014001995554441290150301420419518' }
|
302
|
+
its(:linha_digitavel) { should eq '00195.55440 41290.150303 14204.195185 7 55610001400199' }
|
303
|
+
end
|
304
|
+
|
305
|
+
context "'codigo_cedente' with 6 digits and 'nosso numero' with 17 digits" do
|
306
|
+
subject do
|
307
|
+
BancoBrasil.new do |banco_brasil|
|
308
|
+
banco_brasil.carteira = 12
|
309
|
+
banco_brasil.valor_documento = 14001.99
|
310
|
+
banco_brasil.numero_documento = 12345678911234567
|
311
|
+
banco_brasil.agencia = 5030
|
312
|
+
banco_brasil.digito_agencia = 6
|
313
|
+
banco_brasil.conta_corrente = 14204195
|
314
|
+
banco_brasil.digito_conta_corrente = 7
|
315
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
316
|
+
banco_brasil.codigo_cedente = 555444
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
its(:linha_digitavel) { should eq "" }
|
321
|
+
end
|
322
|
+
|
323
|
+
|
324
|
+
context "'codigo_cedente' with 6 digits and 'nosso numero' with 17 digits" do
|
325
|
+
subject do
|
326
|
+
BancoBrasil.new do |banco_brasil|
|
327
|
+
banco_brasil.carteira = 18
|
328
|
+
banco_brasil.valor_documento = 14001.99
|
329
|
+
banco_brasil.numero_documento = 12345678911234567
|
330
|
+
banco_brasil.agencia = 5030
|
331
|
+
banco_brasil.digito_agencia = 6
|
332
|
+
banco_brasil.conta_corrente = 14204195
|
333
|
+
banco_brasil.digito_conta_corrente = 7
|
334
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
335
|
+
banco_brasil.codigo_cedente = 555444
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
its(:codigo_de_barras) { should eq '00194556100014001995554441234567891123456721' }
|
340
|
+
its(:linha_digitavel) { should eq "00195.55440 41234.567893 11234.567219 4 55610001400199" }
|
341
|
+
end
|
342
|
+
|
343
|
+
context "'codigo_cedente' with 7 digits" do
|
344
|
+
subject do
|
345
|
+
BancoBrasil.new do |banco_brasil|
|
346
|
+
banco_brasil.carteira = 18
|
347
|
+
banco_brasil.valor_documento = 2952.95
|
348
|
+
banco_brasil.numero_documento = 87654
|
349
|
+
banco_brasil.agencia = 9999
|
350
|
+
banco_brasil.digito_agencia = 6
|
351
|
+
banco_brasil.conta_corrente = 99999
|
352
|
+
banco_brasil.digito_conta_corrente = 7
|
353
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
354
|
+
banco_brasil.codigo_cedente = 7777777
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
its(:codigo_de_barras) { should eq '00197556100002952950000007777777000008765418' }
|
359
|
+
its(:linha_digitavel) { should eq '00190.00009 07777.777009 00087.654182 7 55610000295295' }
|
360
|
+
end
|
361
|
+
|
362
|
+
context "'codigo_cedente' with 8 digits" do
|
363
|
+
subject do
|
364
|
+
BancoBrasil.new do |banco_brasil|
|
365
|
+
banco_brasil.carteira = 18
|
366
|
+
banco_brasil.valor_documento = 2952.95
|
367
|
+
banco_brasil.numero_documento = 87654
|
368
|
+
banco_brasil.agencia = 9999
|
369
|
+
banco_brasil.digito_agencia = 6
|
370
|
+
banco_brasil.conta_corrente = 99999
|
371
|
+
banco_brasil.digito_conta_corrente = 7
|
372
|
+
banco_brasil.data_vencimento = Date.parse('2012-12-28')
|
373
|
+
banco_brasil.codigo_cedente = 77777778
|
374
|
+
end
|
375
|
+
end
|
376
|
+
|
377
|
+
its(:codigo_de_barras) { should eq '00191556100002952950000007777777800008765418' }
|
378
|
+
its(:linha_digitavel) { should eq '00190.00009 07777.777801 00087.654182 1 55610000295295' }
|
379
|
+
end
|
380
|
+
end
|
381
|
+
end
|
382
|
+
end
|
383
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module BoletoBancario
|
5
|
+
module Core
|
6
|
+
describe Boleto do
|
7
|
+
describe '#initialize' do
|
8
|
+
context 'when passing a Hash' do
|
9
|
+
subject do
|
10
|
+
described_class.new(
|
11
|
+
:numero_documento => '191075',
|
12
|
+
:valor_documento => 101.99,
|
13
|
+
:data_vencimento => Date.new(2012, 10, 10),
|
14
|
+
:carteira => '175',
|
15
|
+
:agencia => '0098',
|
16
|
+
:digito_agencia => '1',
|
17
|
+
:conta_corrente => '98701',
|
18
|
+
:cedente => 'Nome da razao social',
|
19
|
+
:sacado => 'Teste',
|
20
|
+
:documento_sacado => '725.275.005-10',
|
21
|
+
:endereco_sacado => 'Rua teste, 23045'
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
its(:numero_documento) { should eq '191075' }
|
26
|
+
its(:valor_documento) { should eq 101.99 }
|
27
|
+
its(:data_vencimento) { should eq Date.new(2012, 10, 10) }
|
28
|
+
its(:carteira) { should eq '175' }
|
29
|
+
its(:agencia) { should eq '0098' }
|
30
|
+
its(:digito_agencia) { should eq '1' }
|
31
|
+
its(:conta_corrente) { should eq '98701' }
|
32
|
+
its(:codigo_moeda) { should eq '9' }
|
33
|
+
its(:cedente) { should eq 'Nome da razao social' }
|
34
|
+
its(:especie) { should eq 'R$' }
|
35
|
+
its(:especie_documento) { should eq 'DM' }
|
36
|
+
its(:data_documento) { should eq Date.today }
|
37
|
+
its(:sacado) { should eq 'Teste' }
|
38
|
+
its(:documento_sacado) { should eq '725.275.005-10' }
|
39
|
+
its(:endereco_sacado) { should eq 'Rua teste, 23045'}
|
40
|
+
its(:local_pagamento) { should eq 'PAGÁVEL EM QUALQUER BANCO ATÉ O VENCIMENTO' }
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'when passing a block' do
|
44
|
+
subject do
|
45
|
+
described_class.new do |boleto|
|
46
|
+
boleto.numero_documento = '187390'
|
47
|
+
boleto.valor_documento = 1
|
48
|
+
boleto.data_vencimento = Date.new(2012, 10, 10)
|
49
|
+
boleto.carteira = '109'
|
50
|
+
boleto.agencia = '0914'
|
51
|
+
boleto.conta_corrente = '82369'
|
52
|
+
boleto.codigo_cedente = '90182'
|
53
|
+
boleto.endereco_cedente = 'Rua Itapaiuna, 2434'
|
54
|
+
boleto.cedente = 'Nome da razao social'
|
55
|
+
boleto.documento_cedente = '62.526.713/0001-40'
|
56
|
+
boleto.sacado = 'Teste'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
its(:numero_documento) { should eq '187390' }
|
61
|
+
its(:valor_documento) { should eq 1 }
|
62
|
+
its(:carteira) { should eq '109' }
|
63
|
+
its(:agencia) { should eq '0914' }
|
64
|
+
its(:conta_corrente) { should eq '82369' }
|
65
|
+
its(:codigo_moeda) { should eq '9' }
|
66
|
+
its(:codigo_cedente) { should eq '90182' }
|
67
|
+
its(:endereco_cedente) { should eq 'Rua Itapaiuna, 2434' }
|
68
|
+
its(:cedente) { should eq 'Nome da razao social' }
|
69
|
+
its(:documento_cedente) { should eq '62.526.713/0001-40' }
|
70
|
+
its(:sacado) { should eq 'Teste' }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#carteira_formatada" do
|
75
|
+
it "should return 'carteira' as default" do
|
76
|
+
subject.stub(:carteira).and_return('Foo')
|
77
|
+
subject.carteira_formatada.should eq 'Foo'
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#codigo_banco" do
|
82
|
+
it { expect { subject.codigo_banco }.to raise_error(NotImplementedError) }
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "#digito_codigo_banco" do
|
86
|
+
it { expect { subject.digito_codigo_banco }.to raise_error(NotImplementedError) }
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "#agencia_codigo_cedente" do
|
90
|
+
it { expect { subject.agencia_codigo_cedente }.to raise_error(NotImplementedError) }
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#nosso_numero" do
|
94
|
+
it { expect { subject.nosso_numero }.to raise_error(NotImplementedError) }
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#codigo_de_barras_do_banco" do
|
98
|
+
it { expect { subject.codigo_de_barras_do_banco }.to raise_error(NotImplementedError) }
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|