File size: 1,303 Bytes
933fa00
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import test from "node:test";
import assert from "node:assert/strict";
import { calcularSimulacao } from "../src/index.js";

const baseInput = {
  credito_desejado: 300000,
  parametros: {
    id_plano: "PADRAO",
    nome_plano: "Plano Padrao Imovel",
    prazo_meses: 180,
    taxa_administracao_total: 0.15,
    fundo_reserva_mensal: 0.0005,
    seguro_prestamista: 0.035,
  },
  tem_lance: false,
};

test("calcula parcela integral com valores esperados", () => {
  const result = calcularSimulacao(baseInput);

  assert.equal(result.prazo, 180);
  assert.equal(result.credito, 300000);
  assert.ok(result.parcela_integral.total > 0);
  assert.equal(Number(result.parcela_integral.fundo_comum.toFixed(2)), 1666.67);
});

test("calcula cenario com lance e reduz prazo", () => {
  const result = calcularSimulacao({
    ...baseInput,
    tem_lance: true,
    lance_percentual: 0.3,
  });

  assert.ok(result.valor_lance);
  assert.equal(result.valor_lance, 90000);
  assert.ok(result.prazo_apos_lance);
  assert.ok(result.prazo_apos_lance < result.prazo);
});

test("falha quando prazo_meses for invalido", () => {
  assert.throws(() => {
    calcularSimulacao({
      ...baseInput,
      parametros: {
        ...baseInput.parametros,
        prazo_meses: 0,
      },
    });
  }, /prazo_meses/);
});