From 857a7364ddb9b10529593c5e9c3578eb95c1da9b Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 18 Apr 2026 16:24:42 +0200 Subject: add a test suite Signed-off-by: salmonik --- tests/cogs/test_vclogs.py | 83 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 tests/cogs/test_vclogs.py (limited to 'tests/cogs/test_vclogs.py') diff --git a/tests/cogs/test_vclogs.py b/tests/cogs/test_vclogs.py new file mode 100644 index 0000000..14bc6d5 --- /dev/null +++ b/tests/cogs/test_vclogs.py @@ -0,0 +1,83 @@ +import pytest +from unittest.mock import AsyncMock, patch, MagicMock +import json +from tests.conftest import MockApplicationContext + + +def test_format_duration(): + from cogs.vclogs import format_duration + + assert format_duration(30) == "30s" + assert format_duration(90) == "1m 30s" + assert format_duration(3661) == "1h 1m 1s" + + +def test_load_activity_data(): + with patch('builtins.open', MagicMock()): + with patch('os.path.exists', return_value=True): + with patch('json.load', return_value={"123": {"active": True}}): + from cogs.vclogs import load_activity_data + data = load_activity_data() + assert isinstance(data, dict) + + +def test_save_activity_data(): + with patch('builtins.open', MagicMock()) as mock_open: + with patch('json.dump'): + from cogs.vclogs import save_activity_data + save_activity_data({"123": {"active": True}}) + mock_open.assert_called_once() + + +@pytest.fixture +def vclogs_cog(bot): + with patch('cogs.vclogs.get_voice_manager'): + with patch('cogs.vclogs.get_volume', return_value=1.0): + with patch('cogs.vclogs.save_settings'): + from cogs.vclogs import VcLogs + cog = VcLogs(bot) + return cog + + +@pytest.mark.asyncio +async def test_handle_state_change_deaf_true(vclogs_cog): + mock_member = MagicMock() + mock_member.display_name = "TestUser" + mock_channel = MagicMock() + + tts_text, channel = await vclogs_cog.handle_state_change(mock_member, mock_channel, 'deaf', True, None) + + assert "jest bity przez ojca" in tts_text + + +@pytest.mark.asyncio +async def test_handle_state_change_deaf_false(vclogs_cog): + mock_member = MagicMock() + mock_member.display_name = "TestUser" + mock_channel = MagicMock() + + tts_text, channel = await vclogs_cog.handle_state_change(mock_member, mock_channel, 'deaf', False, None) + + assert "uciek od ojca" in tts_text + + +@pytest.mark.asyncio +async def test_handle_state_change_mute_true(vclogs_cog): + mock_member = MagicMock() + mock_member.display_name = "TestUser" + mock_channel = MagicMock() + + tts_text, channel = await vclogs_cog.handle_state_change(mock_member, mock_channel, 'mute', True, None) + + assert "idzie robić jajecznice" in tts_text + + +@pytest.mark.asyncio +async def test_handle_state_change_mute_false(vclogs_cog): + mock_member = MagicMock() + mock_member.display_name = "TestUser" + mock_channel = MagicMock() + + tts_text, channel = await vclogs_cog.handle_state_change(mock_member, mock_channel, 'mute', False, None) + + assert "zrobił jajecznice" in tts_text \ No newline at end of file -- cgit v1.2.3