boleto_bancario 0.0.1.beta → 1.0.0
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.
- checksums.yaml +7 -0
- data/Changelog.markdown +58 -2
- data/README.markdown +679 -156
- data/lib/boleto_bancario/calculos/documento.rb +191 -0
- data/lib/boleto_bancario/calculos/fator_vencimento.rb +78 -31
- data/lib/boleto_bancario/calculos/modulo11_fator_de9a2.rb +65 -0
- data/lib/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x.rb +5 -51
- data/lib/boleto_bancario/calculos/modulo_numero_de_controle.rb +117 -0
- data/lib/boleto_bancario/core/banco_brasil.rb +30 -5
- data/lib/boleto_bancario/core/banrisul.rb +182 -0
- data/lib/boleto_bancario/core/boleto.rb +97 -35
- data/lib/boleto_bancario/core/bradesco.rb +28 -16
- data/lib/boleto_bancario/core/c6_bank.rb +155 -0
- data/lib/boleto_bancario/core/caixa.rb +233 -0
- data/lib/boleto_bancario/core/inter.rb +155 -0
- data/lib/boleto_bancario/core/itau.rb +20 -10
- data/lib/boleto_bancario/core/nubank.rb +156 -0
- data/lib/boleto_bancario/core/santander.rb +19 -22
- data/lib/boleto_bancario/core/sicoob.rb +172 -0
- data/lib/boleto_bancario/core/sicredi.rb +290 -0
- data/lib/boleto_bancario/locales/pt-BR.yml +55 -0
- data/lib/boleto_bancario/renderers/base.rb +154 -0
- data/lib/boleto_bancario/renderers/html_renderer.rb +92 -0
- data/lib/boleto_bancario/renderers/pdf_renderer.rb +130 -0
- data/lib/boleto_bancario/renderers/png_renderer.rb +66 -0
- data/lib/boleto_bancario/templates/_barcode.html.erb +3 -0
- data/lib/boleto_bancario/templates/_cedente.html.erb +14 -0
- data/lib/boleto_bancario/templates/_header.html.erb +4 -0
- data/lib/boleto_bancario/templates/_instructions.html.erb +10 -0
- data/lib/boleto_bancario/templates/_payment.html.erb +36 -0
- data/lib/boleto_bancario/templates/_sacado.html.erb +10 -0
- data/lib/boleto_bancario/templates/boleto.html.erb +22 -0
- data/lib/boleto_bancario/templates/boleto_styles.css +18 -0
- data/lib/boleto_bancario/version.rb +3 -2
- data/lib/boleto_bancario.rb +48 -19
- data/lib/generators/boleto_bancario/views_generator.rb +47 -0
- metadata +140 -106
- data/.gitignore +0 -18
- data/.rspec +0 -1
- data/.rvmrc +0 -1
- data/Gemfile +0 -3
- data/Planning.markdown +0 -131
- data/Rakefile +0 -9
- data/TODO.markdown +0 -5
- data/boleto_bancario.gemspec +0 -25
- data/documentacoes_dos_boletos/Bradesco/Manual_BRADESCO.PDF +0 -0
- data/spec/boleto_bancario/calculos/digitos_spec.rb +0 -19
- data/spec/boleto_bancario/calculos/fator_vencimento_spec.rb +0 -59
- data/spec/boleto_bancario/calculos/fatores_de_multiplicacao_spec.rb +0 -69
- data/spec/boleto_bancario/calculos/linha_digitavel_spec.rb +0 -57
- data/spec/boleto_bancario/calculos/modulo10_spec.rb +0 -49
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a7_spec.rb +0 -43
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_resto_zero_spec.rb +0 -39
- data/spec/boleto_bancario/calculos/modulo11_fator_de2a9_spec.rb +0 -61
- data/spec/boleto_bancario/calculos/modulo11_fator_de9a2_resto_x_spec.rb +0 -37
- data/spec/boleto_bancario/calculos/modulo11_spec.rb +0 -19
- data/spec/boleto_bancario/core/banco_brasil_spec.rb +0 -383
- data/spec/boleto_bancario/core/boleto_spec.rb +0 -102
- data/spec/boleto_bancario/core/bradesco_spec.rb +0 -170
- data/spec/boleto_bancario/core/itau_spec.rb +0 -336
- data/spec/boleto_bancario/core/santander_spec.rb +0 -135
- data/spec/shared_examples/boleto_bancario_shared_example.rb +0 -164
- data/spec/spec_helper.rb +0 -14
|
@@ -1,336 +0,0 @@
|
|
|
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
|
|
@@ -1,135 +0,0 @@
|
|
|
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
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
shared_examples_for 'boleto bancario' do
|
|
2
|
-
describe "on validations" do
|
|
3
|
-
before do
|
|
4
|
-
subject.should respond_to(:cedente, :endereco_cedente, :valor_documento, :numero_documento)
|
|
5
|
-
subject.should respond_to(:carteira, :sacado, :documento_sacado, :data_vencimento)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
it { should have_valid(:cedente).when('Razao Social') }
|
|
9
|
-
it { should_not have_valid(:cedente).when(nil, '') }
|
|
10
|
-
|
|
11
|
-
it { should have_valid(:endereco_cedente).when('Rua Itapaiuna') }
|
|
12
|
-
it { should_not have_valid(:endereco_cedente).when(nil, '') }
|
|
13
|
-
|
|
14
|
-
it { should have_valid(:valor_documento).when('0900') }
|
|
15
|
-
it { should_not have_valid(:valor_documento).when(nil, '') }
|
|
16
|
-
|
|
17
|
-
it { should have_valid(:numero_documento).when('09890') }
|
|
18
|
-
it { should_not have_valid(:numero_documento).when(nil, '') }
|
|
19
|
-
|
|
20
|
-
it { should have_valid(:carteira).when('10', '75') }
|
|
21
|
-
it { should_not have_valid(:carteira).when(nil, '') }
|
|
22
|
-
|
|
23
|
-
it { should have_valid(:sacado).when('Teste', 'Outro Teste') }
|
|
24
|
-
it { should_not have_valid(:sacado).when(nil, '') }
|
|
25
|
-
|
|
26
|
-
it { should have_valid(:documento_sacado).when('112.167.084-95', '613.318.746-88') }
|
|
27
|
-
it { should_not have_valid(:documento_sacado).when(nil, '') }
|
|
28
|
-
|
|
29
|
-
it { should have_valid(:data_vencimento).when(Date.today) }
|
|
30
|
-
it { should_not have_valid(:data_vencimento).when('', nil, '01/10/2012', '2012-10-2012') }
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe "#to_partial_path" do
|
|
34
|
-
it { should respond_to(:to_partial_path) }
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
describe "#persisted?" do
|
|
38
|
-
before { subject.should respond_to(:persisted?) }
|
|
39
|
-
|
|
40
|
-
its(:persisted?) { should be false }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
describe "#codigo_do_banco" do
|
|
44
|
-
before { subject.should respond_to(:codigo_banco) }
|
|
45
|
-
|
|
46
|
-
it { expect { subject.codigo_banco }.to_not raise_error(NotImplementedError) }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
describe "#digito_do_codigo_do_banco" do
|
|
50
|
-
before { subject.should respond_to(:digito_codigo_banco) }
|
|
51
|
-
|
|
52
|
-
it { expect { subject.digito_codigo_banco }.to_not raise_error(NotImplementedError) }
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
describe "#codigo_banco_formatado" do
|
|
56
|
-
before { subject.should respond_to(:codigo_banco_formatado) }
|
|
57
|
-
|
|
58
|
-
it "should format the 'codigo_banco' with digit" do
|
|
59
|
-
subject.stub(:codigo_banco).and_return('001')
|
|
60
|
-
subject.stub(:digito_codigo_banco).and_return('9')
|
|
61
|
-
subject.codigo_banco_formatado.should eq '001-9'
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
describe "#agencia_codigo_cedente" do
|
|
66
|
-
before { subject.should respond_to(:agencia_codigo_cedente) }
|
|
67
|
-
|
|
68
|
-
it { expect { subject.agencia_codigo_cedente }.to_not raise_error(NotImplementedError) }
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
describe "#nosso_numero" do
|
|
72
|
-
before { subject.should respond_to(:nosso_numero) }
|
|
73
|
-
|
|
74
|
-
it { expect { subject.nosso_numero }.to_not raise_error(NotImplementedError) }
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
describe "#carteira_formatada" do
|
|
78
|
-
it { should respond_to(:carteira, :carteira_formatada) }
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
describe "#codigo_de_barras_do_banco" do
|
|
82
|
-
before { subject.should respond_to(:codigo_de_barras_do_banco) }
|
|
83
|
-
|
|
84
|
-
it { expect { subject.codigo_de_barras_do_banco }.to_not raise_error(NotImplementedError) }
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
describe "#valor_formatado_para_codigo_de_barras" do
|
|
88
|
-
before do
|
|
89
|
-
described_class.new.should respond_to(:valor_documento)
|
|
90
|
-
described_class.new.should respond_to(:valor_formatado_para_codigo_de_barras)
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
context "when period" do
|
|
94
|
-
subject { described_class.new(:valor_documento => 123.45) }
|
|
95
|
-
|
|
96
|
-
its(:valor_formatado_para_codigo_de_barras) { should eq '0000012345' }
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
context "when comma" do
|
|
100
|
-
subject { described_class.new(:valor_documento => '1.000,45') }
|
|
101
|
-
|
|
102
|
-
its(:valor_formatado_para_codigo_de_barras) { should eq '0000100045' }
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
context "when integer" do
|
|
106
|
-
subject { described_class.new(:valor_documento => 1_999) }
|
|
107
|
-
|
|
108
|
-
its(:valor_formatado_para_codigo_de_barras) { should eq '0000001999' }
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
describe "#codigo_de_barras" do
|
|
113
|
-
before { subject.should respond_to(:codigo_de_barras) }
|
|
114
|
-
|
|
115
|
-
it "should return the barcode with DAC (barcode digit)" do
|
|
116
|
-
subject.stub(:codigo_de_barras_padrao).and_return('341916670000012345')
|
|
117
|
-
subject.stub(:codigo_de_barras_do_banco).and_return('1101234567880057123457000')
|
|
118
|
-
subject.codigo_de_barras.should eq '34196166700000123451101234567880057123457000'
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
describe "#codigo_de_barras_padrao" do
|
|
123
|
-
before { subject.should respond_to(:codigo_de_barras_padrao, :valor_documento) }
|
|
124
|
-
|
|
125
|
-
context "barcode positions" do
|
|
126
|
-
let(:boleto) { described_class.new(:valor_documento => 190.99, :data_vencimento => Date.parse('2012-10-20')) }
|
|
127
|
-
|
|
128
|
-
it "should return the first 18 positions of barcode" do
|
|
129
|
-
boleto.stub(:codigo_banco).and_return('341')
|
|
130
|
-
boleto.codigo_de_barras_padrao.should eq '341954920000019099'
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
describe "#digito_codigo_de_barras" do
|
|
136
|
-
before { subject.should respond_to(:digito_codigo_de_barras) }
|
|
137
|
-
|
|
138
|
-
context "using the Itau docs example" do
|
|
139
|
-
it "should calculate the digit using the modulo 11 factors 2 until 9" do
|
|
140
|
-
subject.stub(:codigo_de_barras_padrao).and_return('341916670000012345')
|
|
141
|
-
subject.stub(:codigo_de_barras_do_banco).and_return('1101234567880057123457000')
|
|
142
|
-
subject.digito_codigo_de_barras.should eq '6'
|
|
143
|
-
end
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
describe "#linha_digitavel" do
|
|
148
|
-
before { subject.should respond_to(:linha_digitavel) }
|
|
149
|
-
|
|
150
|
-
it "should return the digital line" do
|
|
151
|
-
subject.stub(:codigo_de_barras).and_return('39998100100000311551111122222500546666666001')
|
|
152
|
-
subject.linha_digitavel.should eq '39991.11119 22222.500542 66666.660015 8 10010000031155'
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
describe "#fator_de_vencimento" do
|
|
157
|
-
before { subject.should respond_to(:fator_de_vencimento) }
|
|
158
|
-
|
|
159
|
-
it "should calculate the expiration factor" do
|
|
160
|
-
subject.data_vencimento = Date.parse('2002-05-11')
|
|
161
|
-
subject.fator_de_vencimento.should eq '1677'
|
|
162
|
-
end
|
|
163
|
-
end
|
|
164
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'boleto_bancario'
|
|
2
|
-
require 'valid_attribute'
|
|
3
|
-
|
|
4
|
-
Dir[File.join(File.dirname(__FILE__), 'shared_examples/**/*.rb')].each do |file|
|
|
5
|
-
require(file)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
if ENV['COVERAGE']
|
|
9
|
-
require 'simplecov'
|
|
10
|
-
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
|
11
|
-
SimpleCov.start do
|
|
12
|
-
add_filter "/spec/"
|
|
13
|
-
end
|
|
14
|
-
end
|