53 lines
2.4 KiB
Python
53 lines
2.4 KiB
Python
"""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"
|