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.
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