-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_leave_notification_test.py
52 lines (44 loc) · 2.42 KB
/
user_leave_notification_test.py
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
import unittest
import asyncio
import asynctest
from unittest.mock import Mock, MagicMock, PropertyMock, call
import user_leave_notification
from test_utils import create_mock_user
from user_leave_notification import UserLeaveNotification
from discord_service import DiscordService
from discord_mention_factory import DiscordMentionFactory
from test_utils import MockConfigurationService
class TestUserLeaveNotificationAddsCallbackToDiscordOnMemberRemoveCallbacks(asynctest.TestCase):
def setUp(self):
self.config = { "user_leave_notification": {
"message": "{left_user} has left",
"channel": "user-left-channel"
} }
self.mock_config_service = MockConfigurationService(self.config)
self.discord = MagicMock()
self.discord_mention_service = MagicMock()
self.discord.on_member_remove_callbacks = []
UserLeaveNotification(self.mock_config_service, self.discord, self.discord_mention_service)
def runTest(self):
assert len(self.discord.on_member_remove_callbacks) == 1
callback = self.discord.on_member_remove_callbacks[0]
assert callable(callback)
class TestUserUserLeaveNotificationSendsMessageUponUserLeft(asynctest.TestCase):
def setUp(self):
self.config = { "user_leave_notification": {
"message": "{left_user} has left",
"channel": "user-left-channel"
} }
self.mock_config_service = MockConfigurationService(self.config)
self.discord = asynctest.Mock(DiscordService)
self.discord.on_member_remove_callbacks = []
self.mock_left_user = create_mock_user("lame_guy", "lame_guy_name")
self.discord_mention_service = MagicMock(DiscordMentionFactory)
self.message_from_mention_factory = "generated message from factory"
self.discord_mention_service.perform_replacement=MagicMock(return_value=self.message_from_mention_factory)
UserLeaveNotification(self.mock_config_service, self.discord, self.discord_mention_service)
async def runTest(self):
callback = self.discord.on_member_remove_callbacks[0]
await callback(self.mock_left_user)
self.discord_mention_service.perform_replacement.assert_called_with("{user:display_name:0} has left", [self.mock_left_user])
self.discord.send_channel_message.assert_called_with(self.message_from_mention_factory, "user-left-channel")