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_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 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))
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))
def setUp(self): self.filter = TweetFilter(track=['keyword'], follow=[123])
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))
def get_filter(self): return TweetFilter(track=['@whoisbpd'])