money scenarios: contract timing for salary extras (13th month in Nov, holiday pay in May, bonus in Aug, net estimates from the contract)
All checks were successful
Deploy production / deploy (push) Successful in 2m32s
All checks were successful
Deploy production / deploy (push) Successful in 2m32s
This commit is contained in:
@@ -77,8 +77,18 @@ describe('runScenario', () => {
|
||||
const result = runScenario(inputs, flat);
|
||||
const november = result.points[1];
|
||||
expect(november.cash).toBe(500000);
|
||||
// 300k salary + 10k benefit + 28k one-off − 3k gym − 90k pre-move household.
|
||||
expect(november.total).toBeCloseTo(350000 + 300000 + 10000 + 28000 - 3000 - 90000, 0);
|
||||
// 300k salary + 10k benefit + 28k one-off + 13th month 3/12 − 3k gym − 90k pre-move household.
|
||||
expect(november.total).toBeCloseTo(350000 + 300000 + 10000 + 28000 + 51250 - 3000 - 90000, 0);
|
||||
});
|
||||
it('pays contract extras in May (holiday pay) and August (bonus)', () => {
|
||||
const delta = (points: { total: number }[], index: number) =>
|
||||
points[index].total - points[index - 1].total;
|
||||
const flatRun = runScenario(inputs, flat).points;
|
||||
// Index 7 is May 2027: holiday pay 8/12 of €1,950.
|
||||
expect(delta(flatRun, 7) - delta(flatRun, 6)).toBeCloseTo(130000, 0);
|
||||
const bonus = runScenario(inputs, { ...flat, bonusPercentOfTarget: 100 }).points;
|
||||
// Index 10 is August 2027: the first bonus, €850.
|
||||
expect(delta(bonus, 10) - delta(flatRun, 10)).toBeCloseTo(85000, 0);
|
||||
});
|
||||
it('orders the default scenarios from pessimistic to optimistic', () => {
|
||||
const [pessimistic, realistic, optimistic] = (
|
||||
|
||||
Reference in New Issue
Block a user