blob: 056a8680ba22d6e447df4faa7eec13338ac3f80f (
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
|
import pytest
from unittest.mock import AsyncMock, patch, MagicMock
from conftest import MockApplicationContext
@pytest.fixture
def assistant_cog():
with patch('os.getenv', return_value="test_keyword"):
from cogs.assistant import Jarvis
mock_bot = MagicMock()
mock_bot.user = MagicMock()
mock_bot.user.id = 111
cog = Jarvis(mock_bot)
return cog
def test_assistant_keyword_default(assistant_cog):
assert assistant_cog.keyword == "test_keyword"
@pytest.mark.asyncio
async def test_assistant_on_message_ignored_bot_message(assistant_cog):
mock_author = MagicMock()
mock_author.id = 456
mock_author.bot = True
mock_message = MagicMock()
mock_message.author = mock_author
with patch.object(assistant_cog, 'assistant', new_callable=AsyncMock) as mock_assistant:
await assistant_cog.on_message(mock_message)
mock_assistant.assert_not_called()
@pytest.mark.asyncio
async def test_assistant_on_message_mentions_bot(assistant_cog):
mock_message = MagicMock()
mock_message.author = MagicMock()
mock_message.author.id = 123
mock_mention = MagicMock()
mock_mention.id = 111
mock_message.mentions = [mock_mention]
mock_message.content = "test"
with patch.object(assistant_cog, 'assistant', new_callable=AsyncMock) as mock_assistant:
await assistant_cog.on_message(mock_message)
mock_assistant.assert_called_once_with(mock_message)
@pytest.mark.asyncio
async def test_assistant_on_message_keyword_match(assistant_cog):
assistant_cog.keyword = "test"
mock_message = MagicMock()
mock_message.author = MagicMock()
mock_message.author.id = 123
mock_message.mentions = []
mock_message.content = "test message with test keyword"
with patch.object(assistant_cog, 'assistant', new_callable=AsyncMock) as mock_assistant:
await assistant_cog.on_message(mock_message)
mock_assistant.assert_called_once_with(mock_message)
|