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.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.travis.yml +1 -1
  4. data/Gemfile.lock +2 -2
  5. data/br_boleto.gemspec +2 -3
  6. data/lib/br_boleto/association/have_conta.rb +27 -25
  7. data/lib/br_boleto/association/have_pagador.rb +2 -0
  8. data/lib/br_boleto/boleto/base.rb +0 -4
  9. data/lib/br_boleto/boleto/bradesco.rb +80 -0
  10. data/lib/br_boleto/boleto/caixa.rb +10 -12
  11. data/lib/br_boleto/boleto/cecred.rb +76 -0
  12. data/lib/br_boleto/boleto/itau.rb +114 -0
  13. data/lib/br_boleto/boleto/sicredi.rb +101 -0
  14. data/lib/br_boleto/boleto/unicred.rb +21 -0
  15. data/lib/br_boleto/conta/base.rb +28 -3
  16. data/lib/br_boleto/conta/bradesco.rb +120 -0
  17. data/lib/br_boleto/conta/caixa.rb +22 -12
  18. data/lib/br_boleto/conta/cecred.rb +67 -0
  19. data/lib/br_boleto/conta/itau.rb +199 -0
  20. data/lib/br_boleto/conta/sicoob.rb +40 -11
  21. data/lib/br_boleto/conta/sicredi.rb +171 -0
  22. data/lib/br_boleto/conta/unicred.rb +38 -0
  23. data/lib/br_boleto/helper/default_codes.rb +535 -26
  24. data/lib/br_boleto/pagador.rb +4 -0
  25. data/lib/br_boleto/remessa/base.rb +2 -0
  26. data/lib/br_boleto/remessa/cnab240/base.rb +21 -6
  27. data/lib/br_boleto/remessa/cnab240/bradesco.rb +141 -0
  28. data/lib/br_boleto/remessa/cnab240/caixa.rb +8 -1
  29. data/lib/br_boleto/remessa/cnab240/cecred.rb +169 -0
  30. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +29 -21
  31. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +4 -3
  32. data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +5 -5
  33. data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +4 -3
  34. data/lib/br_boleto/remessa/cnab240/itau.rb +186 -0
  35. data/lib/br_boleto/remessa/cnab240/sicoob.rb +4 -16
  36. data/lib/br_boleto/remessa/cnab240/sicredi.rb +205 -0
  37. data/lib/br_boleto/remessa/cnab240/unicred.rb +40 -0
  38. data/lib/br_boleto/remessa/cnab400/bradesco.rb +235 -0
  39. data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +6 -5
  40. data/lib/br_boleto/remessa/cnab400/itau.rb +190 -0
  41. data/lib/br_boleto/remessa/cnab400/sicoob.rb +3 -3
  42. data/lib/br_boleto/remessa/cnab400/sicredi.rb +276 -0
  43. data/lib/br_boleto/remessa/cnab400/unicred.rb +62 -0
  44. data/lib/br_boleto/remessa/pagamento.rb +93 -43
  45. data/lib/br_boleto/retorno/cnab240/base.rb +13 -12
  46. data/lib/br_boleto/retorno/cnab240/bradesco.rb +10 -0
  47. data/lib/br_boleto/retorno/cnab240/caixa.rb +2 -3
  48. data/lib/br_boleto/retorno/cnab240/cecred.rb +10 -0
  49. data/lib/br_boleto/retorno/cnab240/itau.rb +24 -0
  50. data/lib/br_boleto/retorno/cnab240/sicredi.rb +10 -0
  51. data/lib/br_boleto/retorno/cnab240/unicred.rb +10 -0
  52. data/lib/br_boleto/retorno/cnab400/bradesco.rb +42 -0
  53. data/lib/br_boleto/retorno/cnab400/itau.rb +43 -0
  54. data/lib/br_boleto/retorno/cnab400/sicoob.rb +2 -2
  55. data/lib/br_boleto/retorno/cnab400/sicredi.rb +43 -0
  56. data/lib/br_boleto/retorno/cnab400/unicred.rb +10 -0
  57. data/lib/br_boleto/retorno/pagamento.rb +18 -4
  58. data/lib/br_boleto/version.rb +2 -2
  59. data/lib/br_boleto.rb +28 -0
  60. data/lib/config/locales/br-boleto-en.yml +1 -0
  61. data/lib/config/locales/br-boleto-pt-BR.yml +1 -0
  62. data/test/br_boleto/association/have_pagador_test.rb +24 -0
  63. data/test/br_boleto/boleto/bradesco_test.rb +125 -0
  64. data/test/br_boleto/boleto/caixa_test.rb +18 -18
  65. data/test/br_boleto/boleto/cecred_test.rb +115 -0
  66. data/test/br_boleto/boleto/itau_test.rb +160 -0
  67. data/test/br_boleto/boleto/sicredi_test.rb +136 -0
  68. data/test/br_boleto/boleto/unicred_test.rb +128 -0
  69. data/test/br_boleto/conta/base_test.rb +298 -3
  70. data/test/br_boleto/conta/bradesco_test.rb +142 -0
  71. data/test/br_boleto/conta/caixa_test.rb +7 -6
  72. data/test/br_boleto/conta/cecred_test.rb +119 -0
  73. data/test/br_boleto/conta/itau_test.rb +189 -0
  74. data/test/br_boleto/conta/sicoob_test.rb +32 -2
  75. data/test/br_boleto/conta/sicredi_test.rb +180 -0
  76. data/test/br_boleto/conta/unicred_test.rb +154 -0
  77. data/test/br_boleto/pagador_test.rb +22 -2
  78. data/test/br_boleto/remessa/cnab240/base_test.rb +24 -12
  79. data/test/br_boleto/remessa/cnab240/bradesco_test.rb +196 -0
  80. data/test/br_boleto/remessa/cnab240/caixa_test.rb +51 -0
  81. data/test/br_boleto/remessa/cnab240/cecred_test.rb +242 -0
  82. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +78 -71
  83. data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +4 -3
  84. data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +10 -18
  85. data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +6 -5
  86. data/test/br_boleto/remessa/cnab240/itau_test.rb +201 -0
  87. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +1 -58
  88. data/test/br_boleto/remessa/cnab240/sicredi_test.rb +207 -0
  89. data/test/br_boleto/remessa/cnab240/unicred_test.rb +250 -0
  90. data/test/br_boleto/remessa/cnab400/base_test.rb +4 -4
  91. data/test/br_boleto/remessa/cnab400/bradesco_test.rb +164 -0
  92. data/test/br_boleto/remessa/cnab400/itau_test.rb +173 -0
  93. data/test/br_boleto/remessa/cnab400/sicoob_test.rb +2 -2
  94. data/test/br_boleto/remessa/cnab400/sicredi_test.rb +241 -0
  95. data/test/br_boleto/remessa/cnab400/unicred_test.rb +169 -0
  96. data/test/br_boleto/retorno/cnab240/base_test.rb +20 -10
  97. data/test/br_boleto/retorno/cnab240/bradesco_test.rb +228 -0
  98. data/test/br_boleto/retorno/cnab240/caixa_test.rb +20 -10
  99. data/test/br_boleto/retorno/cnab240/cecred_test.rb +228 -0
  100. data/test/br_boleto/retorno/cnab240/itau_test.rb +228 -0
  101. data/test/br_boleto/retorno/cnab240/sicoob_test.rb +20 -10
  102. data/test/br_boleto/retorno/cnab240/sicredi_test.rb +228 -0
  103. data/test/br_boleto/retorno/cnab240/unicred_test.rb +228 -0
  104. data/test/br_boleto/retorno/cnab400/bradesco_test.rb +255 -0
  105. data/test/br_boleto/retorno/cnab400/itau_test.rb +96 -0
  106. data/test/br_boleto/retorno/cnab400/sicoob_test.rb +10 -5
  107. data/test/br_boleto/retorno/cnab400/sicredi_test.rb +7 -0
  108. data/test/br_boleto/retorno/cnab400/unicred.rb +255 -0
  109. data/test/br_boleto/retorno/pagamento_test.rb +7 -0
  110. data/test/factories/boleto/boleto_bradesco.rb +18 -0
  111. data/test/factories/boleto/boleto_cecred.rb +18 -0
  112. data/test/factories/boleto/boleto_itau.rb +18 -0
  113. data/test/factories/boleto/boleto_sicredi.rb +18 -0
  114. data/test/factories/boleto/boleto_unicred.rb +18 -0
  115. data/test/factories/conta/bradesco.rb +16 -0
  116. data/test/factories/conta/caixa.rb +2 -1
  117. data/test/factories/conta/cecred.rb +15 -0
  118. data/test/factories/conta/itau.rb +15 -0
  119. data/test/factories/conta/sicoob.rb +2 -1
  120. data/test/factories/conta/sicredi.rb +15 -0
  121. data/test/factories/conta/unicred.rb +15 -0
  122. data/test/factories/remessa/cnab240/bradesco.rb +9 -0
  123. data/test/factories/remessa/cnab240/cecred.rb +9 -0
  124. data/test/factories/remessa/cnab240/itau.rb +9 -0
  125. data/test/factories/remessa/cnab240/sicredi.rb +9 -0
  126. data/test/factories/remessa/cnab240/unicred.rb +9 -0
  127. data/test/factories/remessa/cnab400/bradesco.rb +8 -0
  128. data/test/factories/remessa/cnab400/itau.rb +8 -0
  129. data/test/factories/remessa/cnab400/sicredi.rb +8 -0
  130. data/test/factories/remessa/cnab400/unicred.rb +8 -0
  131. data/test/fixtures/remessa/cnab240/caixa.rem +8 -0
  132. data/test/fixtures/remessa/cnab240/cecred.rem +8 -0
  133. data/test/fixtures/remessa/cnab240/sicoob.rem +8 -8
  134. data/test/fixtures/remessa/cnab240/unicred.rem +7 -0
  135. data/test/fixtures/retorno/cnab400/bradesco.ret +8 -0
  136. data/test/fixtures/retorno/cnab400/itau.ret +54 -0
  137. 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(9)
429
- subject.agencia_codigo_cedente.must_equal '956781 / 9'
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
- it "deve setar a valid_carteira_inclusion com %w[11 14 21]" do
21
- subject.class.new.valid_carteira_inclusion.must_equal %w[11 14 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: '11, 14, 21'})
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