br_boleto 2.0.1 → 2.1.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 +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
|