diff options
author | 2023-02-26 17:39:38 +0000 | |
---|---|---|
committer | 2023-02-26 17:39:38 +0000 | |
commit | 2e3fb8fcdf6e4507e8ba9c8b1e776f9dfe17efb5 (patch) | |
tree | 86453237a84b8ebaef366438566ba2160b197e13 /tests | |
parent | Only review users with recent activity (diff) |
Add tests for new behaviour
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bot/exts/recruitment/talentpool/test_review.py | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/tests/bot/exts/recruitment/talentpool/test_review.py b/tests/bot/exts/recruitment/talentpool/test_review.py index 03c78ab08..9ad429ace 100644 --- a/tests/bot/exts/recruitment/talentpool/test_review.py +++ b/tests/bot/exts/recruitment/talentpool/test_review.py @@ -30,13 +30,17 @@ def nomination( inserted_at: datetime, num_entries: int, reviewed: bool = False, - id: int | None = None + id: int | None = None, + msg_count: int = 1000, ) -> Mock: + id = id or MockMember().id return Mock( id=id or MockMember().id, + user_id=id, inserted_at=inserted_at, entries=[Mock() for _ in range(num_entries)], - reviewed=reviewed + reviewed=reviewed, + _msg_count=msg_count, ) @@ -117,10 +121,13 @@ class ReviewerTests(unittest.IsolatedAsyncioTestCase): # Each case contains a list of nominations, followed by the index in that list # of the one that should be selected, or None if None should be returned cases = [ - # One nomination, too recent so don't send. + # Don't send if too recent, already reviewed, or no recent messages. ( [ nomination(now - timedelta(days=1), 5), + nomination(now - timedelta(days=10), 5, reviewed=True), + nomination(now - timedelta(days=10), 5, msg_count=0), + ], None, ), @@ -151,6 +158,11 @@ class ReviewerTests(unittest.IsolatedAsyncioTestCase): with self.subTest(case_num=case_num): get_nominations_mock = AsyncMock(return_value=nominations) self.nomination_api.get_nominations = get_nominations_mock + + activity = {nomination.id: nomination._msg_count for nomination in nominations} + get_activity_mock = AsyncMock(return_value=activity) + self.nomination_api.get_activity = get_activity_mock + res = await self.reviewer.get_nomination_to_review() if expected is None: @@ -158,6 +170,7 @@ class ReviewerTests(unittest.IsolatedAsyncioTestCase): else: self.assertEqual(res, nominations[expected]) get_nominations_mock.assert_called_once_with(active=True) + get_activity_mock.assert_called_once() @patch("bot.exts.recruitment.talentpool._review.MIN_NOMINATION_TIME", timedelta(days=0)) async def test_get_nomination_to_review_order(self): @@ -201,6 +214,10 @@ class ReviewerTests(unittest.IsolatedAsyncioTestCase): get_nominations_mock = AsyncMock(return_value=case[i:]) self.nomination_api.get_nominations = get_nominations_mock + activity = {nomination.id: nomination._msg_count for nomination in case} + get_activity_mock = AsyncMock(return_value=activity) + self.nomination_api.get_activity = get_activity_mock + res = await self.reviewer.get_nomination_to_review() self.assertEqual(res, case[i]) get_nominations_mock.assert_called_once_with(active=True) |