import sys import pytest from app.discounts import NoDiscount, discount_for from app.service import Order, OrderService def make_order() -> Order: return Order({"чай": 300, "кофе": 700}) def test_vip_discount() -> None: service = OrderService(discount_for("vip")) assert service.total(make_order()) == pytest.approx(900.0) def test_employee_discount() -> None: service = OrderService(discount_for("employee")) assert service.total(make_order()) == pytest.approx(700.0) def test_regular_has_no_discount() -> None: service = OrderService(discount_for("regular")) assert service.total(make_order()) == pytest.approx(1000.0) def test_unknown_type_falls_back_to_regular() -> None: assert isinstance(discount_for("unknown"), NoDiscount) def test_python_version_supported() -> None: # Для акта с матрицей: на Python 3.11 этот тест падает assert sys.version_info >= (3, 12), ( f"нужен Python 3.12+, получено {sys.version.split()[0]}" )