CI demo: metrics + Gitea Actions

This commit is contained in:
2026-11-12 13:55:02 +08:00
commit 6637fb8ff4
17 changed files with 564 additions and 0 deletions

36
tests/test_discounts.py Normal file
View File

@@ -0,0 +1,36 @@
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]}"
)