CI demo: metrics + Gitea Actions
This commit is contained in:
36
tests/test_discounts.py
Normal file
36
tests/test_discounts.py
Normal 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]}"
|
||||
)
|
||||
Reference in New Issue
Block a user