discordBot/tests/test_commands_status.py

72 lines
2.3 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.

"""Тесты для команды !status."""
import time
from unittest.mock import AsyncMock, MagicMock
from commands.status import Status
class TestStatusCommand:
"""Тесты Discord-команды status."""
async def test_status_sends_embed(self) -> None:
"""Команда status отправляет embed-сообщение."""
mock_ctx = MagicMock()
mock_ctx.bot.latency = 0.042
mock_ctx.bot._start_time = time.time()
mock_ctx.send = AsyncMock(return_value=None)
cog = Status()
await cog.status(cog, mock_ctx)
mock_ctx.send.assert_awaited_once()
call_args = mock_ctx.send.call_args
embed = call_args[1]["embed"] if call_args[1] else call_args[0][0]
assert embed.title == "Статус бота"
assert "42.0 мс" in embed.fields[0].value
async def test_status_uptime_format(self) -> None:
"""Uptime форматируется корректно."""
mock_ctx = MagicMock()
mock_ctx.bot.latency = 0.050
mock_ctx.bot._start_time = time.time() - 90061 # 1д 1ч 1м 1с
mock_ctx.send = AsyncMock(return_value=None)
cog = Status()
await cog.status(cog, mock_ctx)
call_args = mock_ctx.send.call_args
embed = call_args[1]["embed"] if call_args[1] else call_args[0][0]
uptime = embed.fields[1].value
assert "" in uptime
assert "" in uptime
assert "" in uptime
assert "1с" in uptime
class TestFormatUptime:
"""Тесты форматирования uptime."""
def test_zero_seconds(self) -> None:
result = Status._format_uptime(0)
assert result == "0с"
def test_minutes_and_seconds(self) -> None:
result = Status._format_uptime(125) # 2м 5с
assert "" in result
assert "5с" in result
def test_hours_minutes_seconds(self) -> None:
result = Status._format_uptime(3661) # 1ч 1м 1с
assert "" in result
assert "" in result
assert "1с" in result
def test_full_day(self) -> None:
result = Status._format_uptime(90061) # 1д 1ч 1м 1с
assert "" in result
assert "" in result
assert "" in result
assert "1с" in result