aboutsummaryrefslogtreecommitdiffstats
path: root/tests/cogs/test_vclogs.py
blob: 20034780da0a17f5789e3be20fdc8b45e0b2e91b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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