Files
meshcore-bot/tests/commands/test_hello_command.py
Stacy Olivas ae57e651ea test: expanded test suite for v0.9.0 modules
Command tests:
- tests/commands/: test_base_command, test_cmd_command, test_dice_command,
  test_hello_command, test_help_command, test_magic8_command,
  test_ping_command, test_roll_command
- tests/test_bridge_bot_responses, test_channel_manager_logic,
  test_checkin_service, test_command_manager, test_command_prefix,
  test_config_merge, test_config_validation, test_db_manager,
  test_plugin_loader, test_profanity_filter, test_security_utils,
  test_service_plugin_loader, test_utils

Integration and unit:
- tests/integration/: test_path_graph_integration, test_path_resolution
- tests/regression/: test_keyword_escapes
- tests/unit/: test_mesh_graph, test_mesh_graph_edges,
  test_mesh_graph_multihop, test_mesh_graph_optimizations,
  test_mesh_graph_scoring, test_mesh_graph_validation,
  test_path_command_graph, test_path_command_graph_selection,
  test_path_command_multibyte

Helpers: tests/conftest.py, tests/helpers.py
2026-03-17 18:07:18 -07:00

84 lines
3.9 KiB
Python

"""Tests for modules.commands.hello_command."""
from unittest.mock import patch
import pytest
from modules.commands.hello_command import HelloCommand
from tests.conftest import mock_message
class TestHelloCommand:
"""Tests for HelloCommand."""
def test_is_emoji_only_message_vulcan_salute(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
assert cmd.is_emoji_only_message("🖖") is True
def test_is_emoji_only_message_with_whitespace(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
assert cmd.is_emoji_only_message(" 🖖 ") is True
def test_is_emoji_only_message_text_returns_false(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
assert cmd.is_emoji_only_message("hello") is False
def test_is_emoji_only_message_empty_returns_false(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
assert cmd.is_emoji_only_message("") is False
@patch("datetime.datetime")
def test_get_random_greeting_deterministic_with_mocked_time(self, mock_datetime, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
mock_now = mock_datetime.now.return_value
mock_now.hour = 10 # morning
cmd = HelloCommand(command_mock_bot)
with patch("modules.commands.hello_command.random.choice", side_effect=lambda x: x[0]):
result = cmd.get_random_greeting()
assert isinstance(result, str) and len(result) > 0
def test_get_emoji_response_vulcan(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
with patch("modules.commands.hello_command.random.choice", side_effect=lambda x: x[0]):
result = cmd.get_emoji_response("🖖", "TestBot")
assert "🖖" in result or "TestBot" in result
def test_can_execute_when_enabled(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
msg = mock_message(content="hello", is_dm=True)
assert cmd.can_execute(msg) is True
def test_can_execute_when_disabled(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "false")
cmd = HelloCommand(command_mock_bot)
msg = mock_message(content="hello", is_dm=True)
assert cmd.can_execute(msg) is False
@pytest.mark.asyncio
async def test_execute_text_greeting_sends_response(self, command_mock_bot):
command_mock_bot.config.add_section("Hello_Command")
command_mock_bot.config.set("Hello_Command", "enabled", "true")
cmd = HelloCommand(command_mock_bot)
msg = mock_message(content="hello", is_dm=True)
with patch("modules.commands.hello_command.random.choice", side_effect=lambda x: x[0]):
result = await cmd.execute(msg)
assert result is True
call_args = command_mock_bot.command_manager.send_response.call_args
assert call_args is not None
response = call_args[0][1]
assert isinstance(response, str) and len(response) > 0