aboutsummaryrefslogtreecommitdiffstats
path: root/tests/rules
diff options
context:
space:
mode:
authorGravatar Sebastiaan Zeeff <[email protected]>2019-10-13 11:56:36 +0200
committerGravatar Sebastiaan Zeeff <[email protected]>2019-10-13 11:56:36 +0200
commit562ede819308929900e3e0c6a41ae61ca32abab6 (patch)
treec7c81da304635cdd97d9ffa67d1e9f8ab6c25692 /tests/rules
parentMove the `rules.attachments` module tests to `unittest`. (diff)
Move test_attachments.py to tests/bot/rules dir
Diffstat (limited to 'tests/rules')
-rw-r--r--tests/rules/__init__.py0
-rw-r--r--tests/rules/test_attachments.py52
2 files changed, 0 insertions, 52 deletions
diff --git a/tests/rules/__init__.py b/tests/rules/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/tests/rules/__init__.py
+++ /dev/null
diff --git a/tests/rules/test_attachments.py b/tests/rules/test_attachments.py
deleted file mode 100644
index 4bb0acf7c..000000000
--- a/tests/rules/test_attachments.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import asyncio
-import unittest
-from dataclasses import dataclass
-from typing import Any, List
-
-from bot.rules import attachments
-
-
-# Using `MagicMock` sadly doesn't work for this usecase
-# since it's __eq__ compares the MagicMock's ID. We just
-# want to compare the actual attributes we set.
-@dataclass
-class FakeMessage:
- author: str
- attachments: List[Any]
-
-
-def msg(total_attachments: int) -> FakeMessage:
- return FakeMessage(author='lemon', attachments=list(range(total_attachments)))
-
-
-class AttachmentRuleTests(unittest.TestCase):
- """Tests applying the `attachment` antispam rule."""
-
- def test_allows_messages_without_too_many_attachments(self):
- """Messages without too many attachments are allowed as-is."""
- cases = (
- (msg(0), msg(0), msg(0)),
- (msg(2), msg(2)),
- (msg(0),),
- )
-
- for last_message, *recent_messages in cases:
- with self.subTest(last_message=last_message, recent_messages=recent_messages):
- coro = attachments.apply(last_message, recent_messages, {'max': 5})
- self.assertIsNone(asyncio.run(coro))
-
- def test_disallows_messages_with_too_many_attachments(self):
- """Messages with too many attachments trigger the rule."""
- cases = (
- ((msg(4), msg(0), msg(6)), [msg(4), msg(6)], 10),
- ((msg(6),), [msg(6)], 6),
- ((msg(1),) * 6, [msg(1)] * 6, 6),
- )
- for messages, relevant_messages, total in cases:
- with self.subTest(messages=messages, relevant_messages=relevant_messages, total=total):
- last_message, *recent_messages = messages
- coro = attachments.apply(last_message, recent_messages, {'max': 5})
- self.assertEqual(
- asyncio.run(coro),
- (f"sent {total} attachments in 5s", ('lemon',), relevant_messages)
- )