import pytest from unittest.mock import AsyncMock, patch, MagicMock from 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("cogs.vclogs.get_connection") as mock_conn: mock_cursor = MagicMock() mock_conn.return_value.cursor.return_value = mock_cursor mock_conn.return_value.close.return_value = None mock_cursor.fetchall.return_value = [] from cogs.vclogs import load_activity_data data = load_activity_data() assert isinstance(data, dict) def test_save_activity_data(): with patch("cogs.vclogs.get_connection") as mock_conn: mock_cursor = MagicMock() mock_conn.return_value.cursor.return_value = mock_cursor mock_conn.return_value.commit.return_value = None mock_conn.return_value.close.return_value = None from cogs.vclogs import save_activity_data save_activity_data({"123": {"active": True}}) @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