kin/tests/test_kin_104_regression.py
2026-03-17 20:21:52 +02:00

53 lines
2.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""Regression tests for KIN-104 — замена datetime.utcnow() на datetime.now(timezone.utc) в cli/main.py.
AC1: datetime.utcnow() отсутствует в cli/main.py.
AC2: timezone импортирован из datetime в cli/main.py.
AC3: datetime.now(timezone.utc).isoformat() возвращает строку с суффиксом +00:00 (aware datetime).
"""
import re
from datetime import datetime, timezone
from pathlib import Path
import pytest
CLI_MAIN = Path(__file__).parent.parent / "cli" / "main.py"
# ---------------------------------------------------------------------------
# AC1: utcnow() отсутствует в источнике
# ---------------------------------------------------------------------------
def test_cli_main_does_not_contain_utcnow():
"""cli/main.py не должен содержать вызовов datetime.utcnow()."""
source = CLI_MAIN.read_text(encoding="utf-8")
assert "utcnow" not in source, "Найден устаревший вызов utcnow() в cli/main.py"
# ---------------------------------------------------------------------------
# AC2: timezone импортирован
# ---------------------------------------------------------------------------
def test_cli_main_imports_timezone():
"""cli/main.py должен импортировать timezone из datetime."""
source = CLI_MAIN.read_text(encoding="utf-8")
# Принимаем: from datetime import datetime, timezone или from datetime import ..., timezone, ...
assert re.search(r"from datetime import [^#\n]*timezone", source), \
"timezone не импортирован из datetime в cli/main.py"
# ---------------------------------------------------------------------------
# AC3: aware datetime → isoformat содержит +00:00
# ---------------------------------------------------------------------------
def test_now_timezone_utc_isoformat_contains_utc_offset():
"""datetime.now(timezone.utc).isoformat() должен содержать '+00:00'."""
ts = datetime.now(timezone.utc).isoformat()
assert "+00:00" in ts, f"Ожидался суффикс +00:00, получено: {ts}"
def test_now_timezone_utc_is_aware():
"""datetime.now(timezone.utc) должен возвращать aware datetime (tzinfo не None)."""
dt = datetime.now(timezone.utc)
assert dt.tzinfo is not None, "datetime.now(timezone.utc) вернул naive datetime"