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,170 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module BoletoBancario
|
5
|
+
module Core
|
6
|
+
describe Bradesco do
|
7
|
+
it_should_behave_like 'boleto bancario'
|
8
|
+
|
9
|
+
describe "on validations" do
|
10
|
+
it { should have_valid(:agencia).when('1', '123', '1234') }
|
11
|
+
it { should_not have_valid(:agencia).when('12345', '123456', '1234567', nil, '') }
|
12
|
+
|
13
|
+
it { should have_valid(:digito_agencia).when('1', 'X', '4') }
|
14
|
+
it { should_not have_valid(:digito_agencia).when(nil, '', '12', '123') }
|
15
|
+
|
16
|
+
it { should have_valid(:conta_corrente).when('1', '123', '1234') }
|
17
|
+
it { should_not have_valid(:conta_corrente).when('12345678', '123456789', nil, '') }
|
18
|
+
|
19
|
+
it { should have_valid(:digito_conta_corrente).when('1', '4', 'X') }
|
20
|
+
it { should_not have_valid(:digito_conta_corrente).when(nil, '', '12', '123') }
|
21
|
+
|
22
|
+
it { should have_valid(:carteira).when(6, '6', '13') }
|
23
|
+
it { should_not have_valid(:carteira).when('', nil, '102', '123') }
|
24
|
+
|
25
|
+
it { should have_valid(:numero_documento).when(12345678911, '12345678911', '13') }
|
26
|
+
it { should_not have_valid(:numero_documento).when('', nil, 123456789112, 1234567891113) }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#agencia" do
|
30
|
+
context "when have a value" do
|
31
|
+
subject { Bradesco.new(:agencia => 2) }
|
32
|
+
|
33
|
+
its(:agencia) { should eq '0002' }
|
34
|
+
end
|
35
|
+
|
36
|
+
context "when is nil" do
|
37
|
+
its(:agencia) { should be nil }
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#conta_corrente" do
|
42
|
+
context "when have a value" do
|
43
|
+
subject { Bradesco.new(:conta_corrente => 1) }
|
44
|
+
|
45
|
+
its(:conta_corrente) { should eq '0000001' }
|
46
|
+
end
|
47
|
+
|
48
|
+
context "when is nil" do
|
49
|
+
its(:conta_corrente) { should be nil }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#numero_documento" do
|
54
|
+
context "when have a value" do
|
55
|
+
subject { Bradesco.new(:numero_documento => 1234) }
|
56
|
+
|
57
|
+
its(:numero_documento) { should eq '00000001234' }
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when is nil" do
|
61
|
+
its(:numero_documento) { should be nil }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "#carteira" do
|
66
|
+
context "when have a value" do
|
67
|
+
subject { Bradesco.new(:carteira => 3) }
|
68
|
+
|
69
|
+
its(:carteira) { should eq '03' }
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when is nil" do
|
73
|
+
its(:carteira) { should be nil }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#carteira_formatada" do
|
78
|
+
context "when carteira is '21'" do
|
79
|
+
subject { Bradesco.new(:carteira => 21) }
|
80
|
+
|
81
|
+
its(:carteira_formatada) { should eq '21 – Cobrança Interna Com Registro' }
|
82
|
+
end
|
83
|
+
|
84
|
+
context "when carteira is '22'" do
|
85
|
+
subject { Bradesco.new(:carteira => 22) }
|
86
|
+
|
87
|
+
its(:carteira_formatada) { should eq '22 – Cobrança Interna sem registro' }
|
88
|
+
end
|
89
|
+
|
90
|
+
context "when carteira is '03'" do
|
91
|
+
subject { Bradesco.new(:carteira => 3) }
|
92
|
+
|
93
|
+
its(:carteira_formatada) { should eq '03' }
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#codigo_banco" do
|
98
|
+
its(:codigo_banco) { should eq '237' }
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "#digito_codigo_banco" do
|
102
|
+
its(:digito_codigo_banco) { should eq '2' }
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "#agencia_codigo_cedente" do
|
106
|
+
subject { Bradesco.new(agencia: '1172', digito_agencia: '0', conta_corrente: '0403005', digito_conta_corrente: '2') }
|
107
|
+
|
108
|
+
its(:agencia_codigo_cedente) { should eq '1172-0 / 0403005-2'}
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#nosso_numero" do
|
112
|
+
context "documentation example" do
|
113
|
+
subject { Bradesco.new(:carteira => '19', :numero_documento => '00000000002') }
|
114
|
+
|
115
|
+
its(:nosso_numero) { should eq '19/00000000002-8' }
|
116
|
+
end
|
117
|
+
|
118
|
+
context "more examples from documentation" do
|
119
|
+
subject { Bradesco.new(:carteira => '19', :numero_documento => '00000000001') }
|
120
|
+
|
121
|
+
its(:nosso_numero) { should eq '19/00000000001-P' }
|
122
|
+
end
|
123
|
+
|
124
|
+
context "more examples" do
|
125
|
+
subject { Bradesco.new(:carteira => '06', :numero_documento => '00075896452') }
|
126
|
+
|
127
|
+
its(:nosso_numero) { should eq '06/00075896452-5' }
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "#codigo_de_barras" do
|
132
|
+
context "more examples" do
|
133
|
+
subject do
|
134
|
+
Bradesco.new do |boleto|
|
135
|
+
boleto.carteira = 6
|
136
|
+
boleto.numero_documento = 75896452
|
137
|
+
boleto.valor_documento = 2952.95
|
138
|
+
boleto.data_vencimento = Date.parse('2012-12-28')
|
139
|
+
boleto.agencia = 1172
|
140
|
+
boleto.digito_agencia = 0
|
141
|
+
boleto.conta_corrente = 403005
|
142
|
+
boleto.digito_conta_corrente = 2
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
its(:codigo_de_barras) { should eq '23796556100002952951172060007589645204030050' }
|
147
|
+
its(:linha_digitavel) { should eq '23791.17209 60007.589645 52040.300502 6 55610000295295' }
|
148
|
+
end
|
149
|
+
|
150
|
+
context "when carteira '09'" do
|
151
|
+
subject do
|
152
|
+
Bradesco.new do |boleto|
|
153
|
+
boleto.carteira = 9
|
154
|
+
boleto.numero_documento = 175896451
|
155
|
+
boleto.valor_documento = 2959.78
|
156
|
+
boleto.data_vencimento = Date.parse('2012-12-28')
|
157
|
+
boleto.agencia = 1172
|
158
|
+
boleto.digito_agencia = 0
|
159
|
+
boleto.conta_corrente = 403005
|
160
|
+
boleto.digito_conta_corrente = 2
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
its(:codigo_de_barras) { should eq '23791556100002959781172090017589645104030050' }
|
165
|
+
its(:linha_digitavel) { should eq '23791.17209 90017.589640 51040.300504 1 55610000295978' }
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
@@ -0,0 +1,336 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BoletoBancario
|
4
|
+
module Core
|
5
|
+
describe Itau do
|
6
|
+
it_should_behave_like 'boleto bancario'
|
7
|
+
|
8
|
+
describe "on validations" do
|
9
|
+
describe "#carteira" do
|
10
|
+
it { should have_valid(:carteira).when('109', '107', '175', 109, 198) }
|
11
|
+
it { should_not have_valid(:carteira).when('10912', '10790', '17523', '1451') }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#numero_documento" do
|
15
|
+
it { should have_valid(:numero_documento).when('12345', '123456', '12345678') }
|
16
|
+
it { should_not have_valid(:numero_documento).when('123456789', nil, '', '12345678910') }
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#conta_corrente" do
|
20
|
+
it { should have_valid(:conta_corrente).when('1', '1234', '12345') }
|
21
|
+
it { should_not have_valid(:conta_corrente).when('123456', nil, '1234567', '') }
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#agencia" do
|
25
|
+
it { should have_valid(:agencia).when('1', '1234', '1234') }
|
26
|
+
it { should_not have_valid(:agencia).when('12345', nil, '123456', '') }
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#codigo_cedente" do
|
30
|
+
%w(107 122 142 143 196 198).each do |carteira_especial|
|
31
|
+
context "when 'carteira' is special: #{carteira_especial}" do
|
32
|
+
subject { Itau.new(carteira: carteira_especial) }
|
33
|
+
|
34
|
+
it { should have_valid(:codigo_cedente).when('1', '1234', '12345') }
|
35
|
+
it { should_not have_valid(:codigo_cedente).when('123456', nil, '1234567', '') }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
%w(109 126 131 146 150 168 174 175).each do |carteira|
|
40
|
+
context "when 'carteira' isn't special: #{carteira}" do
|
41
|
+
subject { Itau.new(carteira: carteira) }
|
42
|
+
|
43
|
+
# Código do Cedente não precisa ser validado quando possui essas carteiras.
|
44
|
+
#
|
45
|
+
it { should have_valid(:codigo_cedente).when('1', '1234', '12345', nil, '') }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#seu_numero" do
|
50
|
+
%w(107 122 142 143 196 198).each do |carteira_especial|
|
51
|
+
context "when 'carteira' is special: #{carteira_especial}" do
|
52
|
+
subject { Itau.new(carteira: carteira_especial) }
|
53
|
+
|
54
|
+
it { should have_valid(:seu_numero).when('1', '1234', '1234567') }
|
55
|
+
it { should_not have_valid(:seu_numero).when('12345678', nil, '123456789', '') }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
%w(109 126 131 146 150 168 174 175).each do |carteira|
|
60
|
+
context "when 'carteira' isn't special: #{carteira}" do
|
61
|
+
subject { Itau.new(carteira: carteira) }
|
62
|
+
|
63
|
+
# Seu número não precisa ser validado quando possui essas carteiras.
|
64
|
+
#
|
65
|
+
it { should have_valid(:seu_numero).when('1', '1234', '12345', nil, '') }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#digito_conta_corrente" do
|
72
|
+
it { should have_valid(:digito_conta_corrente).when('1', '2', '3') }
|
73
|
+
it { should_not have_valid(:digito_conta_corrente).when('12', nil, '123', '') }
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "#numero_documento" do
|
78
|
+
subject { Itau.new(:numero_documento => '123') }
|
79
|
+
|
80
|
+
its(:numero_documento) { should eq '00000123' }
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "#seu_numero" do
|
84
|
+
context "when have a value" do
|
85
|
+
subject { Itau.new(:seu_numero => '11804') }
|
86
|
+
|
87
|
+
its(:seu_numero) { should eq '0011804' }
|
88
|
+
end
|
89
|
+
|
90
|
+
context "when is nil" do
|
91
|
+
subject { Itau.new(:seu_numero => nil) }
|
92
|
+
|
93
|
+
its(:seu_numero) { should be nil }
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#agencia" do
|
98
|
+
context "when have a value" do
|
99
|
+
subject { Itau.new(:agencia => '001') }
|
100
|
+
|
101
|
+
its(:agencia) { should eq '0001' }
|
102
|
+
end
|
103
|
+
|
104
|
+
context "when is nil" do
|
105
|
+
subject { Itau.new(:agencia => nil) }
|
106
|
+
|
107
|
+
its(:agencia) { should be nil }
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe "#conta_corrente" do
|
112
|
+
context "when have a value" do
|
113
|
+
subject { Itau.new(:conta_corrente => 9013) }
|
114
|
+
|
115
|
+
its(:conta_corrente) { should eq '09013' }
|
116
|
+
end
|
117
|
+
|
118
|
+
context "when is nil" do
|
119
|
+
subject { Itau.new(:conta_corrente => nil) }
|
120
|
+
|
121
|
+
its(:conta_corrente) { should be nil }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "#codigo_cedente" do
|
126
|
+
context "when have a value" do
|
127
|
+
subject { Itau.new(:codigo_cedente => 1987) }
|
128
|
+
|
129
|
+
its(:codigo_cedente) { should eq '01987' }
|
130
|
+
end
|
131
|
+
|
132
|
+
context "when is nil" do
|
133
|
+
subject { Itau.new(:codigo_cedente => nil) }
|
134
|
+
|
135
|
+
its(:codigo_cedente) { should be nil }
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
describe "#codigo_banco" do
|
140
|
+
its(:codigo_banco) { should eq '341' }
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "#digito_codigo_banco" do
|
144
|
+
its(:digito_codigo_banco) { should eq '7' }
|
145
|
+
end
|
146
|
+
|
147
|
+
describe "#agencia_codigo_cedente" do
|
148
|
+
subject { Itau.new(:agencia => '0057', :conta_corrente => '12345', :digito_conta_corrente => '7') }
|
149
|
+
|
150
|
+
it "should return the agency and bank account with digit" do
|
151
|
+
subject.agencia_codigo_cedente.should eq '0057 / 12345-7'
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "#nosso_numero" do
|
156
|
+
context "when 'carteira' is 126" do
|
157
|
+
subject { Itau.new(:carteira => '126', :numero_documento => '12345') }
|
158
|
+
|
159
|
+
it "should calculate the 'nosso numero' with carteira and document number" do
|
160
|
+
subject.nosso_numero.should eq '126/00012345-8'
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context "when 'carteira' is 131" do
|
165
|
+
subject { Itau.new(:carteira => '131', :numero_documento => '6789') }
|
166
|
+
|
167
|
+
it "should calculate the 'nosso numero' with carteira and document number" do
|
168
|
+
subject.nosso_numero.should eq '131/00006789-5'
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context "when 'carteira' is 146" do
|
173
|
+
subject { Itau.new(:carteira => '146', :numero_documento => '147890') }
|
174
|
+
|
175
|
+
it "should calculate the 'nosso numero' with carteira and document number" do
|
176
|
+
subject.nosso_numero.should eq '146/00147890-9'
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
context "when 'carteira' is 150" do
|
181
|
+
subject { Itau.new(:carteira => '150', :numero_documento => '18765476') }
|
182
|
+
|
183
|
+
it "should calculate the 'nosso numero' with carteira and document number" do
|
184
|
+
subject.nosso_numero.should eq '150/18765476-2'
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
context "when 'carteira' is 168" do
|
189
|
+
subject { Itau.new(:carteira => '168', :numero_documento => '12784698') }
|
190
|
+
|
191
|
+
it "should calculate the 'nosso numero' with carteira and document number" do
|
192
|
+
subject.nosso_numero.should eq '168/12784698-3'
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when 'carteira' is 110" do
|
197
|
+
subject do
|
198
|
+
Itau.new(
|
199
|
+
:agencia => '0057',
|
200
|
+
:conta_corrente => '12345',
|
201
|
+
:carteira => '110',
|
202
|
+
:numero_documento => '12345678'
|
203
|
+
)
|
204
|
+
end
|
205
|
+
|
206
|
+
it "should format the 'nosso numero' with agencia, conta_corrente, carteira and document number" do
|
207
|
+
subject.nosso_numero.should eq '110/12345678-8'
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context "when 'carteira' is 198" do
|
212
|
+
subject do
|
213
|
+
Itau.new(
|
214
|
+
:agencia => '0057',
|
215
|
+
:conta_corrente => '72192',
|
216
|
+
:carteira => '198',
|
217
|
+
:numero_documento => '98712345'
|
218
|
+
)
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should follow the Itau documentation" do
|
222
|
+
subject.nosso_numero.should eq '198/98712345-1'
|
223
|
+
end
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
describe "#carteira_especial?" do
|
228
|
+
%w(107 122 142 143 196 198).each do |carteira_especial|
|
229
|
+
context "when 'carteira' is special: #{carteira_especial}" do
|
230
|
+
subject { Itau.new(carteira: carteira_especial) }
|
231
|
+
|
232
|
+
its(:carteira_especial?) { should be true }
|
233
|
+
end
|
234
|
+
|
235
|
+
context "when 'carteira' is special: #{carteira_especial} as numeric" do
|
236
|
+
subject { Itau.new(carteira: carteira_especial.to_i) }
|
237
|
+
|
238
|
+
its(:carteira_especial?) { should be true }
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
%w(109 126 131 146 150 168 174 175).each do |carteira|
|
243
|
+
context "when 'carteira' isn't special: #{carteira}" do
|
244
|
+
subject { Itau.new(carteira: carteira) }
|
245
|
+
|
246
|
+
its(:carteira_especial?) { should be false }
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
describe "#codigo_de_barras_do_banco" do
|
252
|
+
context "when default carteira" do
|
253
|
+
subject do
|
254
|
+
Itau.new do |boleto|
|
255
|
+
boleto.carteira = '109'
|
256
|
+
boleto.numero_documento = '12345678'
|
257
|
+
boleto.agencia = '0057'
|
258
|
+
boleto.conta_corrente = '12345'
|
259
|
+
boleto.digito_conta_corrente = '7'
|
260
|
+
end
|
261
|
+
end
|
262
|
+
|
263
|
+
its(:codigo_de_barras_do_banco) { should eq '1091234567800057123457000' }
|
264
|
+
end
|
265
|
+
|
266
|
+
context "when special 'carteira'" do
|
267
|
+
subject do
|
268
|
+
Itau.new(
|
269
|
+
:codigo_cedente => '94786',
|
270
|
+
:carteira => carteira,
|
271
|
+
:numero_documento => '12345678',
|
272
|
+
:seu_numero => '1108954'
|
273
|
+
)
|
274
|
+
end
|
275
|
+
|
276
|
+
context "when 'carteira' is 107" do
|
277
|
+
let(:carteira) { '107' }
|
278
|
+
|
279
|
+
its(:codigo_de_barras_do_banco) { should eq '1071234567811089549478620' }
|
280
|
+
end
|
281
|
+
|
282
|
+
context "when 'carteira' is 122" do
|
283
|
+
let(:carteira) { '122' }
|
284
|
+
|
285
|
+
its(:codigo_de_barras_do_banco) { should eq '1221234567811089549478610' }
|
286
|
+
end
|
287
|
+
|
288
|
+
context "when 'carteira' is 142" do
|
289
|
+
let(:carteira) { '142' }
|
290
|
+
|
291
|
+
its(:codigo_de_barras_do_banco) { should eq '1421234567811089549478690' }
|
292
|
+
end
|
293
|
+
|
294
|
+
context "when 'carteira' is 143" do
|
295
|
+
let(:carteira) { '143' }
|
296
|
+
|
297
|
+
its(:codigo_de_barras_do_banco) { should eq '1431234567811089549478670' }
|
298
|
+
end
|
299
|
+
|
300
|
+
context "when 'carteira' is 196" do
|
301
|
+
let(:carteira) { '196' }
|
302
|
+
|
303
|
+
its(:codigo_de_barras_do_banco) { should eq '1961234567811089549478650' }
|
304
|
+
end
|
305
|
+
|
306
|
+
context "when 'carteira' is 198" do
|
307
|
+
let(:carteira) { '198' }
|
308
|
+
|
309
|
+
its(:codigo_de_barras_do_banco) { should eq '1981234567811089549478610' }
|
310
|
+
end
|
311
|
+
end
|
312
|
+
end
|
313
|
+
|
314
|
+
describe "#linha_digitavel" do
|
315
|
+
subject do
|
316
|
+
Itau.new do |boleto|
|
317
|
+
boleto.carteira = '175'
|
318
|
+
boleto.agencia = 1565
|
319
|
+
boleto.conta_corrente = 13877
|
320
|
+
boleto.digito_conta_corrente = 1
|
321
|
+
boleto.numero_documento = 12345678
|
322
|
+
boleto.data_vencimento = Date.parse('2012-12-21')
|
323
|
+
boleto.valor_documento = 2952.95
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
# Grep this example from boleto php demo page.
|
328
|
+
its(:linha_digitavel) { should eq '34191.75124 34567.861561 51387.710000 1 55540000295295' }
|
329
|
+
end
|
330
|
+
|
331
|
+
describe "#to_partial_path" do
|
332
|
+
its(:to_partial_path) { should eq 'boleto_bancario/itau' }
|
333
|
+
end
|
334
|
+
end
|
335
|
+
end
|
336
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
module BoletoBancario
|
5
|
+
module Core
|
6
|
+
describe Santander do
|
7
|
+
it_should_behave_like 'boleto bancario'
|
8
|
+
|
9
|
+
describe "on validations" do
|
10
|
+
it { should have_valid(:agencia).when('1', '12', '123', '1234') }
|
11
|
+
it { should_not have_valid(:agencia).when('12345', '123456', nil, '') }
|
12
|
+
|
13
|
+
it { should have_valid(:codigo_cedente).when('1', '12', '123', '1234567') }
|
14
|
+
it { should_not have_valid(:codigo_cedente).when('12345678', '123456789', nil, '') }
|
15
|
+
|
16
|
+
it { should have_valid(:numero_documento).when('1', '12', '123', '123456789112') }
|
17
|
+
it { should_not have_valid(:numero_documento).when('1234567891123', nil, '') }
|
18
|
+
|
19
|
+
it { should have_valid(:carteira).when('1', '12', '123') }
|
20
|
+
it { should_not have_valid(:carteira).when('1234', nil, '') }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "#agencia" do
|
24
|
+
context "when have a value" do
|
25
|
+
subject { Santander.new(agencia: '2') }
|
26
|
+
|
27
|
+
its(:agencia) { should eq '0002' }
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when is nil" do
|
31
|
+
its(:agencia) { should be nil }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#codigo_cedente" do
|
36
|
+
context "when have a value" do
|
37
|
+
subject { Santander.new(codigo_cedente: '1') }
|
38
|
+
|
39
|
+
its(:codigo_cedente) { should eq '0000001' }
|
40
|
+
end
|
41
|
+
|
42
|
+
context "when is nil" do
|
43
|
+
its(:codigo_cedente) { should be nil }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe "#numero_documento" do
|
48
|
+
context "when have a value" do
|
49
|
+
subject { Santander.new(numero_documento: '1') }
|
50
|
+
|
51
|
+
its(:numero_documento) { should eq '000000000001' }
|
52
|
+
end
|
53
|
+
|
54
|
+
context "when is nil" do
|
55
|
+
its(:numero_documento) { should be nil }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#carteira" do
|
60
|
+
context "when have a value" do
|
61
|
+
subject { Santander.new(carteira: '1') }
|
62
|
+
|
63
|
+
its(:carteira) { should eq '001' }
|
64
|
+
end
|
65
|
+
|
66
|
+
context "when is nil" do
|
67
|
+
its(:carteira) { should be nil }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#carteira_formatada" do
|
72
|
+
context "when is registered" do
|
73
|
+
subject { Santander.new(:carteira => 101) }
|
74
|
+
|
75
|
+
its(:carteira_formatada) { should eq 'COBRANÇA SIMPLES ECR' }
|
76
|
+
end
|
77
|
+
|
78
|
+
context "when isn't registered" do
|
79
|
+
subject { Santander.new(:carteira => 102) }
|
80
|
+
|
81
|
+
its(:carteira_formatada) { should eq 'COBRANÇA SIMPLES CSR' }
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "#codigo_banco" do
|
86
|
+
its(:codigo_banco) { should eq '033' }
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "#digito_codigo_banco" do
|
90
|
+
its(:digito_codigo_banco) { should eq '7' }
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#agencia_codigo_cedente" do
|
94
|
+
subject { Santander.new(agencia: '0235', digito_agencia: '6', codigo_cedente: '1625462') }
|
95
|
+
|
96
|
+
its(:agencia_codigo_cedente) { should eq '0235-6 / 1625462' }
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "#nosso_numero" do
|
100
|
+
subject { Santander.new(numero_documento: '566612457800') }
|
101
|
+
|
102
|
+
its(:nosso_numero) { should eq '566612457800-2' }
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "#codigo_de_barras" do
|
106
|
+
subject do
|
107
|
+
Santander.new do |santander|
|
108
|
+
santander.codigo_cedente = '0707077'
|
109
|
+
santander.numero_documento = '000001234567'
|
110
|
+
santander.valor_documento = 2952.95
|
111
|
+
santander.carteira = '102'
|
112
|
+
santander.agencia = 1333
|
113
|
+
santander.digito_agencia = 1
|
114
|
+
santander.data_vencimento = Date.parse('2012-12-28')
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
its(:codigo_de_barras) { should eq '03391556100002952959070707700000123456790102' }
|
119
|
+
its(:linha_digitavel) { should eq '03399.07073 07700.000123 34567.901029 1 55610000295295' }
|
120
|
+
end
|
121
|
+
|
122
|
+
describe "#iof" do
|
123
|
+
context "default iof" do
|
124
|
+
its(:iof) { should eq '0' }
|
125
|
+
end
|
126
|
+
|
127
|
+
context "setting iof" do
|
128
|
+
subject { Santander.new(iof: 7) }
|
129
|
+
|
130
|
+
its(:iof) { should eq '7' }
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|