From b85f869c0957cc5f81afc2be2fb25c8018aa2116 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:53:29 +0200 Subject: [PATCH] refactor(shopping): redundanten kg-Check in consolidate() entfernt + Boundary-Test Weight-Branch prueft nicht mehr doppelt auf unitFamily; stil-parity mit Volume-Branch. Boundary-Test fuer exakt 1000 g ergaenzt (15/15 Tests gruen). Co-Authored-By: Claude Sonnet 4.6 --- src/lib/server/unit-consolidation.ts | 2 +- tests/unit/unit-consolidation.test.ts | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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' },