def test_predicate_eval_emoji_reaction(self): """Test the predicate_eval_emoji_reaction function.""" valid_reaction = MockReaction(message=MockMessage(id=1)) valid_reaction.__str__.return_value = snekbox.REEVAL_EMOJI valid_ctx = MockContext(message=MockMessage(id=1), author=MockUser(id=2)) valid_user = MockUser(id=2) invalid_reaction_id = MockReaction(message=MockMessage(id=42)) invalid_reaction_id.__str__.return_value = snekbox.REEVAL_EMOJI invalid_user_id = MockUser(id=42) invalid_reaction_str = MockReaction(message=MockMessage(id=1)) invalid_reaction_str.__str__.return_value = ':longbeard:' cases = ((invalid_reaction_id, valid_user, False, 'invalid reaction ID'), (valid_reaction, invalid_user_id, False, 'invalid user ID'), (invalid_reaction_str, valid_user, False, 'invalid reaction __str__'), (valid_reaction, valid_user, True, 'matching attributes')) for reaction, user, expected, testname in cases: with self.subTest( msg=f'Test with {testname} and expected return {expected}' ): actual = snekbox.predicate_eval_emoji_reaction( valid_ctx, reaction, user) self.assertEqual(actual, expected)
def test_own_reactions(self): """Only bot's own emoji are extracted from the input incident.""" reactions = ( MockReaction(emoji="A", me=True), MockReaction(emoji="B", me=True), MockReaction(emoji="C", me=False), ) message = MockMessage(reactions=reactions) self.assertSetEqual(incidents.own_reactions(message), {"A", "B"})