- Убран discord.Embed в пользу простого текста без timestamp ошибки - Добавлены разделители = вокруг заголовка - Создан tests/test_help_discord.py с 2 тестами для Discord команды - Создан tests/test_help_console.py с 2 тестами для консольной команды - Закрыто: AttributeError 'Message' object has no attribute 'timestamp'
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
"""Тесты для команды !hp (help)."""
|
|
|
|
import pytest
|
|
from unittest.mock import AsyncMock, MagicMock
|
|
|
|
|
|
class TestHelpCommandDiscord:
|
|
"""Тесты для команды help на Discord."""
|
|
|
|
async def test_show_help_sends_simple_text(self):
|
|
"""Проверка, что команда отправляет простое текстовое сообщение."""
|
|
from commands.help import Help
|
|
|
|
mock_ctx = MagicMock()
|
|
mock_ctx.send = AsyncMock(return_value=None)
|
|
|
|
helper = Help()
|
|
await helper._show_help(mock_ctx)
|
|
|
|
mock_ctx.send.assert_awaited_once()
|
|
|
|
async def test_show_help_message_content(self):
|
|
"""Проверка содержания отправленного сообщения."""
|
|
from commands.help import Help
|
|
|
|
message_calls = []
|
|
|
|
def send_side_effect(text: str, *args, **kwargs):
|
|
message_calls.append(text)
|
|
return MagicMock()
|
|
|
|
mock_ctx = MagicMock()
|
|
mock_ctx.send = AsyncMock(side_effect=send_side_effect)
|
|
|
|
helper = Help()
|
|
await helper._show_help(mock_ctx)
|
|
|
|
assert len(message_calls) == 1
|
|
message = message_calls[0]
|
|
|
|
# Проверка структуры сообщения
|
|
assert "Discord Bot — Доступные команды" in message
|
|
assert "=" * 40 in message
|
|
|
|
# Проверяем наличие всех команд без кавычек
|
|
commands = ["!pg", "!nw", "!morning", "!cat", "!msg"]
|
|
for cmd in commands:
|
|
assert cmd in message, f"Команда {cmd} не найдена"
|
|
|
|
# Проверяем разделение тире между командой и описанием
|
|
lines = [l.strip() for l in message.split("\n") if "—" in l]
|
|
assert len(lines) >= 5
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pytest.main([__file__, "-v"])
|