Initial test

This commit is contained in:
Michał Rudowicz 2024-06-13 18:24:19 +02:00
parent c9783eefe0
commit 1d111f003f
1 changed files with 41 additions and 3 deletions

View File

@ -1,10 +1,11 @@
#!/usr/bin/env python #!/usr/bin/env python
import unittest import unittest
from unittest.mock import Mock from unittest.mock import MagicMock
import os import os
import re import re
import sys import sys
from dataclasses import dataclass
fakes_dir = os.path.join(os.path.dirname(__file__), 'fakes') fakes_dir = os.path.join(os.path.dirname(__file__), 'fakes')
assert(os.path.exists(fakes_dir)) assert(os.path.exists(fakes_dir))
sys.path.insert(0, fakes_dir) sys.path.insert(0, fakes_dir)
@ -16,12 +17,49 @@ MESSAGE_ID = "Message ID"
BOT_SPEC = ["kick_chat_member", "delete_message"] BOT_SPEC = ["kick_chat_member", "delete_message"]
@dataclass
class Chat:
ban_member = MagicMock()
effective_name = "effective_chat_name"
@dataclass
class User:
id = 0
name = "User name"
@dataclass
class Message:
text = "Message text"
delete = MagicMock()
chat = Chat()
from_user = User()
@dataclass
class Update:
message = Message()
def make_update(msg: str) -> Update:
update = Update()
update.message.text = msg
return update
class TestAutoBanBot(unittest.IsolatedAsyncioTestCase): class TestAutoBanBot(unittest.IsolatedAsyncioTestCase):
def setUp(self): def setUp(self):
self.regexes = map(lambda r: re.compile(r, re.I), ["test123", "(t\.me\/|\@)[a-z]+bot"]) self.regexes = list(map(lambda r: re.compile(r, re.I), ["test123", "(t\\.me\\/|\\@)[a-z]+bot"]))
async def test_not_bannable(self): async def test_not_bannable(self):
await autobanbot.new_msg(None, None, self.regexes) messages = ["not bannable message", "siematest_123elo", "i am not a bot", "t.me, i'm not a bot"]
for msg in messages:
with self.subTest(msg=msg):
update = make_update(msg)
await autobanbot.new_msg(update, None, self.regexes)
update.message.delete.assert_not_called()
update.message.chat.ban_member.assert_not_called()
if __name__ == '__main__': if __name__ == '__main__':