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"])