fix: correct factorZona zero handling and confidence for unresolved selections
This commit is contained in:
@@ -76,4 +76,29 @@ describe('computeBudget', () => {
|
||||
const r = computeBudget(inputs({}), config, sinPintura);
|
||||
expect(r.avisos.some((a) => a.includes('pintura'))).toBe(true);
|
||||
});
|
||||
|
||||
it('usa factor zona 1 para provincia desconocida', () => {
|
||||
const r = computeBudget(inputs({ provincia: 'Cuenca' }), config, catalog);
|
||||
expect(r.factorZona).toBe(1);
|
||||
expect(r.total).toBe(536000); // subtotal sin factor
|
||||
});
|
||||
|
||||
it('respeta un factor zona explícito de 0', () => {
|
||||
const configZero: PricingConfig = { ...config, factorZona: { ...config.factorZona, Madrid: 0 } };
|
||||
const r = computeBudget(inputs({ provincia: 'Madrid' }), configZero, catalog);
|
||||
expect(r.factorZona).toBe(0);
|
||||
expect(r.total).toBe(0);
|
||||
});
|
||||
|
||||
it('no sube la confianza si la selección apunta a un material inexistente', () => {
|
||||
const r = computeBudget(inputs({ materialSelections: { suelo: 'no-existe' } }), config, catalog);
|
||||
expect(r.confianza).toBe('media'); // tiene m² pero la selección no resuelve -> no es alta
|
||||
});
|
||||
|
||||
it('omite carpintería y no rompe para tipos sin mobiliario (salón)', () => {
|
||||
const r = computeBudget(inputs({ tipoReforma: 'salon' }), config, catalog);
|
||||
const byKey = Object.fromEntries(r.partidas.map((p) => [p.key, p.importe]));
|
||||
expect(byKey.carpinteria).toBeUndefined();
|
||||
expect(r.total).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user