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
@@ -284,7 +284,30 @@ describe BrBoleto::Remessa::Base do
|
|
284
284
|
end
|
285
285
|
end
|
286
286
|
end
|
287
|
+
context "#codigo_carteira" do
|
288
|
+
it "por padrão não deve validar nada" do
|
289
|
+
subject.codigo_carteira = nil
|
290
|
+
wont_be_message_error(:codigo_carteira)
|
291
|
+
end
|
287
292
|
|
293
|
+
context "#valid_codigo_carteira_required" do
|
294
|
+
it "quando setado deve validar a obrigatoriedade" do
|
295
|
+
wont validate_presence_of(:codigo_carteira)
|
296
|
+
|
297
|
+
subject.valid_codigo_carteira_required = true
|
298
|
+
must validate_presence_of(:codigo_carteira)
|
299
|
+
end
|
300
|
+
end
|
301
|
+
context "#valid_codigo_carteira_length" do
|
302
|
+
it "quando setado um valor deve validar através do valor setado" do
|
303
|
+
subject.valid_codigo_carteira_length = 7
|
304
|
+
subject.codigo_carteira = '12345678'
|
305
|
+
must_be_message_error(:codigo_carteira, :custom_length_is, {count: 7})
|
306
|
+
subject.codigo_carteira = '1234567'
|
307
|
+
wont_be_message_error(:codigo_carteira, :custom_length_is, {count: 7})
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
288
311
|
context "#convenio" do
|
289
312
|
it "por padrão não deve validar nada" do
|
290
313
|
subject.convenio = nil
|
@@ -425,8 +448,9 @@ describe BrBoleto::Remessa::Base do
|
|
425
448
|
describe "#agencia_codigo_cedente" do
|
426
449
|
it "deve trazer a agencia e o dv separados por /" do
|
427
450
|
subject.expects(:agencia).returns(956781)
|
428
|
-
subject.expects(:codigo_cedente).returns(
|
429
|
-
subject.
|
451
|
+
subject.expects(:codigo_cedente).returns(999)
|
452
|
+
subject.expects(:codigo_cedente_dv).returns(7)
|
453
|
+
subject.agencia_codigo_cedente.must_equal '956781 / 999-7'
|
430
454
|
end
|
431
455
|
end
|
432
456
|
|
@@ -486,5 +510,276 @@ describe BrBoleto::Remessa::Base do
|
|
486
510
|
end
|
487
511
|
end
|
488
512
|
|
489
|
-
|
513
|
+
describe "#tipo_cobranca" do
|
514
|
+
it "deve retornar o codigo_carteira se existir" do
|
515
|
+
subject.codigo_carteira = '1'
|
516
|
+
subject.tipo_cobranca.must_equal '1'
|
517
|
+
subject.codigo_carteira = '2'
|
518
|
+
subject.tipo_cobranca.must_equal '2'
|
519
|
+
end
|
520
|
+
it "deve pegar o primeiro caracter da carteira se não houver valor no codigo_carteira" do
|
521
|
+
subject.carteira = 'X7'
|
522
|
+
subject.tipo_cobranca.must_equal 'X'
|
523
|
+
subject.carteira = 'A7'
|
524
|
+
subject.tipo_cobranca.must_equal 'A'
|
525
|
+
end
|
526
|
+
it "se carteira for nil não deve dar erro" do
|
527
|
+
subject.carteira = nil
|
528
|
+
subject.tipo_cobranca.must_be_nil
|
529
|
+
end
|
530
|
+
end
|
531
|
+
|
532
|
+
context "defalt_codes" do
|
533
|
+
describe "#get_especie_titulo" do
|
534
|
+
context "CÓDIGOS para o cnab 240" do
|
535
|
+
it { subject.get_especie_titulo('01', 240).must_equal '01' } # CH – Cheque
|
536
|
+
it { subject.get_especie_titulo('02', 240).must_equal '02' } # DM – Duplicata Mercantil
|
537
|
+
it { subject.get_especie_titulo('03', 240).must_equal '03' } # DMI – Duplicata Mercantil p/ Indicação
|
538
|
+
it { subject.get_especie_titulo('04', 240).must_equal '04' } # DS – Duplicata de Serviço
|
539
|
+
it { subject.get_especie_titulo('05', 240).must_equal '05' } # DSI – Duplicata de Serviço p/ Indicação
|
540
|
+
it { subject.get_especie_titulo('06', 240).must_equal '06' } # DR – Duplicata Rural
|
541
|
+
it { subject.get_especie_titulo('07', 240).must_equal '07' } # LC – Letra de Câmbio
|
542
|
+
it { subject.get_especie_titulo('08', 240).must_equal '08' } # NCC – Nota de Crédito Comercial
|
543
|
+
it { subject.get_especie_titulo('09', 240).must_equal '09' } # NCE – Nota de Crédito a Exportação
|
544
|
+
it { subject.get_especie_titulo('10', 240).must_equal '10' } # NCI – Nota de Crédito Industrial
|
545
|
+
it { subject.get_especie_titulo('11', 240).must_equal '11' } # NCR – Nota de Crédito Rural
|
546
|
+
it { subject.get_especie_titulo('12', 240).must_equal '12' } # NP – Nota Promissória
|
547
|
+
it { subject.get_especie_titulo('13', 240).must_equal '13' } # NPR – Nota Promissória Rural
|
548
|
+
it { subject.get_especie_titulo('14', 240).must_equal '14' } # TM – Triplicata Mercantil
|
549
|
+
it { subject.get_especie_titulo('15', 240).must_equal '15' } # TS – Triplicata de Serviço
|
550
|
+
it { subject.get_especie_titulo('16', 240).must_equal '16' } # NS – Nota de Seguro
|
551
|
+
it { subject.get_especie_titulo('17', 240).must_equal '17' } # RC – Recibo
|
552
|
+
it { subject.get_especie_titulo('18', 240).must_equal '18' } # FAT – Fatura
|
553
|
+
it { subject.get_especie_titulo('19', 240).must_equal '19' } # ND – Nota de Débito
|
554
|
+
it { subject.get_especie_titulo('20', 240).must_equal '20' } # AP – Apólice de Seguro
|
555
|
+
it { subject.get_especie_titulo('21', 240).must_equal '21' } # ME – Mensalidade Escolar
|
556
|
+
it { subject.get_especie_titulo('22', 240).must_equal '22' } # PC – Parcela de Consórcio
|
557
|
+
it { subject.get_especie_titulo('23', 240).must_equal '23' } # NF – Nota Fiscal
|
558
|
+
it { subject.get_especie_titulo('24', 240).must_equal '24' } # DD – Documento de Dívida
|
559
|
+
it { subject.get_especie_titulo('25', 240).must_equal '25' } # Cédula de Produto Rural
|
560
|
+
it { subject.get_especie_titulo('26', 240).must_equal '26' } # Warrant
|
561
|
+
it { subject.get_especie_titulo('27', 240).must_equal '27' } # Dívida Ativa de Estado
|
562
|
+
it { subject.get_especie_titulo('28', 240).must_equal '28' } # Dívida Ativa de Município
|
563
|
+
it { subject.get_especie_titulo('29', 240).must_equal '29' } # Dívida Ativa da União
|
564
|
+
it { subject.get_especie_titulo('30', 240).must_equal '30' } # Encargos condominiais
|
565
|
+
it { subject.get_especie_titulo('31', 240).must_equal '31' } # CC – Cartão de Crédito
|
566
|
+
it { subject.get_especie_titulo('32', 240).must_equal '32' } # BDP – Boleto de Proposta
|
567
|
+
it { subject.get_especie_titulo('99', 240).must_equal '99' } # Outros
|
568
|
+
it { subject.get_especie_titulo('00', 240).must_equal '99' }
|
569
|
+
end
|
570
|
+
context "CÓDIGOS para o cnab 400" do
|
571
|
+
it { subject.get_especie_titulo('01', 400).must_equal '10' } # Cheque
|
572
|
+
it { subject.get_especie_titulo('02', 400).must_equal '01' } # Duplicata Mercantil
|
573
|
+
it { subject.get_especie_titulo('04', 400).must_equal '12' } # Duplicata de Serviço
|
574
|
+
it { subject.get_especie_titulo('06', 400).must_equal '06' } # Duplicata Rural
|
575
|
+
it { subject.get_especie_titulo('07', 400).must_equal '08' } # Letra de Câmbio
|
576
|
+
it { subject.get_especie_titulo('12', 400).must_equal '02' } # Nota Promissória
|
577
|
+
it { subject.get_especie_titulo('14', 400).must_equal '14' } # Triplicata Mercantil
|
578
|
+
it { subject.get_especie_titulo('15', 400).must_equal '15' } # Triplicata de Serviço
|
579
|
+
it { subject.get_especie_titulo('16', 400).must_equal '03' } # Nota de Seguro
|
580
|
+
it { subject.get_especie_titulo('17', 400).must_equal '05' } # Recibo
|
581
|
+
it { subject.get_especie_titulo('18', 400).must_equal '18' } # Fatura
|
582
|
+
it { subject.get_especie_titulo('19', 400).must_equal '13' } # Nota de Débito
|
583
|
+
it { subject.get_especie_titulo('20', 400).must_equal '20' } # Apólice de Seguro
|
584
|
+
it { subject.get_especie_titulo('21', 400).must_equal '21' } # Mensalidade Escolar
|
585
|
+
it { subject.get_especie_titulo('22', 400).must_equal '22' } # Parcela de Consórcio
|
586
|
+
it { subject.get_especie_titulo('26', 400).must_equal '09' } # Warrant
|
587
|
+
it { subject.get_especie_titulo('99', 400).must_equal '99' } # Outros"
|
588
|
+
it { subject.get_especie_titulo('00', 400).must_equal '99' }
|
589
|
+
end
|
590
|
+
end
|
591
|
+
describe "#get_codigo_movimento_remessa" do
|
592
|
+
context "CÓDIGOS para o cnab 240" do
|
593
|
+
it { subject.get_codigo_movimento_remessa('01',240).must_equal '01' } # Entrada de Títulos
|
594
|
+
it { subject.get_codigo_movimento_remessa('02',240).must_equal '02' } # Pedido de Baixa
|
595
|
+
it { subject.get_codigo_movimento_remessa('03',240).must_equal '03' } # Protesto para Fins Falimentares
|
596
|
+
it { subject.get_codigo_movimento_remessa('04',240).must_equal '04' } # Concessão de Abatimento
|
597
|
+
it { subject.get_codigo_movimento_remessa('05',240).must_equal '05' } # Cancelamento de Abatimento
|
598
|
+
it { subject.get_codigo_movimento_remessa('06',240).must_equal '06' } # Alteração de Vencimento
|
599
|
+
it { subject.get_codigo_movimento_remessa('07',240).must_equal '07' } # Concessão de Desconto
|
600
|
+
it { subject.get_codigo_movimento_remessa('08',240).must_equal '08' } # Cancelamento de Desconto
|
601
|
+
it { subject.get_codigo_movimento_remessa('09',240).must_equal '09' } # Pedido de protesto (Protestar)
|
602
|
+
it { subject.get_codigo_movimento_remessa('10',240).must_equal '10' } # Sustar Protesto e Baixar Título
|
603
|
+
it { subject.get_codigo_movimento_remessa('11',240).must_equal '11' } # Sustar Protesto e Manter em Carteira
|
604
|
+
it { subject.get_codigo_movimento_remessa('12',240).must_equal '12' } # Alteração de Juros de Mora
|
605
|
+
it { subject.get_codigo_movimento_remessa('13',240).must_equal '13' } # Dispensar Cobrança de Juros de Mora
|
606
|
+
it { subject.get_codigo_movimento_remessa('14',240).must_equal '14' } # Alteração de Valor/Percentual de Multa
|
607
|
+
it { subject.get_codigo_movimento_remessa('15',240).must_equal '15' } # Dispensar Cobrança de Multa
|
608
|
+
it { subject.get_codigo_movimento_remessa('16',240).must_equal '16' } # Alteração do Valor de Desconto
|
609
|
+
it { subject.get_codigo_movimento_remessa('17',240).must_equal '17' } # Não conceder Desconto
|
610
|
+
it { subject.get_codigo_movimento_remessa('18',240).must_equal '18' } # Alteração do Valor de Abatimento
|
611
|
+
it { subject.get_codigo_movimento_remessa('19',240).must_equal '19' } # Prazo Limite de Recebimento – Alterar
|
612
|
+
it { subject.get_codigo_movimento_remessa('20',240).must_equal '20' } # Prazo Limite de Recebimento – Dispensar
|
613
|
+
it { subject.get_codigo_movimento_remessa('21',240).must_equal '21' } # Alterar número do título dado pelo beneficiario
|
614
|
+
it { subject.get_codigo_movimento_remessa('22',240).must_equal '22' } # Alterar número controle do Participante (seu número)
|
615
|
+
it { subject.get_codigo_movimento_remessa('23',240).must_equal '23' } # Alterar dados do Pagador
|
616
|
+
it { subject.get_codigo_movimento_remessa('24',240).must_equal '24' } # Alterar dados do Sacador/Avalista
|
617
|
+
it { subject.get_codigo_movimento_remessa('30',240).must_equal '30' } # Recusa da Alegação do Pagador
|
618
|
+
it { subject.get_codigo_movimento_remessa('31',240).must_equal '31' } # Alteração de Outros Dados
|
619
|
+
it { subject.get_codigo_movimento_remessa('33',240).must_equal '33' } # Alteração dos Dados do Rateio de Crédito
|
620
|
+
it { subject.get_codigo_movimento_remessa('34',240).must_equal '34' } # Pedido de Cancelamento dos Dados do Rateio de Crédito
|
621
|
+
it { subject.get_codigo_movimento_remessa('35',240).must_equal '35' } # Pedido de Desagendamento do Débito Automático
|
622
|
+
it { subject.get_codigo_movimento_remessa('40',240).must_equal '40' } # Alteração de Carteira
|
623
|
+
it { subject.get_codigo_movimento_remessa('41',240).must_equal '41' } # Cancelar protesto
|
624
|
+
it { subject.get_codigo_movimento_remessa('42',240).must_equal '42' } # Alteração de Espécie de Título
|
625
|
+
it { subject.get_codigo_movimento_remessa('43',240).must_equal '43' } # Transferência de carteira/modalidade de cobrança
|
626
|
+
it { subject.get_codigo_movimento_remessa('44',240).must_equal '44' } # Alteração de contrato de cobrança
|
627
|
+
it { subject.get_codigo_movimento_remessa('45',240).must_equal '45' } # Negativação Sem Protesto
|
628
|
+
it { subject.get_codigo_movimento_remessa('46',240).must_equal '46' } # Solicitação de Baixa de Título Negativado Sem Protesto
|
629
|
+
it { subject.get_codigo_movimento_remessa('47',240).must_equal '47' } # Alteração do Valor Nominal do Título
|
630
|
+
it { subject.get_codigo_movimento_remessa('48',240).must_equal '48' } # Alteração do Valor Mínimo/ Percentual
|
631
|
+
it { subject.get_codigo_movimento_remessa('49',240).must_equal '49' } # Alteração do Valor Máximo/Percentua
|
632
|
+
it { subject.get_codigo_movimento_remessa('00', 240).must_equal '31' }
|
633
|
+
end
|
634
|
+
context "CÓDIGOS para o cnab 400" do
|
635
|
+
it { subject.get_codigo_movimento_remessa('01', 400).must_equal '01' } # Registro de títulos / Remessa
|
636
|
+
it { subject.get_codigo_movimento_remessa('02', 400).must_equal '02' } # Pedido de Baixa
|
637
|
+
it { subject.get_codigo_movimento_remessa('03', 400).must_equal '03' } # Pedido de Protesto Falimentar
|
638
|
+
it { subject.get_codigo_movimento_remessa('04', 400).must_equal '04' } # Concessão de abatimento
|
639
|
+
it { subject.get_codigo_movimento_remessa('05', 400).must_equal '05' } # Cancelamento de abatimento concedido
|
640
|
+
it { subject.get_codigo_movimento_remessa('06', 400).must_equal '06' } # Alteração de vencimento
|
641
|
+
it { subject.get_codigo_movimento_remessa('09', 400).must_equal '09' } # Pedido de protesto (Protestar)
|
642
|
+
it { subject.get_codigo_movimento_remessa('22', 400).must_equal '08' } # Alterar número controle do Participante (seu número)
|
643
|
+
it { subject.get_codigo_movimento_remessa('31', 400).must_equal '31' } # Alteração de outros dados
|
644
|
+
it { subject.get_codigo_movimento_remessa('00', 400).must_equal '31' }
|
645
|
+
end
|
646
|
+
end
|
647
|
+
describe "#get_tipo_cobranca_240" do
|
648
|
+
it { subject.get_tipo_cobranca('1', 240).must_equal '1' } # Cobrança Simples
|
649
|
+
it { subject.get_tipo_cobranca('2', 240).must_equal '2' } # Cobrança Vinculada
|
650
|
+
it { subject.get_tipo_cobranca('3', 240).must_equal '3' } # Cobrança Caucionada
|
651
|
+
it { subject.get_tipo_cobranca('4', 240).must_equal '4' } # Cobrança Descontada
|
652
|
+
it { subject.get_tipo_cobranca('5', 240).must_equal '5' } # Cobrança Vendor
|
653
|
+
it { subject.get_tipo_cobranca('00', 240).must_equal '00' }
|
654
|
+
end
|
655
|
+
describe "#get_tipo_cobranca_400" do
|
656
|
+
it { subject.get_tipo_cobranca('1', 400).must_equal '1' } # Cobrança Simples
|
657
|
+
it { subject.get_tipo_cobranca('2', 400).must_equal '2' } # Cobrança Vinculada
|
658
|
+
it { subject.get_tipo_cobranca('3', 400).must_equal '3' } # Cobrança Caucionada
|
659
|
+
it { subject.get_tipo_cobranca('4', 400).must_equal '4' } # Cobrança Descontada
|
660
|
+
it { subject.get_tipo_cobranca('5', 400).must_equal '5' } # Cobrança Vendor
|
661
|
+
it { subject.get_tipo_cobranca('00', 400).must_equal '00' }
|
662
|
+
end
|
663
|
+
describe "#get_identificacao_emissao_240" do
|
664
|
+
it { subject.get_identificacao_emissao('1', 240).must_equal '1' } # Banco Emite
|
665
|
+
it { subject.get_identificacao_emissao('2', 240).must_equal '2' } # Cliente Emite
|
666
|
+
it { subject.get_identificacao_emissao('3', 240).must_equal '3' } # Banco Pré-emite e Cliente Complementa
|
667
|
+
it { subject.get_identificacao_emissao('4', 240).must_equal '4' } # Banco Reemite
|
668
|
+
it { subject.get_identificacao_emissao('5', 240).must_equal '5' } # Banco Não Reemite
|
669
|
+
it { subject.get_identificacao_emissao('7', 240).must_equal '7' } # Banco Emitente - Aberta
|
670
|
+
it { subject.get_identificacao_emissao('8', 240).must_equal '8' } # Banco Emitente - Auto-envelopável
|
671
|
+
it { subject.get_identificacao_emissao('99', 240).must_equal '99' }
|
672
|
+
end
|
673
|
+
describe "#get_identificacao_emissao_400" do
|
674
|
+
it { subject.get_identificacao_emissao('1', 400).must_equal '1' } # Banco Emite
|
675
|
+
it { subject.get_identificacao_emissao('2', 400).must_equal '2' } # Cliente Emite
|
676
|
+
it { subject.get_identificacao_emissao('3', 400).must_equal '3' } # Banco Pré-emite e Cliente Complementa
|
677
|
+
it { subject.get_identificacao_emissao('4', 400).must_equal '4' } # Banco Reemite
|
678
|
+
it { subject.get_identificacao_emissao('5', 400).must_equal '5' } # Banco Não Reemite
|
679
|
+
it { subject.get_identificacao_emissao('7', 400).must_equal '7' } # Banco Emitente - Aberta
|
680
|
+
it { subject.get_identificacao_emissao('8', 400).must_equal '8' } # Banco Emitente - Auto-envelopável
|
681
|
+
it { subject.get_identificacao_emissao('00', 400).must_equal '00' }
|
682
|
+
end
|
683
|
+
describe "#get_distribuicao_boleto" do
|
684
|
+
it { subject.get_distribuicao_boleto('1').must_equal '1' } # Banco Distribui
|
685
|
+
it { subject.get_distribuicao_boleto('2').must_equal '2' } # Cliente Distribui
|
686
|
+
it { subject.get_distribuicao_boleto('3').must_equal '3' } # Banco envia e-mail
|
687
|
+
it { subject.get_distribuicao_boleto('4').must_equal '4' } # Banco envia SMS
|
688
|
+
it { subject.get_distribuicao_boleto('00').must_equal '00' }
|
689
|
+
end
|
690
|
+
describe "#get_tipo_impressao_240" do
|
691
|
+
it { subject.get_tipo_impressao('1', 240).must_equal '1' } # Frente do Bloqueto
|
692
|
+
it { subject.get_tipo_impressao('2', 240).must_equal '2' } # Verso do Bloqueto
|
693
|
+
it { subject.get_tipo_impressao('3', 240).must_equal '3' } # Corpo de Instruções da Ficha de Compensação do Bloqueto
|
694
|
+
it { subject.get_tipo_impressao('7', 240).must_equal '7' } # Outros
|
695
|
+
it { subject.get_tipo_impressao('999', 240).must_equal '999' } # Outros
|
696
|
+
end
|
697
|
+
describe "#get_tipo_impressao_400" do
|
698
|
+
it { subject.get_tipo_impressao('1', 400).must_equal '1' } # Frente do Bloqueto
|
699
|
+
it { subject.get_tipo_impressao('2', 400).must_equal '2' } # Verso do Bloqueto
|
700
|
+
it { subject.get_tipo_impressao('3', 400).must_equal '3' } # Corpo de Instruções da Ficha de Compensação do Bloqueto
|
701
|
+
it { subject.get_tipo_impressao('7', 400).must_equal '7' } # Outros
|
702
|
+
it { subject.get_tipo_impressao('999', 400).must_equal '999' } # Outros
|
703
|
+
end
|
704
|
+
describe "#get_codigo_juros" do
|
705
|
+
it { subject.get_codigo_juros('1').must_equal '1' } # Valor por Dia
|
706
|
+
it { subject.get_codigo_juros('2').must_equal '2' } # Taxa Mensal
|
707
|
+
it { subject.get_codigo_juros('3').must_equal '3' } # Isento
|
708
|
+
it 'se passar um valor inexistente deve pegar o valor padrão' do
|
709
|
+
subject.expects(:default_codigo_juros).returns(8)
|
710
|
+
subject.get_codigo_juros('00').must_equal 8
|
711
|
+
end
|
712
|
+
it '#default_codigo_juros deve ter o valor 3 por padrão' do
|
713
|
+
subject.default_codigo_juros.must_equal '3'
|
714
|
+
end
|
715
|
+
end
|
716
|
+
describe "#get_codigo_multa" do
|
717
|
+
it { subject.get_codigo_multa('1').must_equal '1' } # Valor fixo
|
718
|
+
it { subject.get_codigo_multa('2').must_equal '2' } # Percentual
|
719
|
+
it { subject.get_codigo_multa('3').must_equal '3' } # Isento
|
720
|
+
it { subject.get_codigo_multa('9').must_equal '3' }
|
721
|
+
it 'se passar um valor inexistente deve pegar o valor padrão' do
|
722
|
+
subject.expects(:default_codigo_multa).returns(8)
|
723
|
+
subject.get_codigo_multa('9').must_equal 8
|
724
|
+
end
|
725
|
+
it '#default_codigo_multa deve ter o valor 3 por padrão' do
|
726
|
+
subject.default_codigo_multa.must_equal '3'
|
727
|
+
end
|
728
|
+
end
|
729
|
+
describe "#get_codigo_desconto" do
|
730
|
+
it { subject.get_codigo_desconto('0').must_equal '0' } # Sem Desconto
|
731
|
+
it { subject.get_codigo_desconto('1').must_equal '1' } # Valor Fixo Até a Data Informada
|
732
|
+
it { subject.get_codigo_desconto('2').must_equal '2' } # Percentual Até a Data Informada
|
733
|
+
it { subject.get_codigo_desconto('3').must_equal '3' } # Valor por Antecipação Dia Corrido
|
734
|
+
it { subject.get_codigo_desconto('4').must_equal '4' } # Valor por Antecipação Dia Úti
|
735
|
+
it { subject.get_codigo_desconto('5').must_equal '5' } # Percentual Sobre o Valor Nominal Dia Corrido
|
736
|
+
it { subject.get_codigo_desconto('6').must_equal '6' } # Percentual Sobre o Valor Nominal Dia Útil
|
737
|
+
it { subject.get_codigo_desconto('7').must_equal '7' } # Cancelamento de Desconto
|
738
|
+
it { subject.get_codigo_desconto('55').must_equal '55' }
|
739
|
+
end
|
740
|
+
describe "#get_codigo_protesto" do
|
741
|
+
it { subject.get_codigo_protesto('1').must_equal '1' } # Protestar Dias Corridos
|
742
|
+
it { subject.get_codigo_protesto('2').must_equal '2' } # Protestar Dias Úteis
|
743
|
+
it { subject.get_codigo_protesto('3').must_equal '3' } # Não Protesta
|
744
|
+
it { subject.get_codigo_protesto('4').must_equal '4' } # Protestar Fim Falimentar - Dias Úteis
|
745
|
+
it { subject.get_codigo_protesto('5').must_equal '5' } # Protestar Fim Falimentar - Dias Corridos
|
746
|
+
it { subject.get_codigo_protesto('8').must_equal '8' } # Negativação sem Protesto
|
747
|
+
it { subject.get_codigo_protesto('9').must_equal '9' } # Cancelamento Protesto Automático
|
748
|
+
it { subject.get_codigo_protesto('55').must_equal '55' }
|
749
|
+
end
|
750
|
+
describe "#get_codigo_moeda_240" do
|
751
|
+
it { subject.get_codigo_moeda('01', 240).must_equal '01' } # Reservado para Uso Futuro
|
752
|
+
it { subject.get_codigo_moeda('02', 240).must_equal '02' } # Dólar Americano Comercial (Venda)
|
753
|
+
it { subject.get_codigo_moeda('03', 240).must_equal '03' } # Dólar Americano Turismo (Venda)
|
754
|
+
it { subject.get_codigo_moeda('04', 240).must_equal '04' } # ITRD
|
755
|
+
it { subject.get_codigo_moeda('05', 240).must_equal '05' } # IDTR
|
756
|
+
it { subject.get_codigo_moeda('06', 240).must_equal '06' } # UFIR Diária
|
757
|
+
it { subject.get_codigo_moeda('07', 240).must_equal '07' } # UFIR Mensal
|
758
|
+
it { subject.get_codigo_moeda('08', 240).must_equal '08' } # FAJ - TR
|
759
|
+
it { subject.get_codigo_moeda('09', 240).must_equal '09' } # Real
|
760
|
+
it { subject.get_codigo_moeda('10', 240).must_equal '10' } # TR
|
761
|
+
it { subject.get_codigo_moeda('11', 240).must_equal '11' } # IGPM
|
762
|
+
it { subject.get_codigo_moeda('12', 240).must_equal '12' } # CDI
|
763
|
+
it { subject.get_codigo_moeda('13', 240).must_equal '13' } # Percentual do CDI
|
764
|
+
it { subject.get_codigo_moeda('14', 240).must_equal '14' } # Euro
|
765
|
+
it { subject.get_codigo_moeda('55', 240).must_equal '55' }
|
766
|
+
end
|
767
|
+
describe "#get_codigo_moeda_400" do
|
768
|
+
it { subject.get_codigo_moeda('01', 400).must_equal '01' } # Reservado para Uso Futuro
|
769
|
+
it { subject.get_codigo_moeda('02', 400).must_equal '02' } # Dólar Americano Comercial (Venda)
|
770
|
+
it { subject.get_codigo_moeda('03', 400).must_equal '03' } # Dólar Americano Turismo (Venda)
|
771
|
+
it { subject.get_codigo_moeda('04', 400).must_equal '04' } # ITRD
|
772
|
+
it { subject.get_codigo_moeda('05', 400).must_equal '05' } # IDTR
|
773
|
+
it { subject.get_codigo_moeda('06', 400).must_equal '06' } # UFIR Diária
|
774
|
+
it { subject.get_codigo_moeda('07', 400).must_equal '07' } # UFIR Mensal
|
775
|
+
it { subject.get_codigo_moeda('08', 400).must_equal '08' } # FAJ - TR
|
776
|
+
it { subject.get_codigo_moeda('09', 400).must_equal '09' } # Real
|
777
|
+
it { subject.get_codigo_moeda('10', 400).must_equal '10' } # TR
|
778
|
+
it { subject.get_codigo_moeda('11', 400).must_equal '11' } # IGPM
|
779
|
+
it { subject.get_codigo_moeda('12', 400).must_equal '12' } # CDI
|
780
|
+
it { subject.get_codigo_moeda('13', 400).must_equal '13' } # Percentual do CDI
|
781
|
+
it { subject.get_codigo_moeda('14', 400).must_equal '14' } # Euro
|
782
|
+
it { subject.get_codigo_moeda('55', 400).must_equal '55' }
|
783
|
+
end
|
784
|
+
end
|
490
785
|
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrBoleto::Conta::Bradesco do
|
4
|
+
subject { FactoryGirl.build(:conta_bradesco) }
|
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 '06' " do
|
11
|
+
subject.class.new.carteira.must_equal '06'
|
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::Bradesco.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::Bradesco.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::Bradesco.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 '084'
|
88
|
+
end
|
89
|
+
it "#versao_layout_lote_cnab_240" do
|
90
|
+
subject.versao_layout_lote_cnab_240.must_equal '042'
|
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::Modulo11FatorDe2a9RestoZero.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 Bradesco" 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 Bradesco" 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
|
+
end
|
@@ -8,17 +8,18 @@ describe BrBoleto::Conta::Caixa do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
context "valores padrões" do
|
11
|
-
it "deve setar a carteira com 14'" do
|
11
|
+
it "deve setar a carteira da carteira com 14'" do
|
12
12
|
subject.class.new.carteira.must_equal '14'
|
13
|
-
end
|
13
|
+
end
|
14
14
|
it "deve setar a valid_carteira_required com true" do
|
15
15
|
subject.class.new.valid_carteira_required.must_equal true
|
16
16
|
end
|
17
17
|
it "deve setar a valid_carteira_length com 2" do
|
18
18
|
subject.class.new.valid_carteira_length.must_equal 2
|
19
19
|
end
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
it "deve setar a valid_carteira_inclusion com %w[14 24]" do
|
22
|
+
subject.class.new.valid_carteira_inclusion.must_equal %w[14 24]
|
22
23
|
end
|
23
24
|
it "deve setar a valid_convenio_maximum com 6" do
|
24
25
|
subject.class.new.valid_convenio_maximum.must_equal 6
|
@@ -43,7 +44,7 @@ describe BrBoleto::Conta::Caixa do
|
|
43
44
|
wont_be_message_error(:versao_aplicativo, :custom_length_maximum, {count: 4})
|
44
45
|
end
|
45
46
|
|
46
|
-
context 'Validações padrões da carteira' do
|
47
|
+
context 'Validações padrões da carteira da carteira' do
|
47
48
|
subject { BrBoleto::Conta::Caixa.new }
|
48
49
|
it { must validate_presence_of(:carteira) }
|
49
50
|
it 'Tamanho deve ser de 2' do
|
@@ -52,7 +53,7 @@ describe BrBoleto::Conta::Caixa do
|
|
52
53
|
end
|
53
54
|
it "valores aceitos" do
|
54
55
|
subject.carteira = '04'
|
55
|
-
must_be_message_error(:carteira, :custom_inclusion, {list: '
|
56
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '14, 24'})
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe BrBoleto::Conta::Cecred do
|
4
|
+
subject { FactoryGirl.build(:conta_cecred) }
|
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 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 6 " do
|
29
|
+
subject.class.new.valid_codigo_cedente_maximum.must_equal 6
|
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::Cecred.new }
|
42
|
+
it { must validate_presence_of(:carteira) }
|
43
|
+
it 'Tamanho deve ser de 1' do
|
44
|
+
subject.carteira = '132'
|
45
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 1})
|
46
|
+
end
|
47
|
+
it "valores aceitos" do
|
48
|
+
subject.carteira = '9'
|
49
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '1'})
|
50
|
+
end
|
51
|
+
end
|
52
|
+
context 'Validações padrões da conta_corrente' do
|
53
|
+
subject { BrBoleto::Conta::Cecred.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::Cecred.new }
|
62
|
+
it 'Tamanho deve ter o tamanho maximo de 6' do
|
63
|
+
subject.codigo_cedente = '12345678'
|
64
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 6})
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "codigo do banco" do
|
70
|
+
subject.codigo_banco.must_equal '085'
|
71
|
+
end
|
72
|
+
it '#codigo_banco_dv' do
|
73
|
+
subject.codigo_banco_dv.must_equal '1'
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#nome_banco" do
|
77
|
+
it "valor padrão para o nome_banco" do
|
78
|
+
subject.nome_banco.must_equal 'CECRED'
|
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 '087'
|
88
|
+
end
|
89
|
+
it "#versao_layout_lote_cnab_240" do
|
90
|
+
subject.versao_layout_lote_cnab_240.must_equal '045'
|
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::Modulo11FatorDe2a9.expects(:new).with('0006688').returns(stub(to_s: 5))
|
115
|
+
|
116
|
+
subject.conta_corrente_dv.must_equal 5
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|