Files
Investidor-V2/tests/frontend/investor-path.test.mjs
T
nala 6ddafc95ba
tests / ci (push) Canceled after 0s
oportunidades 4
2026-10-10 07:03:59 +02:00

58 lines
2.0 KiB
JavaScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { recoverPathResult } from '../../resources/js/lib/investor-path.ts';
import { serializeFinancialToolsSnapshot } from '../../resources/js/lib/financial-calculators.ts';
const inputs = {
budgetPeriod: 'Mensal',
loan: {
principal: '100000',
rate: '0',
months: '24',
rateType: 'nominal',
periodMonths: '1',
gracePeriods: '0',
upfrontFee: '0',
recurringFee: '0',
},
breakEven: { fixed: '1000', price: '100', variable: '50' },
funding: { total: '100000', secured: '30000' },
incomes: [{ label: 'Receita QA', amount: '100' }],
expenses: [{ label: 'Custo QA', amount: '50' }],
};
void test('A/B returned dossier evidence reuses the tool formulas after a JSON round trip', () => {
const result = JSON.parse(
JSON.stringify({
engine: 'financial-calculators:v1',
financial_snapshot: serializeFinancialToolsSnapshot(inputs),
}),
);
const recovered = recoverPathResult(result);
assert.equal(recovered.breakEven.value.breakEvenUnits, '20');
assert.equal(recovered.funding.value.gap, '70000.00');
});
void test('missing or invalid financial evidence stays indeterminate without hiding an independent calculation', () => {
const recovered = recoverPathResult({
engine: 'financial-calculators:v1',
financial_snapshot: serializeFinancialToolsSnapshot({
...inputs,
breakEven: { fixed: '', price: '100', variable: '50' },
}),
});
assert.equal(recovered.breakEven.value, null);
assert.equal(recovered.funding.value.gap, '70000.00');
assert.throws(
() =>
recoverPathResult({ engine: 'unknown', financial_snapshot: '{}' }),
/Versão/,
);
assert.throws(
() =>
recoverPathResult({
engine: 'financial-calculators:v1',
financial_snapshot: '{}',
}),
/Entradas/,
);
});