From 1ab3205333c05ef4a22d1f5c2472b73474275bfd Mon Sep 17 00:00:00 2001 From: deadzilla Date: Sun, 12 Jul 2026 00:11:54 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20format=5Farticles(None)=20=D0=B2=D0=BE?= =?UTF-8?q?=D0=B7=D0=B2=D1=80=D0=B0=D1=89=D0=B0=D0=B5=D1=82=20graceful=20f?= =?UTF-8?q?allback=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20TypeError?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_format_articles.py | 7 ++++--- utils/news.py | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/test_format_articles.py b/tests/test_format_articles.py index 882e562..b704f54 100644 --- a/tests/test_format_articles.py +++ b/tests/test_format_articles.py @@ -125,9 +125,10 @@ class TestFormatArticles: assert len(result) == 1 def test_format_articles_none(self) -> None: - """None должен вызвать TypeError (articles[:5] на None).""" - with pytest.raises(TypeError): - format_articles(None, "Заголовок", "https://habr.com/feed") + """None должен вернуть graceful fallback вместо TypeError.""" + result = format_articles(None, "Заголовок", "https://habr.com/feed") + assert len(result) == 2 + assert "Не удалось загрузить статьи." in result[1] def test_format_articles_single_article(self) -> None: """Одна статья должна быть корректно отформатирована.""" diff --git a/utils/news.py b/utils/news.py index 78f8c8b..2690443 100644 --- a/utils/news.py +++ b/utils/news.py @@ -135,6 +135,8 @@ def truncate_message(text: str, max_len: int = 2000) -> str: def format_articles(articles: list[dict], title: str, link: str) -> list[str]: """Сформировать список строк для вывода статей/постов.""" + if articles is None: + return [f"{title}\n<{link}>", "Не удалось загрузить статьи."] lines = [f"{title}\n<{link}>"] for i, article in enumerate(articles[:5], 1): date_str = _parse_date(article["pub_date"])