br_boleto 2.0.1 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +2 -2
- data/br_boleto.gemspec +2 -3
- data/lib/br_boleto/association/have_conta.rb +27 -25
- data/lib/br_boleto/association/have_pagador.rb +2 -0
- data/lib/br_boleto/boleto/base.rb +0 -4
- data/lib/br_boleto/boleto/bradesco.rb +80 -0
- data/lib/br_boleto/boleto/caixa.rb +10 -12
- data/lib/br_boleto/boleto/cecred.rb +76 -0
- data/lib/br_boleto/boleto/itau.rb +114 -0
- data/lib/br_boleto/boleto/sicredi.rb +101 -0
- data/lib/br_boleto/boleto/unicred.rb +21 -0
- data/lib/br_boleto/conta/base.rb +28 -3
- data/lib/br_boleto/conta/bradesco.rb +120 -0
- data/lib/br_boleto/conta/caixa.rb +22 -12
- data/lib/br_boleto/conta/cecred.rb +67 -0
- data/lib/br_boleto/conta/itau.rb +199 -0
- data/lib/br_boleto/conta/sicoob.rb +40 -11
- data/lib/br_boleto/conta/sicredi.rb +171 -0
- data/lib/br_boleto/conta/unicred.rb +38 -0
- data/lib/br_boleto/helper/default_codes.rb +535 -26
- data/lib/br_boleto/pagador.rb +4 -0
- data/lib/br_boleto/remessa/base.rb +2 -0
- data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
- data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
- data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
- data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
- data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
- data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
- data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
- data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
- data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
- data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
- data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
- data/lib/br_boleto/remessa/pagamento.rb +93 -43
- data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
- data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
- data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
- data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
- data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
- data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
- data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
- data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
- data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
- data/lib/br_boleto/retorno/pagamento.rb +18 -4
- data/lib/br_boleto/version.rb +2 -2
- data/lib/br_boleto.rb +28 -0
- data/lib/config/locales/br-boleto-en.yml +1 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
- data/test/br_boleto/association/have_pagador_test.rb +24 -0
- data/test/br_boleto/boleto/bradesco_test.rb +125 -0
- data/test/br_boleto/boleto/caixa_test.rb +18 -18
- data/test/br_boleto/boleto/cecred_test.rb +115 -0
- data/test/br_boleto/boleto/itau_test.rb +160 -0
- data/test/br_boleto/boleto/sicredi_test.rb +136 -0
- data/test/br_boleto/boleto/unicred_test.rb +128 -0
- data/test/br_boleto/conta/base_test.rb +298 -3
- data/test/br_boleto/conta/bradesco_test.rb +142 -0
- data/test/br_boleto/conta/caixa_test.rb +7 -6
- data/test/br_boleto/conta/cecred_test.rb +119 -0
- data/test/br_boleto/conta/itau_test.rb +189 -0
- data/test/br_boleto/conta/sicoob_test.rb +32 -2
- data/test/br_boleto/conta/sicredi_test.rb +180 -0
- data/test/br_boleto/conta/unicred_test.rb +154 -0
- data/test/br_boleto/pagador_test.rb +22 -2
- data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
- data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
- data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
- data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
- data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
- data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
- data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
- data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
- data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
- data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
- data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
- data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
- data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
- data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
- data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
- data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
- data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
- data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
- data/test/br_boleto/retorno/pagamento_test.rb +7 -0
- data/test/factories/boleto/boleto_bradesco.rb +18 -0
- data/test/factories/boleto/boleto_cecred.rb +18 -0
- data/test/factories/boleto/boleto_itau.rb +18 -0
- data/test/factories/boleto/boleto_sicredi.rb +18 -0
- data/test/factories/boleto/boleto_unicred.rb +18 -0
- data/test/factories/conta/bradesco.rb +16 -0
- data/test/factories/conta/caixa.rb +2 -1
- data/test/factories/conta/cecred.rb +15 -0
- data/test/factories/conta/itau.rb +15 -0
- data/test/factories/conta/sicoob.rb +2 -1
- data/test/factories/conta/sicredi.rb +15 -0
- data/test/factories/conta/unicred.rb +15 -0
- data/test/factories/remessa/cnab240/bradesco.rb +9 -0
- data/test/factories/remessa/cnab240/cecred.rb +9 -0
- data/test/factories/remessa/cnab240/itau.rb +9 -0
- data/test/factories/remessa/cnab240/sicredi.rb +9 -0
- data/test/factories/remessa/cnab240/unicred.rb +9 -0
- data/test/factories/remessa/cnab400/bradesco.rb +8 -0
- data/test/factories/remessa/cnab400/itau.rb +8 -0
- data/test/factories/remessa/cnab400/sicredi.rb +8 -0
- data/test/factories/remessa/cnab400/unicred.rb +8 -0
- data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
- data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
- data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
- data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
- data/test/fixtures/retorno/cnab400/itau.ret +54 -0
- metadata +138 -3
@@ -0,0 +1,189 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrBoleto::Conta::Itau do
|
4
|
+
subject { FactoryGirl.build(:conta_itau) }
|
5
|
+
|
6
|
+
it "deve herdar de Conta::Base" do
|
7
|
+
subject.class.superclass.must_equal BrBoleto::Conta::Base
|
8
|
+
end
|
9
|
+
context "valores padrões" do
|
10
|
+
it "deve setar a carteira com '109' " do
|
11
|
+
subject.class.new.carteira.must_equal '109'
|
12
|
+
end
|
13
|
+
it "deve setar a valid_agencia_length com 4 " do
|
14
|
+
subject.class.new.valid_agencia_length.must_equal 4
|
15
|
+
end
|
16
|
+
it "deve setar a valid_carteira_required com true " do
|
17
|
+
subject.class.new.valid_carteira_required.must_equal true
|
18
|
+
end
|
19
|
+
it "deve setar a valid_carteira_length com 3 " do
|
20
|
+
subject.class.new.valid_carteira_length.must_equal 3
|
21
|
+
end
|
22
|
+
it "deve setar a valid_conta_corrente_required com true " do
|
23
|
+
subject.class.new.valid_conta_corrente_required.must_equal true
|
24
|
+
end
|
25
|
+
it "deve setar a valid_conta_corrente_maximum com 5 " do
|
26
|
+
subject.class.new.valid_conta_corrente_maximum.must_equal 5
|
27
|
+
end
|
28
|
+
it "deve setar a valid_codigo_cedente_maximum com 5 " do
|
29
|
+
subject.class.new.valid_codigo_cedente_maximum.must_equal 5
|
30
|
+
end
|
31
|
+
end
|
32
|
+
describe "Validations" do
|
33
|
+
it { must validate_presence_of(:agencia) }
|
34
|
+
it { must validate_presence_of(:razao_social) }
|
35
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
36
|
+
it do
|
37
|
+
subject.agencia_dv = 21
|
38
|
+
must_be_message_error(:agencia_dv, :custom_length_is, {count: 1})
|
39
|
+
end
|
40
|
+
context 'Validações padrões da carteira' do
|
41
|
+
subject { BrBoleto::Conta::Itau.new }
|
42
|
+
it { must validate_presence_of(:carteira) }
|
43
|
+
it 'Tamanho deve ser de 3' do
|
44
|
+
subject.carteira = '1345'
|
45
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 3})
|
46
|
+
end
|
47
|
+
it "valores aceitos" do
|
48
|
+
subject.carteira = '04'
|
49
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '104, 105, 107, 108, 109, 112, 113, 116, 117, 119, 121, 122, 126, 131, 134, 135, 136, 142, 143, 146, 147, 150, 168, 169, 174, 175, 180, 191, 196, 198'})
|
50
|
+
end
|
51
|
+
end
|
52
|
+
context 'Validações padrões da conta_corrente' do
|
53
|
+
subject { BrBoleto::Conta::Itau.new }
|
54
|
+
it { must validate_presence_of(:conta_corrente) }
|
55
|
+
it 'Tamanho deve ter o tamanho maximo de 5' do
|
56
|
+
subject.conta_corrente = '12345678'
|
57
|
+
must_be_message_error(:conta_corrente, :custom_length_maximum, {count: 5})
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context 'Validações padrões da codigo_cedente' do
|
61
|
+
subject { BrBoleto::Conta::Itau.new }
|
62
|
+
it 'Tamanho deve ter o tamanho maximo de 5' do
|
63
|
+
subject.codigo_cedente = '12345678'
|
64
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 5})
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "codigo do banco" do
|
70
|
+
subject.codigo_banco.must_equal '341'
|
71
|
+
end
|
72
|
+
it '#codigo_banco_dv' do
|
73
|
+
subject.codigo_banco_dv.must_equal '7'
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#nome_banco" do
|
77
|
+
it "valor padrão para o nome_banco" do
|
78
|
+
subject.nome_banco.must_equal 'ITAU'
|
79
|
+
end
|
80
|
+
it "deve ser possível mudar o valor do nome do banco" do
|
81
|
+
subject.nome_banco = 'MEU'
|
82
|
+
subject.nome_banco.must_equal 'MEU'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it "#versao_layout_arquivo_cnab_240" do
|
87
|
+
subject.versao_layout_arquivo_cnab_240.must_equal '040'
|
88
|
+
end
|
89
|
+
it "#versao_layout_lote_cnab_240" do
|
90
|
+
subject.versao_layout_lote_cnab_240.must_equal '030'
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#conta_corrente_dv' do
|
94
|
+
it "deve ser personalizavel pelo usuario" do
|
95
|
+
subject.conta_corrente_dv = 88
|
96
|
+
subject.conta_corrente_dv.must_equal 88
|
97
|
+
end
|
98
|
+
it "se não passar valor deve calcular automatico" do
|
99
|
+
subject.conta_corrente_dv = nil
|
100
|
+
subject.conta_corrente = '12345'
|
101
|
+
subject.agencia_dv = nil
|
102
|
+
subject.agencia = '1234'
|
103
|
+
BrBoleto::Calculos::Modulo10.expects(:new).with('123412345').returns(stub(to_s: 1))
|
104
|
+
|
105
|
+
subject.conta_corrente_dv.must_equal 1
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "#get_especie_titulo" do
|
110
|
+
context "CÓDIGOS para o cnab 240 do Itau" do
|
111
|
+
it { subject.get_especie_titulo('02', 240).must_equal '01' } # DUPLICATA MERCANTIL
|
112
|
+
it { subject.get_especie_titulo('12', 240).must_equal '02' } # NOTA PROMISSÓRIA
|
113
|
+
it { subject.get_especie_titulo('16', 240).must_equal '03' } # NOTA DE SEGURO
|
114
|
+
it { subject.get_especie_titulo('21', 240).must_equal '04' } # MENSALIDADE ESCOLAR
|
115
|
+
it { subject.get_especie_titulo('17', 240).must_equal '05' } # RECIBO
|
116
|
+
it { subject.get_especie_titulo('04', 240).must_equal '08' } # DUPLICATA DE SERVIÇO
|
117
|
+
it { subject.get_especie_titulo('07', 240).must_equal '09' } # LETRA DE CÂMBIO
|
118
|
+
it { subject.get_especie_titulo('19', 240).must_equal '13' } # NOTA DE DÉBITOS
|
119
|
+
it { subject.get_especie_titulo('24', 240).must_equal '15' } # DOCUMENTO DE DÍVIDA
|
120
|
+
it { subject.get_especie_titulo('30', 240).must_equal '16' } # ENCARGOS CONDOMINIAIS
|
121
|
+
it { subject.get_especie_titulo('32', 240).must_equal '18' } # BOLETO DE PROPOSTA
|
122
|
+
it { subject.get_especie_titulo('66', 240).must_equal '06' } # CONTRATO
|
123
|
+
it { subject.get_especie_titulo('77', 240).must_equal '07' } # COSSEGUROS
|
124
|
+
it { subject.get_especie_titulo('88', 240).must_equal '17' } # CONTA DE PRESTAÇÃO DE SERVIÇOS
|
125
|
+
end
|
126
|
+
end
|
127
|
+
describe "#get_especie_titulo" do
|
128
|
+
context "CÓDIGOS para o cnab 400 do Itau" do
|
129
|
+
it { subject.get_especie_titulo('02', 400).must_equal '01' } # DUPLICATA MERCANTIL
|
130
|
+
it { subject.get_especie_titulo('12', 400).must_equal '02' } # NOTA PROMISSÓRIA
|
131
|
+
it { subject.get_especie_titulo('16', 400).must_equal '03' } # NOTA DE SEGURO
|
132
|
+
it { subject.get_especie_titulo('21', 400).must_equal '04' } # MENSALIDADE ESCOLAR
|
133
|
+
it { subject.get_especie_titulo('17', 400).must_equal '05' } # RECIBO
|
134
|
+
it { subject.get_especie_titulo('04', 400).must_equal '08' } # DUPLICATA DE SERVIÇO
|
135
|
+
it { subject.get_especie_titulo('07', 400).must_equal '09' } # LETRA DE CÂMBIO
|
136
|
+
it { subject.get_especie_titulo('19', 400).must_equal '13' } # NOTA DE DÉBITOS
|
137
|
+
it { subject.get_especie_titulo('24', 400).must_equal '15' } # DOCUMENTO DE DÍVIDA
|
138
|
+
it { subject.get_especie_titulo('30', 400).must_equal '16' } # ENCARGOS CONDOMINIAIS
|
139
|
+
it { subject.get_especie_titulo('32', 400).must_equal '18' } # BOLETO DE PROPOSTA
|
140
|
+
it { subject.get_especie_titulo('66', 400).must_equal '06' } # CONTRATO
|
141
|
+
it { subject.get_especie_titulo('77', 400).must_equal '07' } # COSSEGUROS
|
142
|
+
it { subject.get_especie_titulo('88', 400).must_equal '17' } # CONTA DE PRESTAÇÃO DE SERVIÇOS
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
describe "#get_codigo_movimento_remessa" do
|
147
|
+
context "CÓDIGOS para o cnab 240 do Itau" do
|
148
|
+
it { subject.get_codigo_movimento_remessa('10', 240).must_equal '18' } # SUSTAR O PROTESTO
|
149
|
+
it { subject.get_codigo_movimento_remessa('38', 240).must_equal '38' } # BENEFICIÁRIO NÃO CONCORDA COM A ALEGAÇÃO DO PAGADOR CÓDIGO DA ALEGAÇÃO
|
150
|
+
it { subject.get_codigo_movimento_remessa('41', 240).must_equal '41' } # EXCLUSÃO DE SACADOR AVALISTA
|
151
|
+
it { subject.get_codigo_movimento_remessa('66', 240).must_equal '66' } # ENTRADA EM NEGATIVAÇÃO EXPRESSA
|
152
|
+
it { subject.get_codigo_movimento_remessa('67', 240).must_equal '67' } # NÃO NEGATIVAR (INIBE ENTRADA EM NEGATIVAÇÃO EXPRESSA
|
153
|
+
it { subject.get_codigo_movimento_remessa('68', 240).must_equal '68' } # EXCLUIR NEGATIVAÇÃO EXPRESSA (ATÉ 15 DIAS CORRIDOS APÓS A ENTRADA EM NEGATIVAÇÃO EXPRESSA)
|
154
|
+
it { subject.get_codigo_movimento_remessa('69', 240).must_equal '69' } # CANCELAR NEGATIVAÇÃO EXPRESSA (APÓS TÍTULO TER SIDO NEGATIVADO)
|
155
|
+
it { subject.get_codigo_movimento_remessa('93', 240).must_equal '93' } # DESCONTAR TÍTULOS ENCAMINHADOS NO DIA
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "#get_codigo_protesto" do
|
160
|
+
it { subject.get_codigo_protesto('0').must_equal '0' } # Sem instrução
|
161
|
+
it { subject.get_codigo_protesto('07').must_equal '07' } # Negativar (Dias Corridos)
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "#get_codigo_multa" do
|
165
|
+
it { subject.get_codigo_multa('0').must_equal '0' } # NÃO REGISTRA A MULTA
|
166
|
+
end
|
167
|
+
|
168
|
+
describe "#get_codigo_carteira" do
|
169
|
+
it "deve retornar E se a carteira for 147" do
|
170
|
+
subject.carteira = '147'
|
171
|
+
subject.get_codigo_carteira.must_equal 'E' # ESCRITURAL ELETRÔNICA – DÓLAR
|
172
|
+
end
|
173
|
+
it "deve retornar U se a carteira for 150" do
|
174
|
+
subject.carteira = '150'
|
175
|
+
subject.get_codigo_carteira.must_equal 'U' # DIRETA ELETRÔNICA SEM EMISSÃO – DÓLAR
|
176
|
+
end
|
177
|
+
it "deve retornar 1 se a carteira for 191" do
|
178
|
+
subject.carteira = '191'
|
179
|
+
subject.get_codigo_carteira.must_equal '1' # DUPLICATAS - TRANSFERÊNCIA DE DESCONTO
|
180
|
+
end
|
181
|
+
it "deve retornar I para as demais carteiras" do
|
182
|
+
subject.carteira = '109'
|
183
|
+
subject.get_codigo_carteira.must_equal 'I' # DEMAIS CARTEIRAS
|
184
|
+
|
185
|
+
subject.carteira = '999'
|
186
|
+
subject.get_codigo_carteira.must_equal 'I' # DEMAIS CARTEIRAS
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -125,7 +125,6 @@ describe BrBoleto::Conta::Sicoob do
|
|
125
125
|
end
|
126
126
|
end
|
127
127
|
|
128
|
-
|
129
128
|
describe '#conta_corrente_dv' do
|
130
129
|
it "deve ser personalizavel pelo usuario" do
|
131
130
|
subject.conta_corrente_dv = 88
|
@@ -140,5 +139,36 @@ describe BrBoleto::Conta::Sicoob do
|
|
140
139
|
end
|
141
140
|
end
|
142
141
|
|
143
|
-
|
142
|
+
describe "#get_codigo_movimento_remessa" do
|
143
|
+
context "CÓDIGOS para o cnab 400 do SICOOB" do
|
144
|
+
it { subject.get_codigo_movimento_remessa('23', 400).must_equal '12' } # Alteração de Pagador
|
145
|
+
it { subject.get_codigo_movimento_remessa('46', 400).must_equal '34' } # Baixa - Pagamento Direto ao Beneficiário
|
146
|
+
end
|
147
|
+
end
|
148
|
+
describe '#get_codigo_juros' do
|
149
|
+
it { subject.get_codigo_juros('1').must_equal '1' }
|
150
|
+
it { subject.get_codigo_juros('2').must_equal '2' }
|
151
|
+
it "para o siccob o código que representa sem juros deve ser 0(zero)" do
|
152
|
+
subject.get_codigo_juros('3').must_equal '0'
|
153
|
+
end
|
154
|
+
it "se passar o código '0' para os juros deve retornar 0" do
|
155
|
+
subject.get_codigo_juros('0').must_equal '0'
|
156
|
+
end
|
157
|
+
it "default_codigo_juros deve ser '0" do
|
158
|
+
subject.default_codigo_juros.must_equal '0'
|
159
|
+
end
|
160
|
+
end
|
161
|
+
describe '#get_codigo_multa' do
|
162
|
+
it { subject.get_codigo_multa('1').must_equal '1' }
|
163
|
+
it { subject.get_codigo_multa('2').must_equal '2' }
|
164
|
+
it "para o siccob o código que representa sem multa deve ser 0(zero)" do
|
165
|
+
subject.get_codigo_multa('3').must_equal '0'
|
166
|
+
end
|
167
|
+
it "se passar o código '0' para os multa deve retornar 0" do
|
168
|
+
subject.get_codigo_multa('0').must_equal '0'
|
169
|
+
end
|
170
|
+
it "default_codigo_multa deve ser '0" do
|
171
|
+
subject.default_codigo_multa.must_equal '0'
|
172
|
+
end
|
173
|
+
end
|
144
174
|
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrBoleto::Conta::Sicredi do
|
4
|
+
subject { FactoryGirl.build(:conta_sicredi) }
|
5
|
+
|
6
|
+
it "deve herdar de Conta::Base" do
|
7
|
+
subject.class.superclass.must_equal BrBoleto::Conta::Base
|
8
|
+
end
|
9
|
+
context "valores padrões" do
|
10
|
+
it "deve setar a carteira com '1' " do
|
11
|
+
subject.class.new.carteira.must_equal '1'
|
12
|
+
end
|
13
|
+
it "deve setar a valid_agencia_length com 4 " do
|
14
|
+
subject.class.new.valid_agencia_length.must_equal 4
|
15
|
+
end
|
16
|
+
it "deve setar a valid_carteira_required com true " do
|
17
|
+
subject.class.new.valid_carteira_required.must_equal true
|
18
|
+
end
|
19
|
+
it "deve setar a valid_carteira_length com 1 " do
|
20
|
+
subject.class.new.valid_carteira_length.must_equal 1
|
21
|
+
end
|
22
|
+
it "deve setar a valid_conta_corrente_required com true " do
|
23
|
+
subject.class.new.valid_conta_corrente_required.must_equal true
|
24
|
+
end
|
25
|
+
it "deve setar a valid_conta_corrente_maximum com 5 " do
|
26
|
+
subject.class.new.valid_conta_corrente_maximum.must_equal 5
|
27
|
+
end
|
28
|
+
it "deve setar a valid_codigo_cedente_maximum com 5 " do
|
29
|
+
subject.class.new.valid_codigo_cedente_maximum.must_equal 5
|
30
|
+
end
|
31
|
+
it "deve setar a posto com '0'" do
|
32
|
+
subject.class.new.posto.must_equal '00'
|
33
|
+
end
|
34
|
+
it "deve setar a byte_id com '2'" do
|
35
|
+
subject.class.new.byte_id.must_equal '2'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
describe "Validations" do
|
39
|
+
it { must validate_presence_of(:agencia) }
|
40
|
+
it { must validate_presence_of(:razao_social) }
|
41
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
42
|
+
|
43
|
+
context 'Validações padrões da carteira' do
|
44
|
+
subject { BrBoleto::Conta::Sicredi.new }
|
45
|
+
it { must validate_presence_of(:carteira) }
|
46
|
+
it 'Tamanho deve ser de 1' do
|
47
|
+
subject.carteira = '132'
|
48
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 1})
|
49
|
+
end
|
50
|
+
it "valores aceitos" do
|
51
|
+
subject.carteira = '04'
|
52
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '1, 3'})
|
53
|
+
end
|
54
|
+
end
|
55
|
+
context 'Validações padrões da conta_corrente' do
|
56
|
+
subject { BrBoleto::Conta::Sicredi.new }
|
57
|
+
it { must validate_presence_of(:conta_corrente) }
|
58
|
+
it 'Tamanho deve ter o tamanho maximo de 5' do
|
59
|
+
subject.conta_corrente = '12345678'
|
60
|
+
must_be_message_error(:conta_corrente, :custom_length_maximum, {count: 5})
|
61
|
+
end
|
62
|
+
end
|
63
|
+
context 'Validações padrões da codigo_cedente' do
|
64
|
+
subject { BrBoleto::Conta::Sicredi.new }
|
65
|
+
it 'Tamanho deve ter o tamanho maximo de 5' do
|
66
|
+
subject.codigo_cedente = '12345678'
|
67
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 5})
|
68
|
+
end
|
69
|
+
end
|
70
|
+
it 'posto deve ter no maximo 2 digitos' do
|
71
|
+
subject.posto = '12345'
|
72
|
+
must_be_message_error(:posto, :custom_length_maximum, {count: 2})
|
73
|
+
subject.posto = '12'
|
74
|
+
wont_be_message_error(:posto, :custom_length_maximum, {count: 2})
|
75
|
+
end
|
76
|
+
context 'Validações padrões do byte_id' do
|
77
|
+
subject { BrBoleto::Conta::Sicredi.new }
|
78
|
+
it { must validate_presence_of(:byte_id) }
|
79
|
+
it 'byte_id deve ter 1 digito' do
|
80
|
+
subject.byte_id = '12345'
|
81
|
+
must_be_message_error(:byte_id, :custom_length_is, {count: 1})
|
82
|
+
subject.byte_id = '9'
|
83
|
+
wont_be_message_error(:byte_id, :custom_length_is, {count: 1})
|
84
|
+
end
|
85
|
+
it "valores aceitos" do
|
86
|
+
subject.byte_id = '1'
|
87
|
+
must_be_message_error(:byte_id, :custom_inclusion, {list: '2, 3, 4, 5, 6, 7, 8, 9'})
|
88
|
+
subject.byte_id = '7'
|
89
|
+
wont_be_message_error(:byte_id, :custom_inclusion, {list: '2, 3, 4, 5, 6, 7, 8, 9'})
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
it "codigo do banco" do
|
95
|
+
subject.codigo_banco.must_equal '748'
|
96
|
+
end
|
97
|
+
it '#codigo_banco_dv' do
|
98
|
+
subject.codigo_banco_dv.must_equal 'X'
|
99
|
+
end
|
100
|
+
|
101
|
+
describe "#nome_banco" do
|
102
|
+
it "valor padrão para o nome_banco" do
|
103
|
+
subject.nome_banco.must_equal 'SICREDI'
|
104
|
+
end
|
105
|
+
it "deve ser possível mudar o valor do nome do banco" do
|
106
|
+
subject.nome_banco = 'MEU'
|
107
|
+
subject.nome_banco.must_equal 'MEU'
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
it "#versao_layout_arquivo_cnab_240" do
|
112
|
+
subject.versao_layout_arquivo_cnab_240.must_equal '081'
|
113
|
+
end
|
114
|
+
it "#versao_layout_lote_cnab_240" do
|
115
|
+
subject.versao_layout_lote_cnab_240.must_equal '040'
|
116
|
+
end
|
117
|
+
|
118
|
+
describe '#posto' do
|
119
|
+
it "deve ajustar valor para 2 digitos" do
|
120
|
+
subject.posto = 4
|
121
|
+
subject.posto.must_equal '04'
|
122
|
+
end
|
123
|
+
end
|
124
|
+
describe '#byte_id' do
|
125
|
+
it "deve ajustar valor para 1 digito" do
|
126
|
+
subject.byte_id = 4
|
127
|
+
subject.byte_id.must_equal '4'
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "#equivalent_especie_titulo_240" do
|
132
|
+
context "CÓDIGOS para o cnab 240 do Sicredi" do
|
133
|
+
it { subject.get_especie_titulo('01', 240).must_equal '03' } # Duplicata Mercantil por Indicação (DMI)
|
134
|
+
it { subject.get_especie_titulo('02', 240).must_equal '03' } # Duplicata Mercantil por Indicação (DMI)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "#equivalent_especie_titulo_400" do
|
139
|
+
context "CÓDIGOS para o cnab 400 do Sicredi" do
|
140
|
+
it { subject.get_especie_titulo('01', 400).must_equal 'A' }
|
141
|
+
it { subject.get_especie_titulo('02', 400).must_equal 'A' }
|
142
|
+
it { subject.get_especie_titulo('03', 400).must_equal 'A' } # Duplicata Mercantil por Indicação (DMI)
|
143
|
+
it { subject.get_especie_titulo('06', 400).must_equal 'B' } # Duplicata Rural (DR)
|
144
|
+
it { subject.get_especie_titulo('12', 400).must_equal 'C' } # Nota Promissória (NP)
|
145
|
+
it { subject.get_especie_titulo('13', 400).must_equal 'D' } # Nota Promissória Rural (NR)
|
146
|
+
it { subject.get_especie_titulo('16', 400).must_equal 'E' } # Nota de Seguros (NS)
|
147
|
+
it { subject.get_especie_titulo('17', 400).must_equal 'G' } # Recibo (RC)
|
148
|
+
it { subject.get_especie_titulo('07', 400).must_equal 'H' } # Letra de Câmbio (LC)
|
149
|
+
it { subject.get_especie_titulo('19', 400).must_equal 'I' } # Nota de Débito (ND)
|
150
|
+
it { subject.get_especie_titulo('05', 400).must_equal 'J' } # Duplicata de Serviço por Indicação (DSI)
|
151
|
+
it { subject.get_especie_titulo('99', 400).must_equal 'K' } # Outros (OS)
|
152
|
+
it { subject.get_especie_titulo('32', 400).must_equal 'O' } # Boleto de Proposta (BDP)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "#equivalent_tipo_cobranca_400" do
|
157
|
+
it { subject.get_tipo_cobranca('1', 400).must_equal 'A' } # Cobrança Simples
|
158
|
+
end
|
159
|
+
|
160
|
+
describe "#equivalent_tipo_impressao_400" do
|
161
|
+
it { subject.get_tipo_impressao('1', 400).must_equal 'A' } # Frente do Bloqueto
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "#equivalent_identificacao_emissao_400" do
|
165
|
+
it { subject.get_identificacao_emissao('1', 400).must_equal 'A' } # Impressão é feita pelo Sicredi
|
166
|
+
it { subject.get_identificacao_emissao('2', 400).must_equal 'B' } # Impressão é feita pelo Beneficiário
|
167
|
+
end
|
168
|
+
|
169
|
+
describe "#equivalent_codigo_desconto" do
|
170
|
+
it { subject.get_codigo_desconto('0').must_equal '1' } # Sem Desconto
|
171
|
+
it { subject.get_codigo_desconto('1').must_equal '1' } # Valor Fixo Até a Data Informada
|
172
|
+
it { subject.get_codigo_desconto('2').must_equal '2' } # Percentual Até a Data Informada
|
173
|
+
it { subject.get_codigo_desconto('3').must_equal '3' } # Valor por Antecipação Dia Corrido
|
174
|
+
it { subject.get_codigo_desconto('4').must_equal '3' } # Valor por Antecipação Dia Úti
|
175
|
+
it { subject.get_codigo_desconto('5').must_equal '2' } # Percentual Sobre o Valor Nominal Dia Corrido
|
176
|
+
it { subject.get_codigo_desconto('6').must_equal '2' } # Percentual Sobre o Valor Nominal Dia Útil
|
177
|
+
it { subject.get_codigo_desconto('7').must_equal '7' } # Cancelamento de Desconto
|
178
|
+
end
|
179
|
+
|
180
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrBoleto::Conta::Unicred do
|
4
|
+
subject { FactoryGirl.build(:conta_unicred) }
|
5
|
+
|
6
|
+
it "deve herdar de Conta::Bradesco" do
|
7
|
+
subject.class.superclass.must_equal BrBoleto::Conta::Bradesco
|
8
|
+
end
|
9
|
+
context "valores padrões" do
|
10
|
+
it "deve setar a carteira com '09' " do
|
11
|
+
subject.class.new.carteira.must_equal '09'
|
12
|
+
end
|
13
|
+
it "deve setar a valid_agencia_length com 4 " do
|
14
|
+
subject.class.new.valid_agencia_length.must_equal 4
|
15
|
+
end
|
16
|
+
it "deve setar a valid_carteira_required com true " do
|
17
|
+
subject.class.new.valid_carteira_required.must_equal true
|
18
|
+
end
|
19
|
+
it "deve setar a valid_carteira_length com 2 " do
|
20
|
+
subject.class.new.valid_carteira_length.must_equal 2
|
21
|
+
end
|
22
|
+
it "deve setar a valid_conta_corrente_required com true " do
|
23
|
+
subject.class.new.valid_conta_corrente_required.must_equal true
|
24
|
+
end
|
25
|
+
it "deve setar a valid_conta_corrente_maximum com 7 " do
|
26
|
+
subject.class.new.valid_conta_corrente_maximum.must_equal 7
|
27
|
+
end
|
28
|
+
it "deve setar a valid_codigo_cedente_maximum com 7 " do
|
29
|
+
subject.class.new.valid_codigo_cedente_maximum.must_equal 7
|
30
|
+
end
|
31
|
+
end
|
32
|
+
describe "Validations" do
|
33
|
+
it { must validate_presence_of(:agencia) }
|
34
|
+
it { must validate_presence_of(:razao_social) }
|
35
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
36
|
+
it do
|
37
|
+
subject.agencia_dv = 21
|
38
|
+
must_be_message_error(:agencia_dv, :custom_length_is, {count: 1})
|
39
|
+
end
|
40
|
+
context 'Validações padrões da carteira' do
|
41
|
+
subject { BrBoleto::Conta::Unicred.new }
|
42
|
+
it { must validate_presence_of(:carteira) }
|
43
|
+
it 'Tamanho deve ser de 2' do
|
44
|
+
subject.carteira = '132'
|
45
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 2})
|
46
|
+
end
|
47
|
+
it "valores aceitos" do
|
48
|
+
subject.carteira = '04'
|
49
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '06, 09, 19, 21, 22'})
|
50
|
+
end
|
51
|
+
end
|
52
|
+
context 'Validações padrões da conta_corrente' do
|
53
|
+
subject { BrBoleto::Conta::Unicred.new }
|
54
|
+
it { must validate_presence_of(:conta_corrente) }
|
55
|
+
it 'Tamanho deve ter o tamanho maximo de 7' do
|
56
|
+
subject.conta_corrente = '12345678'
|
57
|
+
must_be_message_error(:conta_corrente, :custom_length_maximum, {count: 7})
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context 'Validações padrões da codigo_cedente' do
|
61
|
+
subject { BrBoleto::Conta::Unicred.new }
|
62
|
+
it 'Tamanho deve ter o tamanho maximo de 7' do
|
63
|
+
subject.codigo_cedente = '12345678'
|
64
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 7})
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "codigo do banco" do
|
70
|
+
subject.codigo_banco.must_equal '237'
|
71
|
+
end
|
72
|
+
it '#codigo_banco_dv' do
|
73
|
+
subject.codigo_banco_dv.must_equal '2'
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#nome_banco" do
|
77
|
+
it "valor padrão para o nome_banco" do
|
78
|
+
subject.nome_banco.must_equal 'BRADESCO'
|
79
|
+
end
|
80
|
+
it "deve ser possível mudar o valor do nome do banco" do
|
81
|
+
subject.nome_banco = 'MEU'
|
82
|
+
subject.nome_banco.must_equal 'MEU'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it "#versao_layout_arquivo_cnab_240" do
|
87
|
+
subject.versao_layout_arquivo_cnab_240.must_equal '082'
|
88
|
+
end
|
89
|
+
it "#versao_layout_lote_cnab_240" do
|
90
|
+
subject.versao_layout_lote_cnab_240.must_equal '041'
|
91
|
+
end
|
92
|
+
|
93
|
+
describe '#agencia_dv' do
|
94
|
+
it "deve ser personalizavel pelo usuario" do
|
95
|
+
subject.agencia_dv = 88
|
96
|
+
subject.agencia_dv.must_equal 88
|
97
|
+
end
|
98
|
+
it "se não passar valor deve calcular automatico" do
|
99
|
+
subject.agencia = '1234'
|
100
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9.expects(:new).with('1234').returns(stub(to_s: 5))
|
101
|
+
|
102
|
+
subject.agencia_dv.must_equal 5
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe '#conta_corrente_dv' do
|
107
|
+
it "deve ser personalizavel pelo usuario" do
|
108
|
+
subject.conta_corrente_dv = 88
|
109
|
+
subject.conta_corrente_dv.must_equal 88
|
110
|
+
end
|
111
|
+
it "se não passar valor deve calcular automatico" do
|
112
|
+
subject.conta_corrente_dv = nil
|
113
|
+
subject.conta_corrente = '6688'
|
114
|
+
BrBoleto::Calculos::Modulo11FatorDe2a7.expects(:new).with('0006688').returns(stub(to_s: 5))
|
115
|
+
|
116
|
+
subject.conta_corrente_dv.must_equal 5
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "#get_especie_titulo" do
|
121
|
+
context "CÓDIGOS para o cnab 400 do Unicred" do
|
122
|
+
it { subject.get_especie_titulo('07', 400).must_equal '10' } # Letra de Câmbio
|
123
|
+
it { subject.get_especie_titulo('17', 400).must_equal '05' } # Recibo
|
124
|
+
it { subject.get_especie_titulo('19', 400).must_equal '11' } # Nota de Débito
|
125
|
+
it { subject.get_especie_titulo('32', 400).must_equal '30' } # Boleto de Proposta
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#get_codigo_movimento_remessa" do
|
130
|
+
context "CÓDIGOS para o cnab 400 do Unicred" do
|
131
|
+
it { subject.get_codigo_movimento_remessa('10', 400).must_equal '18' } # Sustar protesto e baixar Título
|
132
|
+
it { subject.get_codigo_movimento_remessa('11', 400).must_equal '19' } # Sustar protesto e manter em carteira
|
133
|
+
it { subject.get_codigo_movimento_remessa('31', 400).must_equal '22' } # Transferência Cessão Crédito
|
134
|
+
it { subject.get_codigo_movimento_remessa('33', 400).must_equal '68' } # Acerto nos dados do rateio de Crédito
|
135
|
+
it { subject.get_codigo_movimento_remessa('43', 400).must_equal '23' } # Transferência entre Carteiras
|
136
|
+
it { subject.get_codigo_movimento_remessa('45', 400).must_equal '45' } # Pedido de Negativação
|
137
|
+
it { subject.get_codigo_movimento_remessa('46', 400).must_equal '46' } # Excluir Negativação com baixa
|
138
|
+
it { subject.get_codigo_movimento_remessa('47', 400).must_equal '47' } # Excluir negativação e manter pendente
|
139
|
+
it { subject.get_codigo_movimento_remessa('34', 400).must_equal '69' } # Cancelamento do rateio de crédito.
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "#get_codigo_protesto" do
|
144
|
+
context "CÓDIGOS para o cnab 240 do Unicred" do
|
145
|
+
it { subject.get_codigo_protesto('1').must_equal '1' } # Protestar Dias Corridos
|
146
|
+
it { subject.get_codigo_protesto('2').must_equal '1' } # Protestar Dias Úteis
|
147
|
+
it { subject.get_codigo_protesto('3').must_equal '3' } # Não Protesta
|
148
|
+
it { subject.get_codigo_protesto('4').must_equal '1' } # Protestar Fim Falimentar - Dias Úteis
|
149
|
+
it { subject.get_codigo_protesto('5').must_equal '1' } # Protestar Fim Falimentar - Dias Corridos
|
150
|
+
it { subject.get_codigo_protesto('8').must_equal '3' } # Negativação sem Protesto
|
151
|
+
it { subject.get_codigo_protesto('9').must_equal '3' } # Cancelamento Protesto Automático
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
@@ -22,8 +22,20 @@ describe BrBoleto::Pagador do
|
|
22
22
|
it { must validate_presence_of(:cidade) }
|
23
23
|
it { must validate_presence_of(:uf) }
|
24
24
|
end
|
25
|
-
|
26
25
|
end
|
26
|
+
context "validação de presença do avalsita" do
|
27
|
+
context "por padrão não deve ser obrigatorio" do
|
28
|
+
it { wont validate_presence_of(:nome_avalista) }
|
29
|
+
it { wont validate_presence_of(:documento_avalista) }
|
30
|
+
it { wont validate_presence_of(:endereco_avalista) }
|
31
|
+
end
|
32
|
+
context "se setar o valid_avalista_required então valida a presença do avalista" do
|
33
|
+
before { subject.valid_avalista_required = true }
|
34
|
+
it { must validate_presence_of(:nome_avalista) }
|
35
|
+
it { must validate_presence_of(:documento_avalista) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
27
39
|
end
|
28
40
|
|
29
41
|
it "cep deve retornar apenas numeros" do
|
@@ -96,7 +108,7 @@ describe BrBoleto::Pagador do
|
|
96
108
|
it "se setar o CPF com a pontuação deve sempre retornar apenas os numeros" do
|
97
109
|
subject.documento_avalista = '725.211.506-22'
|
98
110
|
subject.documento_avalista.must_equal '72521150622'
|
99
|
-
end
|
111
|
+
end
|
100
112
|
end
|
101
113
|
|
102
114
|
describe "#tipo_documento_avalista" do
|
@@ -143,6 +155,14 @@ describe BrBoleto::Pagador do
|
|
143
155
|
subject.documento_avalista_formatado_com_label.must_equal 'CPF 725.211.506-22'
|
144
156
|
end
|
145
157
|
end
|
158
|
+
|
159
|
+
describe "#endereco_avalista" do
|
160
|
+
it "deve retornar o endereço do avalista" do
|
161
|
+
subject.endereco_avalista = 'RUA - BAIRRO - CEP - CIDADE-UF'
|
162
|
+
subject.endereco_avalista.must_equal 'RUA - BAIRRO - CEP - CIDADE-UF'
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
146
166
|
end
|
147
167
|
|
148
168
|
describe '#endereco_formatado' do
|
@@ -173,8 +173,8 @@ describe BrBoleto::Remessa::Cnab240::Base do
|
|
173
173
|
subject.expects(:monta_lote).with(lote, 1).returns(["LOTE_lote_1"])
|
174
174
|
subject.expects(:monta_lote).with(lote_2, 2).returns(["LOTE_lote_2"])
|
175
175
|
resultado = subject.dados_do_arquivo
|
176
|
-
resultado[10..
|
177
|
-
resultado[
|
176
|
+
resultado[10..22].must_equal "\r\nLOTE_LOTE_1"
|
177
|
+
resultado[23..35].must_equal "\r\nLOTE_LOTE_2"
|
178
178
|
end
|
179
179
|
|
180
180
|
it "com 1 lote" do
|
@@ -182,7 +182,7 @@ describe BrBoleto::Remessa::Cnab240::Base do
|
|
182
182
|
subject.stubs(:monta_header_arquivo).returns("1234567890")
|
183
183
|
subject.expects(:monta_lote).with(lote, 1).returns(["LOTE_lote_1"])
|
184
184
|
resultado = subject.dados_do_arquivo
|
185
|
-
resultado[10..
|
185
|
+
resultado[10..22].must_equal "\r\nLOTE_LOTE_1"
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
@@ -192,12 +192,12 @@ describe BrBoleto::Remessa::Cnab240::Base do
|
|
192
192
|
subject.stubs(:monta_lote).with(lote_2, 2).returns(["LOTE_LOTE01234_2", "PARTE 2"])
|
193
193
|
subject.expects(:monta_trailer_arquivo).with(2, 6).returns("TRAILER_DO_LOTE")
|
194
194
|
resultado = subject.dados_do_arquivo
|
195
|
-
resultado[10..
|
196
|
-
resultado[
|
197
|
-
resultado[
|
198
|
-
resultado[
|
199
|
-
resultado[
|
200
|
-
resultado.size.must_equal
|
195
|
+
resultado[10..27].must_equal "\r\nLOTE_LOTE01234_1"
|
196
|
+
resultado[28..36].must_equal "\r\nPARTE 2"
|
197
|
+
resultado[37..54].must_equal "\r\nLOTE_LOTE01234_2"
|
198
|
+
resultado[55..63].must_equal "\r\nPARTE 2"
|
199
|
+
resultado[64..80].must_equal "\r\nTRAILER_DO_LOTE"
|
200
|
+
resultado.size.must_equal 83
|
201
201
|
end
|
202
202
|
end
|
203
203
|
describe "#monta_lote" do
|
@@ -375,11 +375,23 @@ describe BrBoleto::Remessa::Cnab240::Base do
|
|
375
375
|
it "para monta_trailer_arquivo deve ter 240 caracteres" do
|
376
376
|
subject.monta_trailer_arquivo(1, 2).size.must_equal 240
|
377
377
|
end
|
378
|
-
it "o total de caracteres do arquivo para 1 pagamento deve ser de
|
379
|
-
#
|
380
|
-
subject.dados_do_arquivo.size.must_equal
|
378
|
+
it "o total de caracteres do arquivo para 1 pagamento deve ser de 1936 caracteres" do
|
379
|
+
# 1926 são das montagens e 5 caracteres são das quebras de linha (\r\n)
|
380
|
+
subject.dados_do_arquivo.size.must_equal 1936
|
381
381
|
end
|
382
382
|
end
|
383
383
|
end
|
384
384
|
|
385
|
+
describe "usa_segmento_R?" do
|
386
|
+
it "deve retornar como padrão sempre true" do
|
387
|
+
subject.usa_segmento_R?.must_equal true
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
describe "usa_segmento_S?" do
|
392
|
+
it "deve retornar como padrão sempre true" do
|
393
|
+
subject.usa_segmento_S?.must_equal true
|
394
|
+
end
|
395
|
+
end
|
396
|
+
|
385
397
|
end
|