diff --git a/src/tutorial/testing/shop/pricing.py b/src/tutorial/testing/shop/pricing.py index 62f2613..608fb4f 100644 --- a/src/tutorial/testing/shop/pricing.py +++ b/src/tutorial/testing/shop/pricing.py @@ -1,2 +1,6 @@ def discount_price(price: float, percent: float) -> float: + if price < 0: + raise ValueError("Price must be >= 0") + if not 0 <= percent <= 100: + raise ValueError("Percent must be between 0 and 100") return price - price * percent / 100 diff --git a/tests/test_tutorial/shop/test_pricing.py b/tests/test_tutorial/shop/test_pricing.py index 5062ace..c6071cf 100644 --- a/tests/test_tutorial/shop/test_pricing.py +++ b/tests/test_tutorial/shop/test_pricing.py @@ -1,6 +1,21 @@ from src.tutorial.testing.shop.pricing import discount_price +import pytest def test_discount_price_reduces_price(): result = discount_price(100.0, 20.0) assert result == 80 + + assert discount_price(100.0, 50.0) == 50 + assert discount_price(100.0, 0) == 100 + assert discount_price(100.0, 100) == 0 + + +def test_negative_orice_raises_value_error() -> None: + with pytest.raises(ValueError): + discount_price(-100.0, 50.0) is ValueError + + +def test_percent_above_hundered_message() -> None: + with pytest.raises(ValueError, match="between 0 and 100"): + discount_price(100.0, 150.0)