spec/brcobranca/remessa/cnab240/sicoob_spec.rb in brcobranca-8.0.0 vs spec/brcobranca/remessa/cnab240/sicoob_spec.rb in brcobranca-9.0.0
- old
+ new
@@ -1,33 +1,35 @@
# -*- encoding: utf-8 -*-
-#
-
require 'spec_helper'
RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
let(:pagamento) do
Brcobranca::Remessa::Pagamento.new(
valor: 50.0,
data_vencimento: Date.current,
- nosso_numero: '00000012',
+ nosso_numero: '429715',
+ documento: 6969,
documento_sacado: '82136760505',
nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
bairro_sacado: 'São josé dos quatro apostolos magros',
cep_sacado: '12345678',
cidade_sacado: 'Santa rita de cássia maria da silva',
- uf_sacado: 'RJ'
+ uf_sacado: 'RJ',
+ tipo_mora: '0',
+ codigo_protesto: '1'
)
end
let(:params) do
{
empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
agencia: '4327',
conta_corrente: '03666',
documento_cedente: '74576177000177',
modalidade_carteira: '01',
+ convenio: '512231',
pagamentos: [pagamento]
}
end
let(:sicoob) { subject.class.new(params) }
@@ -47,18 +49,34 @@
expect(objeto.invalid?).to be true
expect(objeto.errors.full_messages).to include('Tipo formulario não pode estar em branco.')
end
end
+ context '@parcela' do
+ it 'deve ser invalido se nao possuir a parcela' do
+ objeto = subject.class.new(params.merge(parcela: nil))
+ expect(objeto.invalid?).to be true
+ expect(objeto.errors.full_messages).to include('Parcela não pode estar em branco.')
+ end
+ end
+
context '@agencia' do
it 'deve ser invalido se a agencia tiver mais de 4 digitos' do
sicoob.agencia = '12345'
expect(sicoob.invalid?).to be true
expect(sicoob.errors.full_messages).to include('Agencia deve ter 4 dígitos.')
end
end
+ context '@convenio' do
+ it 'deve ser invalido se nao possuir o convenio' do
+ sicoob.convenio = nil
+ expect(sicoob.invalid?).to be true
+ expect(sicoob.errors.full_messages).to include('Convenio não pode estar em branco.')
+ end
+ end
+
context '@conta_corrente' do
it 'deve ser invalido se a conta corrente tiver mais de 8 digitos' do
sicoob.conta_corrente = '123456789'
expect(sicoob.invalid?).to be true
expect(sicoob.errors.full_messages).to include('Conta corrente deve ter 8 dígitos.')
@@ -92,11 +110,36 @@
#
# 4 3 2 1
# x 9 8 7 6
# = 36 24 14 6 = 80
# 80 / 11 = 7 com resto 3
- expect(sicoob.digito_agencia).to eq '3'
+ expected_digito_agencia_list = [
+ { agencia: "3214", dv: "0" },
+ { agencia: "2006", dv: "0" },
+ { agencia: "5651", dv: "0" },
+ { agencia: "5691", dv: "0" },
+ { agencia: "5741", dv: "0" },
+ { agencia: "1008", dv: "1" },
+ { agencia: "5681", dv: "2" },
+ { agencia: "5731", dv: "2" },
+ { agencia: "4327", dv: "3" },
+ { agencia: "1001", dv: "4" },
+ { agencia: "5761", dv: "4" },
+ { agencia: "3032", dv: "5" },
+ { agencia: "5671", dv: "5" },
+ { agencia: "5631", dv: "6" },
+ { agencia: "1005", dv: "7" },
+ { agencia: "5661", dv: "8" },
+ { agencia: "0001", dv: "9" },
+ { agencia: "5621", dv: "9" },
+ ]
+
+ expected_digito_agencia_list.each do |expected_dv_agencia|
+ remessa_params = params.merge!(agencia: expected_dv_agencia[:agencia])
+ remessa = subject.class.new(remessa_params)
+ expect(remessa.digito_agencia).to eq expected_dv_agencia[:dv]
+ end
end
it 'deve calcular digito da conta' do
# digito calculado a partir do modulo 11 com base 9
#
@@ -124,51 +167,27 @@
it 'complemento header deve retornar espacos em branco' do
expect(sicoob.complemento_header).to eq ''.rjust(29, ' ')
end
- it 'complemento trailer deve retornar espacos em branco' do
- expect(sicoob.complemento_trailer).to eq ''.rjust(117, ' ')
+ it 'complemento trailer deve retornar espacos em branco com a totalização das cobranças' do
+ total_cobranca_simples = "00000100000000000005000"
+ total_cobranca_vinculada = "".rjust(23, "0")
+ total_cobranca_caucionada = "".rjust(23, "0")
+ total_cobranca_descontada = "".rjust(23, "0")
+
+ expect(sicoob.complemento_trailer).to eq "#{total_cobranca_simples}#{total_cobranca_vinculada}"\
+ "#{total_cobranca_caucionada}#{total_cobranca_descontada}".ljust(217, ' ')
end
it 'formata o nosso numero' do
- nosso_numero = sicoob.formata_nosso_numero pagamento
- expect(nosso_numero).to eq '000000001201014 '
+ nosso_numero = sicoob.formata_nosso_numero 1
+ expect(nosso_numero).to eq "000000000101014 "
end
end
context 'geracao remessa' do
it_behaves_like 'cnab240'
-
- context 'trailer lote' do
- it 'trailer lote deve ter as informacoes nas posicoes corretas' do
- trailer = sicoob.monta_trailer_lote 1, 4
- expect(trailer[0..2]).to eq sicoob.cod_banco # cod. do banco
- expect(trailer[3..6]).to eq '0001' # numero do lote
- expect(trailer[17..22]).to eq '000004' # qtde de registros no lote
- # qtde de titulos em cobranca simples 6
- # Valor Total dos titulos em carteiras simples 15 2
- expect(trailer[23..28]).to eq '000001'
- expect(trailer[29..45]).to eq '00000000000005000'
-
- # qtde de titulos em cobranca vinculada 6
- # Valor Total dos titulos em carteiras vinculada 15 2
- expect(trailer[46..51]).to eq '000000'
- expect(trailer[52..68]).to eq '00000000000000000'
- # qtde de titulos em cobranca caucionada 6
- # Valor Total dos titulos em carteiras caucionada 15 2
- expect(trailer[69..74]).to eq '000000'
- expect(trailer[75..91]).to eq '00000000000000000'
- # qtde de titulos em cobranca descontada 6
- # Valor Total dos titulos em carteiras descontada 15 2
- expect(trailer[92..97]).to eq '000000'
- expect(trailer[98..114]).to eq '00000000000000000'
- # numero do aviso de lancamento 8
- expect(trailer[115..122]).to eq ''.rjust(8, ' ')
- # CNAB Uso Exclusivo FEBRABAN/CNAB 117
- expect(trailer[123..239]).to eq sicoob.complemento_trailer
- end
- end
context 'arquivo' do
before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
after { Timecop.return }