Skip to content

Commit

Permalink
test: validate 3 basic types of boletos
Browse files Browse the repository at this point in the history
  • Loading branch information
edniemeyer committed Jul 10, 2020
1 parent a3a1f0d commit fcf1bf2
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 4 deletions.
6 changes: 4 additions & 2 deletions src/boleto-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ exports.identificarData = (codigo, tipoCodigo) => {
dataBoleto.setFullYear(1997);
dataBoleto.setMonth(9);
dataBoleto.setDate(7);
dataBoleto.setHours(23, 54, 59);
dataBoleto.setHours(23, 54, 59, 0);

if (tipoCodigo === 'CODIGO_DE_BARRAS') {
if (tipoBoleto == 'BANCO' || tipoBoleto == 'CARTAO_DE_CREDITO') {
Expand All @@ -157,9 +157,11 @@ exports.identificarData = (codigo, tipoCodigo) => {
fatorData = '0';
}
}

dataBoleto.setDate(dataBoleto.getDate() + Number(fatorData));
dataBoleto.setTime(dataBoleto.getTime() + dataBoleto.getTimezoneOffset() - (3) * 60 * 60 * 1000);
dataBoleto.setMilliseconds(0);


return dataBoleto;
}
Expand Down
68 changes: 66 additions & 2 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const expect = require('chai').expect;
const { expect, assert } = require('chai');
const boleto = require('../src/boleto-utils')

describe('Boleto Inválido', function () {
Expand All @@ -10,12 +10,76 @@ describe('Boleto Inválido', function () {
describe('Fora do limite de caracteres', function () {
it('deve retornar Objeto com {sucesso: false}', function () {
expect(boleto.validarBoleto('1234')).to.have.property('sucesso').to.be.false;
expect(
boleto.validarBoleto('123482938102381039810293810938093819023810982309182301238109238109328091')
).to.have.property('sucesso').to.be.false;
});
});
});


describe('Boleto Válido', function () {
describe('Boletos de 5 campos', function () {
describe('Boleto Bancário', function () {
describe('Código de barras', function () {
it('deve retornar Objeto com informações do boleto', function () {
result = boleto.validarBoleto('10499898100000214032006561000100040099726390')
expect(result).to.have.property('sucesso').to.be.true;
expect(result).to.have.property('mensagem').to.equal('Boleto válido');
expect(result).to.have.property('valor').to.equal(214.03);
expect(result).to.have.property('tipoCodigoInput').to.equal('CODIGO_DE_BARRAS');
expect(result).to.have.property('tipoBoleto').to.equal('BANCO');
expect(result).to.have.property('codigoBarras').to.equal('10499898100000214032006561000100040099726390');
expect(result).to.have.property('linhaDigitavel').to.equal('10492006506100010004200997263900989810000021403');
expect(result).to.have.property('vencimento');
assert.deepEqual(result.vencimento, new Date('2022-05-10T23:54:59.000Z'));

});
});
describe('Linha Digitável', function () {
it('deve retornar Objeto com informações do boleto', function () {
result = boleto.validarBoleto('10492006506100010004200997263900989810000021403')
expect(result).to.have.property('sucesso').to.be.true;
expect(result).to.have.property('mensagem').to.equal('Boleto válido');
expect(result).to.have.property('valor').to.equal(214.03);
expect(result).to.have.property('tipoCodigoInput').to.equal('LINHA_DIGITAVEL');
expect(result).to.have.property('tipoBoleto').to.equal('BANCO');
expect(result).to.have.property('codigoBarras').to.equal('10499898100000214032006561000100040099726390');
expect(result).to.have.property('linhaDigitavel').to.equal('10492006506100010004200997263900989810000021403');
expect(result).to.have.property('vencimento');
assert.deepEqual(result.vencimento, new Date('2022-05-10T23:54:59.000Z'));
});
});
});
describe('Boleto de Cartão de Crédito', function () {
describe('Código de barras', function () {
it('deve retornar Objeto com informações do boleto', function () {
result = boleto.validarBoleto('23797000000000000004150090019801673500021140')
expect(result).to.have.property('sucesso').to.be.true;
expect(result).to.have.property('mensagem').to.equal('Boleto válido');
expect(result).to.have.property('valor').to.equal(0);
expect(result).to.have.property('tipoCodigoInput').to.equal('CODIGO_DE_BARRAS');
expect(result).to.have.property('tipoBoleto').to.equal('CARTAO_DE_CREDITO');
expect(result).to.have.property('codigoBarras').to.equal('23797000000000000004150090019801673500021140');
expect(result).to.have.property('linhaDigitavel').to.equal('23794150099001980167035000211405700000000000000');
});
});
describe('Linha Digitável', function () {
it('deve retornar Objeto com informações do boleto', function () {
result = boleto.validarBoleto('23794150099001980167035000211405700000000000000')
expect(result).to.have.property('sucesso').to.be.true;
expect(result).to.have.property('mensagem').to.equal('Boleto válido');
expect(result).to.have.property('valor').to.equal(0);
expect(result).to.have.property('tipoCodigoInput').to.equal('LINHA_DIGITAVEL');
expect(result).to.have.property('tipoBoleto').to.equal('CARTAO_DE_CREDITO');
expect(result).to.have.property('codigoBarras').to.equal('23797000000000000004150090019801673500021140');
expect(result).to.have.property('linhaDigitavel').to.equal('23794150099001980167035000211405700000000000000');
});
});
});
});


describe('Boletos de 4 campos', function () {
describe('Código de barras', function () {
it('deve retornar Objeto com informações do boleto', function () {
result = boleto.validarBoleto('83860000005096000190000008017823000034306271')
Expand Down

0 comments on commit fcf1bf2

Please sign in to comment.