fix: format_weather_data_for_console заменяет None на эм-дэш вместо вывода 'None' в текст

This commit is contained in:
deadzilla 2026-07-11 23:50:05 +05:00
parent bc37362959
commit 048b9a3a91
2 changed files with 22 additions and 11 deletions

View File

@ -151,11 +151,11 @@ class TestPgCommand:
await cog.pg.callback(cog, ctx)
args = ctx.send.call_args[0][0]
# dict.get(key, default) возвращает None, если ключ есть, но значение None
assert "Температура: None°C" in args
assert "ощущается как None°C" in args
# None значения корректно заменяются на "—"
assert "Температура: °C" in args
assert "ощущается как °C" in args
assert "Описание: —" in args
assert "Влажность: None%" in args
assert "Влажность: %" in args
assert "Давление: — мм рт. ст." in args
@pytest.mark.asyncio

View File

@ -195,13 +195,24 @@ def format_weather_data_for_console(data: Optional[dict]) -> Optional[list[str]]
if not current:
return None
temp = current.get("temp_C", "")
feels_like = current.get("FeelsLikeC", "")
description = translate_weather(
current.get("weatherDesc", [{}])[0].get("value", "")
)
humidity = current.get("humidity", "")
wind_kmh = current.get("windspeedKmph", "")
# dict.get() возвращает None если ключ существует со значением null;
# используем проверку на None для корректного fallback
temp = current.get("temp_C")
if temp is None:
temp = ""
feels_like = current.get("FeelsLikeC")
if feels_like is None:
feels_like = ""
weather_desc = current.get("weatherDesc", [{}])[0].get("value")
if weather_desc is None:
weather_desc = ""
description = translate_weather(weather_desc)
humidity = current.get("humidity")
if humidity is None:
humidity = ""
wind_kmh = current.get("windspeedKmph")
if wind_kmh is None:
wind_kmh = ""
try:
wind = round(int(wind_kmh) / 3.6, 1) if wind_kmh != "" else ""
except (ValueError, TypeError):