spec/brcobranca/remessa/cnab400/santander_spec.rb in brcobranca-6.0.1 vs spec/brcobranca/remessa/cnab400/santander_spec.rb in brcobranca-6.1.0

- old
+ new

@@ -2,42 +2,42 @@ require 'spec_helper' RSpec.describe Brcobranca::Remessa::Cnab400::Santander do let(:pagamento) do Brcobranca::Remessa::Pagamento.new(valor: 199.9, - data_vencimento: Date.today, - nosso_numero: 123, - documento_sacado: '12345678901', - nome_sacado: 'nome', - endereco_sacado: 'endereco', - bairro_sacado: 'bairro', - cep_sacado: '12345678', - cidade_sacado: 'cidade', - uf_sacado: 'SP') + data_vencimento: Date.today, + 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') end let(:params) do { codigo_transmissao: '17777751042700080112', - empresa_mae: 'asd', + empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA', documento_cedente: '12345678910', pagamentos: [pagamento] } end - let(:santander_cnab400) { subject.class.new(params) } + let(:santander) { subject.class.new(params) } context 'validacoes dos campos' do context '@carteira' do it 'deve ser invalido se nao possuir uma carteira' do object = subject.class.new(params.merge!(carteira: nil)) expect(object.invalid?).to be true expect(object.errors.full_messages).to include('Carteira não pode estar em branco.') end it 'deve ser invalido se a carteira tiver mais de 3 digitos' do - santander_cnab400.carteira = '12345' - expect(santander_cnab400.invalid?).to be true - expect(santander_cnab400.errors.full_messages).to include('Carteira deve ter no máximo 3 dígitos.') + santander.carteira = '12345' + expect(santander.invalid?).to be true + expect(santander.errors.full_messages).to include('Carteira deve ter no máximo 3 dígitos.') end end context '@documento_cedente' do it 'deve ser invalido se nao possuir o documento cedente' do @@ -45,13 +45,13 @@ expect(object.invalid?).to be true expect(object.errors.full_messages).to include('Documento cedente não pode estar em branco.') end it 'deve ser invalido se o documento do cedente nao tiver entre 11 e 14 digitos' do - santander_cnab400.documento_cedente = '123' - expect(santander_cnab400.invalid?).to be true - expect(santander_cnab400.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.') + santander.documento_cedente = '123' + expect(santander.invalid?).to be true + expect(santander.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.') end end context '@codigo_transmissao' do it 'deve ser invalido se nao possuir o codigo_transmissao' do @@ -59,58 +59,65 @@ expect(object.invalid?).to be true expect(object.errors.full_messages).to include('Codigo transmissao não pode estar em branco.') end it 'deve ser invalido se o deve ter no máximo 20 dígitos.' do - santander_cnab400.codigo_transmissao = '123456789012345678901' - expect(santander_cnab400.invalid?).to be true - expect(santander_cnab400.errors.full_messages).to include('Codigo transmissao deve ter no máximo 20 dígitos.') + santander.codigo_transmissao = '123456789012345678901' + expect(santander.invalid?).to be true + expect(santander.errors.full_messages).to include('Codigo transmissao deve ter no máximo 20 dígitos.') end end end context 'formatacoes dos valores' do it 'cod_banco deve ser 341' do - expect(santander_cnab400.cod_banco).to eq '033' + expect(santander.cod_banco).to eq '033' end it 'nome_banco deve ser SANTANDER' do - nome_banco = santander_cnab400.nome_banco + nome_banco = santander.nome_banco expect(nome_banco.strip).to eq 'SANTANDER' end it 'complemento deve retornar 294 caracteres' do - expect(santander_cnab400.complemento.size).to eq 294 + expect(santander.complemento.size).to eq 294 end it 'info_conta deve retornar com 20 posicoes as informacoes da conta' do - info_conta = santander_cnab400.info_conta + info_conta = santander.info_conta expect(info_conta.size).to eq 20 - expect(info_conta[0..19]).to eq '17777751042700080112' # codigo_transmissao + expect(info_conta[0..19]).to eq '17777751042700080112' # codigo_transmissao end end context 'monta remessa' do it_behaves_like 'cnab400' context 'header' do it 'informacoes devem estar posicionadas corretamente no header' do - header = santander_cnab400.monta_header - expect(header[1]).to eq '1' # tipo operacao (1 = remessa) - expect(header[2..8]).to eq 'REMESSA' # literal da operacao - expect(header[26..45]).to eq santander_cnab400.info_conta # informacoes da conta - expect(header[76..78]).to eq '033' # codigo do banco + header = santander.monta_header + expect(header[1]).to eq '1' # tipo operacao (1 = remessa) + expect(header[2..8]).to eq 'REMESSA' # literal da operacao + expect(header[26..45]).to eq santander.info_conta # informacoes da conta + expect(header[76..78]).to eq '033' # codigo do banco end end context 'detalhe' do it 'informacoes devem estar posicionadas corretamente no detalhe' do - detalhe = santander_cnab400.monta_detalhe pagamento, 1 - expect(detalhe[62..69]).to eq '00000123' # nosso numero - expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento - expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo - expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador - expect(detalhe[234..263]).to eq 'NOME'.ljust(30, ' ') # nome do pagador + detalhe = santander.monta_detalhe pagamento, 1 + expect(detalhe[62..69]).to eq '00000123' # nosso numero + expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento + expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo + expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador + expect(detalhe[234..263]).to eq 'PABLO DIEGO JOSE FRANCISCO DE ' # nome do pagador end + end + + context 'arquivo' do + before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) } + after { Timecop.return } + + it { expect(santander.gera_arquivo).to eq(read_remessa('remessa-santander-cnab400.rem', santander.gera_arquivo)) } end end end