spec/brcobranca/remessa/cnab240/caixa_spec.rb in brcobranca-8.0.0 vs spec/brcobranca/remessa/cnab240/caixa_spec.rb in brcobranca-9.0.0

- old
+ new

@@ -1,50 +1,42 @@ # -*- encoding: utf-8 -*- -# - require 'spec_helper' RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do + before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) } + after { Timecop.return } + let(:pagamento) do Brcobranca::Remessa::Pagamento.new(valor: 199.9, - data_vencimento: Date.current, - nosso_numero: 123, - documento_sacado: '12345678901', - 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: 'SP') + data_vencimento: Date.current, + nosso_numero: 123, + numero: 123, + documento: 6969, + documento_sacado: '12345678901', + 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', + tipo_mora: "1", + codigo_multa: "2", + uf_sacado: 'SP') end let(:params) do { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA', agencia: '12345', conta_corrente: '1234', + versao_aplicativo: '1234', documento_cedente: '12345678901', convenio: '123456', - versao_aplicativo: '1234', digito_agencia: '1', + sequencial_remessa: '000001', pagamentos: [pagamento] } end let(:caixa) { subject.class.new(params) } context 'validacoes' do - context '@versao_aplicativo' do - it 'deve ser invalido se nao possuir a versao do aplicativo' do - objeto = subject.class.new(params.merge!(versao_aplicativo: nil)) - expect(objeto.invalid?).to be true - expect(objeto.errors.full_messages).to include('Versao aplicativo não pode estar em branco.') - end - - it 'deve ser invalido se a versao do aplicativo tiver mais de 4 digitos' do - caixa.versao_aplicativo = '12345' - expect(caixa.invalid?).to be true - expect(caixa.errors.full_messages).to include('Versao aplicativo não deve ter mais de 4 dígitos.') - end - end - context '@digito_agencia' do it 'deve ser invalido se nao possuir o digito da agencia' do objeto = subject.class.new(params.merge!(digito_agencia: nil)) expect(objeto.invalid?).to be true expect(objeto.errors.full_messages).to include('Digito agencia não pode estar em branco.') @@ -65,11 +57,11 @@ end it 'deve ser invalido se o convenio tiver mais de 6 digitos' do caixa.convenio = '1234567' expect(caixa.invalid?).to be true - expect(caixa.errors.full_messages).to include('Convenio não deve ter mais de 6 dígitos.') + expect(caixa.errors.full_messages).to include('Convenio deve ter 6 dígitos.') end end context '@modalidade_carteira' do it 'padrao da modalidade deve ser 14' do @@ -108,11 +100,11 @@ end it 'convenio lote deve retornar as informacoes nas posicoes corretas' do conv_lote = caixa.convenio_lote expect(conv_lote[0..5]).to eq '123456' - expect(conv_lote[6..19]).to eq ''.rjust(14, ' ') + expect(conv_lote[6..19]).to eq ''.rjust(14, '0') end it 'info_conta deve retornar as informacoes nas posicoes corretas' do info_conta = caixa.info_conta expect(info_conta[0..4]).to eq '12345' # agencia @@ -138,25 +130,34 @@ expect(comp_p.size).to eq 34 expect(comp_p[0..5]).to eq '123456' # convenio expect(comp_p[17..18]).to eq '14' # modalidade carteira expect(comp_p[19..33]).to eq '000000000000123' # nosso numero end + + it 'tipo do documento deve ser 2 - Escritural' do + expect(caixa.tipo_documento).to eq '2' + end + + it 'deve conter a identificacao do titulo da empresa' do + segmento_p = caixa.monta_segmento_p(pagamento, 1, 2) + expect(segmento_p[195..205]).to eq "00000006969" + end + + it 'data da mora deve ser no dia posterior ao vencimento' do + segmento_p = caixa.monta_segmento_p(pagamento, 1, 2) + expect(segmento_p[118..125]).to eq "15072015" + end + + it 'data da multa deve ser no dia posterior ao vencimento' do + segmento_r = caixa.monta_segmento_r(pagamento, 1, 4) + expect(segmento_r[66..73]).to eq "15072015" + end end context 'geracao remessa' do it_behaves_like 'cnab240' - context 'trailer lote' do - it 'trailer lote deve ter o complemento_trailer na posicao correta' do - trailer = caixa.monta_trailer_lote 1, 4 - expect(trailer[23..239]).to eq caixa.complemento_trailer # complemento do registro trailer - end - end - context 'arquivo' do - before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) } - after { Timecop.return } - it { expect(caixa.gera_arquivo).to eq(read_remessa('remessa-caixa-cnab240.rem', caixa.gera_arquivo)) } end end end