def test_match_user_stream_no_track(self):
        self.filter = TweetFilter(track=[])
        match = Tweet({'text': 'keyword text', 'entities': {}, 'user': {'id': 1}})
        unmatched = Tweet({'text': 'text otherkey', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertTrue(self.filter.match_tweet(unmatched, user_stream=True))
Пример #2
0
    def test_match_user_stream_no_track(self):
        self.filter = TweetFilter(track=[])
        match = Tweet({
            'text': 'keyword text',
            'entities': {},
            'user': {
                'id': 1
            }
        })
        unmatched = Tweet({
            'text': 'text otherkey',
            'entities': {},
            'user': {
                'id': 1
            }
        })

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertTrue(self.filter.match_tweet(unmatched, user_stream=True))
Пример #3
0
    def get_filter(self):
        """
        Override this method for custom filter. By default returns a filter with the bot's authenticated user ID in the
        follow list.

        Example:

        .. code-block:: python

           return TweetFilter(track=['hello'], follow=['<some_user_id>'])`
        """
        return TweetFilter(follow=[str(self.client.get_current_user().id)])
class TweetFilterModelTestCase(TestCase):
    def setUp(self):
        self.filter = TweetFilter(track=['keyword'], follow=[123])

    def test_match_tracked_keyword(self):
        match = Tweet({'text': 'keyword text', 'entities': {}, 'user': {'id': 1}})
        unmatched = Tweet({'text': 'text otherkey', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_tweet_posters(self):
        match = Tweet({'text': 'text', 'entities': {}, 'user': {'id': 123}})
        unmatched = Tweet({'text': 'text', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_user_mentions(self):
        match = Tweet({'text': 'text', 'entities': {'user_mentions': [{'id': 123}]}, 'user': {'id': 1}})
        unmatched = Tweet({'text': 'text', 'entities': {'user_mentions': [{'id': 1}]}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_user_stream_no_track(self):
        self.filter = TweetFilter(track=[])
        match = Tweet({'text': 'keyword text', 'entities': {}, 'user': {'id': 1}})
        unmatched = Tweet({'text': 'text otherkey', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertTrue(self.filter.match_tweet(unmatched, user_stream=True))

    def test_match_user_stream_with_track(self):
        match = Tweet({'text': 'keyword text', 'entities': {}, 'user': {'id': 1}})
        unmatched = Tweet({'text': 'text otherkey', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=True))
Пример #5
0
    def get_merged_filter(self):
        """
        Return merged filter from list of handlers

        :return: merged filter
        :rtype: :class:`~responsebot.models.TweetFilter`
        """
        track = set()
        follow = set()

        for handler in self.handlers:
            track.update(handler.filter.track)
            follow.update(handler.filter.follow)

        return TweetFilter(track=list(track), follow=list(follow))
Пример #6
0
 def setUp(self):
     self.filter = TweetFilter(track=['keyword'], follow=[123])
Пример #7
0
class TweetFilterModelTestCase(TestCase):
    def setUp(self):
        self.filter = TweetFilter(track=['keyword'], follow=[123])

    def test_match_tracked_keyword(self):
        match = Tweet({
            'text': 'keyword text',
            'entities': {},
            'user': {
                'id': 1
            }
        })
        unmatched = Tweet({
            'text': 'text otherkey',
            'entities': {},
            'user': {
                'id': 1
            }
        })

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_tweet_posters(self):
        match = Tweet({'text': 'text', 'entities': {}, 'user': {'id': 123}})
        unmatched = Tweet({'text': 'text', 'entities': {}, 'user': {'id': 1}})

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_user_mentions(self):
        match = Tweet({
            'text': 'text',
            'entities': {
                'user_mentions': [{
                    'id': 123
                }]
            },
            'user': {
                'id': 1
            }
        })
        unmatched = Tweet({
            'text': 'text',
            'entities': {
                'user_mentions': [{
                    'id': 1
                }]
            },
            'user': {
                'id': 1
            }
        })

        self.assertTrue(self.filter.match_tweet(match, user_stream=False))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=False))

    def test_match_user_stream_no_track(self):
        self.filter = TweetFilter(track=[])
        match = Tweet({
            'text': 'keyword text',
            'entities': {},
            'user': {
                'id': 1
            }
        })
        unmatched = Tweet({
            'text': 'text otherkey',
            'entities': {},
            'user': {
                'id': 1
            }
        })

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertTrue(self.filter.match_tweet(unmatched, user_stream=True))

    def test_match_user_stream_with_track(self):
        match = Tweet({
            'text': 'keyword text',
            'entities': {},
            'user': {
                'id': 1
            }
        })
        unmatched = Tweet({
            'text': 'text otherkey',
            'entities': {},
            'user': {
                'id': 1
            }
        })

        self.assertTrue(self.filter.match_tweet(match, user_stream=True))
        self.assertFalse(self.filter.match_tweet(unmatched, user_stream=True))
Пример #8
0
 def get_filter(self):
     return TweetFilter(track=['@whoisbpd'])
 def setUp(self):
     self.filter = TweetFilter(track=['keyword'], follow=[123])