<commit_before># encoding: utf-8
require 'spec_helper'

module BoletoBancario
  module Core
    describe BancoBrasil do
      it_should_behave_like 'boleto bancario'

      describe "on validations" do
        context "#agencia" do
          it { should have_valid(:agencia).when('123', '1234') }
          it { should_not have_valid(:agencia).when('12345', '123456', nil, '') }
        end

        context "#conta_corrente" do
          it { should have_valid(:conta_corrente).when('12345678', '12345', '1234') }
          it { should_not have_valid(:conta_corrente).when('123456789', nil, '') }
        end

        context "#codigo_cedente" do
          it { should have_valid(:codigo_cedente).when('1234', '123456', '1234567', '12345678') }
          it { should_not have_valid(:codigo_cedente).when('123', '1', '12', nil, '') }
        end

        context "#carteira" do
          it { should have_valid(:carteira).when('12', '16', '17', '18', 12, 18) }
          it { should_not have_valid(:carteira).when(nil, '', '5', '20', '100', 14, 19) }
        end

        context "when 'carteira' is 16 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 16, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('1234', '12345', '12345', '12345678911234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '123456789112345678') }
        end

        context "when 'carteira' is 18 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 18, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('1234', '12345', '12345678911234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '1234567', '123456789112345678') }
        end

        context "when 'carteira' is 12 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 12, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('12345', '1234') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '12345678911234567') }
        end

        context "when 'codigo_cedente' 4 digits" do
          subject { BancoBrasil.new(codigo_cedente: 1234) }

          it { should have_valid(:numero_documento).when('123', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '12345678', '12345678911234567') }
        end

        context "when 'codigo_cedente' 7 digits" do
          subject { BancoBrasil.new(codigo_cedente: 1234567) }

          it { should have_valid(:numero_documento).when('1234567890', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '12345678901', '12345678911234567') }
        end

        context "when 'codigo_cedente' 8 digits" do
          subject { BancoBrasil.new(codigo_cedente: 12345678) }

          it { should have_valid(:numero_documento).when('123456789', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '1234567890', '12345678911234567') }
        end
      end

      describe "#agencia" do
        context "when have a value" do
          subject { BancoBrasil.new(:agencia => '001') }

          its(:agencia) { should eq '0001' }
        end

        context "when is nil" do
          subject { BancoBrasil.new(:agencia => nil) }

          its(:agencia) { should be nil }
        end
      end

      describe "#conta_corrente" do
        context "when have a value" do
          subject { BancoBrasil.new(:conta_corrente => 913) }

          its(:conta_corrente) { should eq '00000913' }
        end<commit_msg>Test to 'numero_documento' when 'codigo_cedente' unsupported.<commit_after># encoding: utf-8
require 'spec_helper'

module BoletoBancario
  module Core
    describe BancoBrasil do
      it_should_behave_like 'boleto bancario'

      describe "on validations" do
        context "#agencia" do
          it { should have_valid(:agencia).when('123', '1234') }
          it { should_not have_valid(:agencia).when('12345', '123456', nil, '') }
        end

        context "#conta_corrente" do
          it { should have_valid(:conta_corrente).when('12345678', '12345', '1234') }
          it { should_not have_valid(:conta_corrente).when('123456789', nil, '') }
        end

        context "#codigo_cedente" do
          it { should have_valid(:codigo_cedente).when('1234', '123456', '1234567', '12345678') }
          it { should_not have_valid(:codigo_cedente).when('123', '1', '12', nil, '') }
        end

        context "#carteira" do
          it { should have_valid(:carteira).when('12', '16', '17', '18', 12, 18) }
          it { should_not have_valid(:carteira).when(nil, '', '5', '20', '100', 14, 19) }
        end

        context "when 'carteira' is 16 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 16, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('1234', '12345', '12345', '12345678911234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '123456789112345678') }
        end

        context "when 'carteira' is 18 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 18, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('1234', '12345', '12345678911234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '1234567', '123456789112345678') }
        end

        context "when 'carteira' is 12 and 'codigo_cedente' 6 digits" do
          subject { BancoBrasil.new(carteira: 12, codigo_cedente: 123456) }

          it { should have_valid(:numero_documento).when('12345', '1234') }
          it { should_not have_valid(:numero_documento).when(nil, '', '123456', '12345678911234567') }
        end

        context "when 'codigo_cedente' 4 digits" do
          subject { BancoBrasil.new(codigo_cedente: 1234) }

          it { should have_valid(:numero_documento).when('123', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '12345678', '12345678911234567') }
        end

        context "when 'codigo_cedente' 7 digits" do
          subject { BancoBrasil.new(codigo_cedente: 1234567) }

          it { should have_valid(:numero_documento).when('1234567890', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '12345678901', '12345678911234567') }
        end

        context "when 'codigo_cedente' 8 digits" do
          subject { BancoBrasil.new(codigo_cedente: 12345678) }

          it { should have_valid(:numero_documento).when('123456789', '1235', '1234567') }
          it { should_not have_valid(:numero_documento).when(nil, '', '1234567890', '12345678911234567') }
        end

        context "when 'codigo_cedente' unsupported" do
          subject { BancoBrasil.new(codigo_cedente: 12345) }

          it { should have_valid(:numero_documento).when('123456789', '1235', '1234567', '1234567890', '12345678911234567') }
          it { should_not have_valid(:numero_documento).when(nil, '') }
        end
      end

      describe "#agencia" do
        context "when have a value" do
          subject { BancoBrasil.new(:agencia => '001') }

          its(:agencia) { should eq '0001' }
        end

        context "when is nil" do
          subject { BancoBrasil.new(:agencia => nil) }

          its(:agencia) { should be nil }
        end
      end

      describe "#conta_corrente" do
        context "when have a value" do
          subject { BancoBrasil.new(:conta_corrente => 913) }

          its(:conta_corrente) { should eq '00000913' }
        end
{'fraction_non_alphanumeric': 0.13402061855670103, 'fraction_numerical': 0.12268041237113401, 'mean_word_length': 2.842079207920792, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4902723', 'n_tokens_mistral': 3247, 'n_tokens_neox': 2501, 'n_words': 561}