@adonisinoda/gerar-boletos
Version:
Gerar boletos para vários bancos
350 lines (266 loc) • 10.1 kB
JavaScript
const boleto = require('../lib/utils/functions/boletoUtils');
const bancos = boleto.bancos;
const Endereco = boleto.Endereco;
const Gerador = boleto.Gerador;
const Boleto = boleto.Boleto;
const Datas = boleto.Datas;
module.exports = {
especiesDeDocumento: {
'Verifica que contém o número correto de espécies': function(test) {
test.equals(Object.keys(boleto.especiesDeDocumento).length, 21);
test.done();
},
},
bancos: {
'Todos os bancos estão disponíveis': function(test) {
test.ok(new bancos.Itau());
test.ok(new bancos['341']());
test.ok(new bancos.Caixa());
test.ok(new bancos['104']());
test.ok(new bancos.Bradesco());
test.ok(new bancos['237']());
test.ok(new bancos.Sicoob());
test.ok(new bancos['756']());
test.ok(new bancos.Cecred());
test.ok(new bancos['085']());
console.log(Object.keys(bancos).length);
test.equals(16, Object.keys(bancos).length);
test.done();
},
},
Gerador: {
'Verifica que é possível instanciar o gerador': function(test) {
test.ok(new Gerador());
test.done();
},
'Verifica que o gerador apresenta as funções esperadas': function(test) {
var gerador = new Gerador();
test.equal(typeof gerador.gerarPDF, 'function');
test.equal(typeof gerador.gerarHTML, 'function');
test.done();
},
'Verifica que a geração de HTML lança uma exceção': function(test) {
test.throws(function() {
new Gerador().gerarHTML();
});
test.done();
}
},
Pagador: {
},
Beneficiario: {
},
Datas: {
'É possível instanciar um objeto de datas': function(test) {
var datas = Datas.novasDatas();
test.ok(datas);
test.done();
},
'Deve lançar exceção se as datas forem muito antigas': function(test) {
test.throws(function() {
Datas.novasDatas()
.comDocumento(1, 1, 1996)
.comVencimento(1, 1, 1996)
.comProcessamento(1, 1, 1996);
});
test.done();
},
'Deve lançar exceção se as datas estiverem além de 2024': function(test) {
test.throws(function() {
Datas.novasDatas()
.comDocumento(1, 1, 2024)
.comVencimento(1, 1, 2024)
.comProcessamento(1, 1, 2024);
});
test.done();
}
},
Endereco: {
'Deve imprimir endereco completo': function(test) {
var endereco = Endereco.novoEndereco()
.comLogradouro('RODOVIA SC 401, KM 1 - EDIFÍCIO CELTA')
.comBairro('PARQTEC ALFA')
.comCep('88030-000')
.comCidade('FLORIANÓPOLIS')
.comUf('SC');
test.equals(endereco.getEnderecoCompleto(), [
'RODOVIA SC 401, KM 1 - EDIFÍCIO CELTA ',
'PARQTEC ALFA 88.030-000 FLORIANÓPOLIS SC'
].join(''));
test.done();
},
'Deve imprimir endereco sem logradouro': function(test) {
var endereco = Endereco.novoEndereco()
.comBairro('PARQTEC ALFA')
.comCep('88030-000')
.comCidade('FLORIANÓPOLIS')
.comUf('SC');
test.equals(endereco.getEnderecoCompleto(), 'PARQTEC ALFA 88.030-000 FLORIANÓPOLIS SC');
test.done();
},
'Deve imprimir endereco sem cep': function(test) {
var endereco = Endereco.novoEndereco()
.comLogradouro('RODOVIA SC 401, KM 1 - EDIFÍCIO CELTA')
.comBairro('PARQTEC ALFA')
.comCidade('FLORIANÓPOLIS')
.comUf('SC');
test.equals(endereco.getEnderecoCompleto(), [
'RODOVIA SC 401, KM 1 - EDIFÍCIO CELTA ',
'PARQTEC ALFA FLORIANÓPOLIS SC'
].join(''));
test.done();
},
'Deve imprimir vazio se endereço não preenchido': function(test) {
var endereco = Endereco.novoEndereco();
test.equals(endereco.getEnderecoCompleto(), '');
test.done();
},
},
Boleto: {
'É possível instanciar um novo boleto': function(test) {
var boleto = Boleto.novoBoleto();
test.ok(boleto);
test.done();
},
'Novo boleto deve ter alguns valores padrão': function(test) {
var boleto = Boleto.novoBoleto();
test.equals(boleto.getEspecieMoeda(), 'R$');
test.equals(boleto.getCodigoEspecieMoeda(), 9);
test.equals(boleto.getAceite(), false);
test.equals(boleto.getEspecieDocumento(), 'DV');
test.done();
},
'Calcula corretamente o fator de vencimento': function(test) {
var dataDeVencimento = new Date(2015, 3 - 1, 21, 0, 0, 0, 0),
datas = Datas.novasDatas().comVencimento(dataDeVencimento),
boleto = Boleto.novoBoleto().comDatas(datas);
test.equals(boleto.getFatorVencimento(), '6374');
test.done();
},
'Calcula corretamente o fator de vencimento, ignorando as horas - 1': function(test) {
var dataDeVencimento = new Date(2008, 5 - 1, 2, 0, 0, 0, 0),
datas = Datas.novasDatas().comVencimento(dataDeVencimento),
boleto = Boleto.novoBoleto().comDatas(datas);
test.equals(boleto.getFatorVencimento(), '3860');
test.done();
},
'Calcula corretamente o fator de vencimento, ignorando as horas - 2': function(test) {
var dataDeVencimento = new Date(2008, 5 - 1, 2, 23, 59, 59, 999),
datas = Datas.novasDatas().comVencimento(dataDeVencimento),
boleto = Boleto.novoBoleto().comDatas(datas);
test.equals(boleto.getFatorVencimento(), '3860');
test.done();
},
'Lança exceção ao tentar definir um valor negativo para o boleto': function(test) {
test.throws(function() {
Boleto.novoBoleto().comValorBoleto(-5);
});
test.done();
},
'O valor formatado deve ter 10 digitos - 1': function(test) {
var boleto = Boleto.novoBoleto().comValorBoleto(3),
valorFormatado = boleto.getValorFormatado();
test.equals(10, valorFormatado.length);
test.equals('0000000300', valorFormatado);
test.done();
},
'O valor formatado deve ter 10 digitos - 2': function(test) {
var boleto = Boleto.novoBoleto().comValorBoleto(3.1),
valorFormatado = boleto.getValorFormatado();
test.equals(10, valorFormatado.length);
test.equals('0000000310', valorFormatado);
test.done();
},
'O valor formatado deve ter 10 digitos - 3': function(test) {
var boleto = Boleto.novoBoleto().comValorBoleto(3.18),
valorFormatado = boleto.getValorFormatado();
test.equals(10, valorFormatado.length);
test.equals('0000000318', valorFormatado);
test.done();
},
'O valor formatado deve ter 10 digitos - 4': function(test) {
var boleto = Boleto.novoBoleto().comValorBoleto(300),
valorFormatado = boleto.getValorFormatado();
test.equals(10, valorFormatado.length);
test.equals('0000030000', valorFormatado);
test.done();
},
'São consideradas apenas as primeiras duas casas decimais do valor': function(test) {
var boleto = Boleto.novoBoleto().comValorBoleto(3.189),
valorFormatado = boleto.getValorFormatado();
test.equals(10, valorFormatado.length);
test.equals('0000000318', valorFormatado);
test.done();
},
'Número do documento formatado deve ter 4 digitos': function(test) {
var boleto = Boleto.novoBoleto().comNumeroDoDocumento('232'),
numeroFormatado = boleto.getNumeroDoDocumentoFormatado();
test.equals(4, numeroFormatado.length);
test.equals('0232', numeroFormatado);
test.done();
},
'Boleto não deve aceitar mais do que cinco instruções': function(test) {
test.throws(function() {
Boleto.novoBoleto().comInstrucoes('', '', '', '', '', '');
});
test.throws(function() {
Boleto.novoBoleto().comInstrucoes(['', '', '', '', '', '']);
});
test.done();
},
'Boleto não deve aceitar mais do que cinco descrições': function(test) {
test.throws(function() {
Boleto.novoBoleto().comDescricoes('', '', '', '', '', '');
});
test.throws(function() {
Boleto.novoBoleto().comDescricoes(['', '', '', '', '', '']);
});
test.done();
},
'Boleto não deve aceitar mais do que dois locais de pagamento': function(test) {
test.throws(function() {
Boleto.novoBoleto().comLocaisDePagamento('', '', '');
});
test.throws(function() {
Boleto.novoBoleto().comLocaisDePagamento(['', '', '']);
});
test.done();
},
'Não deve ser possivel definir um novo boleto com valor superior a R$ 99.999.999,99': function(test) {
test.throws(function() {
var boleto = Boleto.novoBoleto().comValorBoleto(100000000.00);
});
test.done();
},
'Deve retornar formatação em formato legivel': function(test) {
var boleto;
boleto = Boleto.novoBoleto().comValorBoleto(0);
test.equal('R$ 0,00', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(1);
test.equal('R$ 1,00', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(1.2);
test.equal('R$ 1,20', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(1.23);
test.equal('R$ 1,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(1.235);
test.equal('R$ 1,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(10.23);
test.equal('R$ 10,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(100.23);
test.equal('R$ 100,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(1000.23);
test.equal('R$ 1.000,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(10002.23);
test.equal('R$ 10.002,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(210002.23);
test.equal('R$ 210.002,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(3210002.23);
test.equal('R$ 3.210.002,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(13210002.23);
test.equal('R$ 13.210.002,23', boleto.getValorFormatadoBRL());
boleto = Boleto.novoBoleto().comValorBoleto(99999999.99);
test.equal('R$ 99.999.999,99', boleto.getValorFormatadoBRL());
test.done();
}
}
};