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