fix(shopping): NULLIF-Guard gegen servings_default=0 in Aggregation
Some checks failed
Build & Publish Docker Image / build-and-push (push) Has been cancelled
Some checks failed
Build & Publish Docker Image / build-and-push (push) Has been cancelled
This commit is contained in:
@@ -87,7 +87,7 @@ export function listShoppingList(
|
||||
LOWER(TRIM(COALESCE(i.unit, ''))) AS unit_key,
|
||||
MIN(i.name) AS display_name,
|
||||
MIN(i.unit) AS display_unit,
|
||||
SUM(i.quantity * cr.servings * 1.0 / COALESCE(r.servings_default, cr.servings)) AS total_quantity,
|
||||
SUM(i.quantity * cr.servings * 1.0 / NULLIF(COALESCE(r.servings_default, cr.servings), 0)) AS total_quantity,
|
||||
GROUP_CONCAT(DISTINCT r.title) AS from_recipes,
|
||||
EXISTS(
|
||||
SELECT 1 FROM shopping_cart_check c
|
||||
|
||||
@@ -172,4 +172,16 @@ describe('listShoppingList aggregation', () => {
|
||||
addRecipeToCart(db, id, null);
|
||||
expect(listShoppingList(db).uncheckedCount).toBe(2);
|
||||
});
|
||||
|
||||
it('does not blow up when servings_default is zero (silent NULL total_quantity)', () => {
|
||||
const db = openInMemoryForTest();
|
||||
const id = insertRecipe(db, recipe({
|
||||
servings_default: 0,
|
||||
ingredients: [{ position: 1, quantity: 100, unit: 'g', name: 'Mehl', note: null, raw_text: '', section_heading: null }]
|
||||
}));
|
||||
addRecipeToCart(db, id, null, 4);
|
||||
const rows = listShoppingList(db).rows;
|
||||
expect(rows).toHaveLength(1);
|
||||
expect(rows[0].total_quantity).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user