diff --git a/copanier/models.py b/copanier/models.py index bdb5f36..910b23e 100644 --- a/copanier/models.py +++ b/copanier/models.py @@ -134,9 +134,12 @@ class Order(Base): def total(self, products): products = {p.ref: p for p in products} - return round( - sum(p.quantity * products[ref].price for ref, p in self.products.items()), 2 + total = sum( + p.quantity * products[ref].price + for ref, p in self.products.items() + if ref in products ) + return round(total, 2) @property def has_adjustments(self): diff --git a/tests/test_models.py b/tests/test_models.py index 4cc531d..7bae88f 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -105,6 +105,16 @@ def test_order_has_adjustments(): assert order.has_adjustments +def test_order_total(delivery): + delivery.products = [Product(name="Lait", ref="123", price=1.5)] + order = Order() + assert order.total(delivery.products) == 0 + order.products["123"] = ProductOrder(wanted=2) + assert order.total(delivery.products) == 3 + order.products["unknown"] = ProductOrder(wanted=2) + assert order.total(delivery.products) == 3 + + def test_can_persist_delivery(delivery): with pytest.raises(AssertionError): delivery.path