atualizar-boleto
Version:
Módulo para atualização de valor do boleto bancário. Calcula multa, mora ou desconto.
317 lines (269 loc) • 10.6 kB
JavaScript
;
var atualizarBoleto = require('../index');
module.exports = {
'Pagamento efetuado na data de vencimento não tem acréscimo nem desconto': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-07-06T15:25:07.138Z'),
valor: 100,
vencimento: '2015-07-06T15:25:07.138Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 100);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-07-07T15:25:07.138Z'),
valor: 100,
vencimento: '2015-07-06T15:25:07.138Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 102.03);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora 2': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-24T03:00:00.000Z'),
valor: 336.91,
vencimento: '2015-06-21T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 343.98);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora 3': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-24T03:00:00.000Z'),
valor: 360.02,
vencimento: '2015-06-18T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 367.94);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora 4': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-24T03:00:00.000Z'),
valor: 169.64,
vencimento: '2015-06-19T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 173.33);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora 5': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-24T03:00:00.000Z'),
valor: 365.93,
vencimento: '2015-06-21T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 373.61);
test.done();
});
},
'Pagamento atrasado tem adição de multa e de mora 6': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-24T03:00:00.000Z'),
valor: 370.66,
vencimento: '2015-06-21T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 378.43);
test.done();
});
},
'Pagamento adiantado mas depois do prazo do desconto 1': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-23T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-24T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 100);
test.done();
});
},
'Pagamento adiantado mas depois do prazo do desconto 2': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-22T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-24T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 100);
test.done();
});
},
'Pagamento adiantado tem desconto aplicado corretamente 1': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-21T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-24T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 90);
test.done();
});
},
'Pagamento adiantado tem desconto aplicado corretamente 2': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-20T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-24T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 90);
test.done();
});
},
'Pagamento adiantado tem desconto aplicado corretamente 3': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-20T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-24T03:00:00.000Z',
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 90);
test.done();
});
},
'Quando vencimento cai no fim de semana e é pago no primeiro dia util subsequente não é cobrado multa 1': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-29T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-27T03:00:00.000Z', // Sábado
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 100);
test.done();
});
},
'Quando vencimento cai no fim de semana e é pago no primeiro dia util subsequente não é cobrado multa 2': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-29T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-28T03:00:00.000Z', // Domingo
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 100);
test.done();
});
},
'Quando vencimento cai no fim de semana mas não é pago no primeiro dia util subsequente é cobrado multa normalmente 1': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-30T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-27T03:00:00.000Z', // Sábado
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 102.09);
test.done();
});
},
'Quando vencimento cai no fim de semana mas não é pago no primeiro dia util subsequente é cobrado multa normalmente 2': function(test) {
var parametros = {
dataDoPagamento: new Date('2015-06-30T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-28T03:00:00.000Z', // Sábado
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.equal(valorDevidoNaData, 102.06);
test.done();
});
},
'Verifica que é possível passar função para calculo de feriados': function(test) {
var eFeriadoFoiChamado = false;
var eFeriado = function(data, callback) {
eFeriadoFoiChamado = true;
callback(null, data.format('DD/MM/YYYY') === '29/06/2015');
};
var parametros = {
dataDoPagamento: new Date('2015-06-30T03:00:00.000Z'),
valor: 100,
vencimento: '2015-06-29T03:00:00.000Z', // Domingo
porcentagemDaMulta: 0.02,
porcentagemDaMora: 0.01,
diasDeAntecipacaoParaDesconto: 3,
porcentagemDoDesconto: 0.1,
eFeriado: eFeriado
};
atualizarBoleto(parametros, function(err, valorDevidoNaData) {
test.ifError(err);
test.ok(eFeriadoFoiChamado);
test.equal(valorDevidoNaData, 100);
test.done();
});
}
};