diff --git a/src/lib/server/unit-consolidation.ts b/src/lib/server/unit-consolidation.ts index b5f3aae..1254ba3 100644 --- a/src/lib/server/unit-consolidation.ts +++ b/src/lib/server/unit-consolidation.ts @@ -43,7 +43,7 @@ export function consolidate(rows: QuantityInUnit[]): QuantityInUnit { if (allNull) return { quantity: null, unit: firstUnit }; const grams = rows.reduce((sum, r) => { const q = r.quantity ?? 0; - return sum + (unitFamily(r.unit) === 'weight' && r.unit?.toLowerCase().trim() === 'kg' ? q * 1000 : q); + return sum + (r.unit?.toLowerCase().trim() === 'kg' ? q * 1000 : q); }, 0); if (grams >= 1000) return { quantity: round2(grams / 1000), unit: 'kg' }; return { quantity: round2(grams), unit: 'g' }; diff --git a/tests/unit/unit-consolidation.test.ts b/tests/unit/unit-consolidation.test.ts index e411699..d1e8ed9 100644 --- a/tests/unit/unit-consolidation.test.ts +++ b/tests/unit/unit-consolidation.test.ts @@ -44,6 +44,13 @@ describe('consolidate', () => { expect(out).toEqual({ quantity: 500, unit: 'g' }); }); + it('promoted bei exakt 1000 g (Boundary)', () => { + const out = consolidate([ + { quantity: 1000, unit: 'g' } + ]); + expect(out).toEqual({ quantity: 1, unit: 'kg' }); + }); + it('kombiniert ml + l analog (400 ml + 0,5 l → 900 ml)', () => { const out = consolidate([ { quantity: 400, unit: 'ml' },