require 'rails_helper'

RSpec.describe Contabilidade::ItemDoRetornoBancario, type: :model do
  it{ is_expected.to belong_to(:retorno_bancario) }
	it{ is_expected.to belong_to(:pagamento_do_lote_bancario) }

  describe 'ler_conteudo' do
    before(:each) do
      @item = Contabilidade::ItemDoRetornoBancario.new(conteudo: "23302200000100101RE201215001OB00000005815122020    32000000000000000000012095727001330650000016152GRECA DISTRIBUIDORA DE ASFALTOS LTDA         Av. das Arauc rias, n§ 5126                                      Arauc ria                                    83707000PREMPENHO 15100005 DOC. CX. 15120060      0102351006000139330220000012033       010000002")
      @item.ler_conteudo
    end

    context 'numero_da_ob' do
      it 'retorna OB000000058' do
        expect(@item.numero_da_ob).to eq "OB000000058"
      end
    end

    context 'codigo_da_operacao' do
      it 'retorna 32' do
        expect(@item.codigo_da_operacao).to eq 32
      end
    end

    context 'valor_liquido' do
      it 'retorna 120957.27' do
        expect(@item.valor_liquido).to eq 120957.27
      end
    end

    context 'codigo_do_banco' do
      it 'retorna 1' do
        expect(@item.codigo_do_banco).to eq 1
      end
    end

    context 'agencia_do_favorecido' do
      it 'retorna 3306' do
        expect(@item.agencia_do_favorecido).to eq "3306"
      end
    end

    context 'conta_bancaria_do_favorecido' do
      it 'retorna 0000016152' do
        expect(@item.conta_bancaria_do_favorecido).to eq "0000016152"
      end
    end

    context 'nome_do_favorecido' do
      it 'retorna GRECA DISTRIBUIDORA DE ASFALTOS LTDA' do
        expect(@item.nome_do_favorecido).to eq "GRECA DISTRIBUIDORA DE ASFALTOS LTDA"
      end
    end

    context 'documento_do_favorecido' do
      it 'retorna 02351006000139' do
        expect(@item.documento_do_favorecido).to eq "02351006000139"
      end
    end

    context 'agencia' do
      it 'retorna 33022' do
        expect(@item.agencia).to eq "33022"
      end
    end

    context 'conta_bancaria' do
      it 'retorna 0000012033' do
        expect(@item.conta_bancaria).to eq "0000012033"
      end
    end

    context 'codigo_de_retorno' do
      it 'retorna 1' do
        expect(@item.codigo_de_retorno).to eq 1
      end
    end
  end

  describe 'processar_pagamento' do
    context 'quando é encontrado um pagamento' do
      it 'retorna status confirmado_por_lote_bancario' do
        item = Contabilidade::ItemDoRetornoBancario.new(conteudo: "23302200000100101RE201215001OB00000005815122020    32000000000000000000012095727001330650000016152GRECA DISTRIBUIDORA DE ASFALTOS LTDA         Av. das Arauc rias, n§ 5126                                      Arauc ria                                    83707000PREMPENHO 15100005 DOC. CX. 15120060      0102351006000139330220000012033       010000002")
        contabilidade_pagamento_do_lote_bancario = FactoryBot.create(:contabilidade_pagamento_do_lote_bancario)
        item.numero_da_ob = 'OB' + contabilidade_pagamento_do_lote_bancario.id.to_s.strip.rjust(9, '0')
        item.processar_pagamento
        expect(contabilidade_pagamento_do_lote_bancario.reload.conta_bancaria_por_pagamento.pagamento.status).to eq "confirmado_por_lote_bancario"
      end
    end
  end
end
