Esempio n. 1
0
    def test_map_attributes_to_retweet_with_hashtag(self):
        original_author = 'dialelo'
        original_text = 'I <3 #Python'
        original_status = create_status(user=original_author,
                                        text=original_text)

        text = 'RT @%s: %s' % (original_author, original_text)
        entities = {
            u'user_mentions': [],
            u'hashtags': [
                {u'indices': [5, 11],
                 u'text': u'Python'},
            ],
            u'urls': [],
            }
        retweet = create_status(text=text,
                                entities=entities,
                                is_retweet=True,
                                retweeted_status=original_status)

        # retweet text gets parsed because sometimes is not complete
        expected_result = [u'I ', u'<3 ', ('hashtag', '#Python')]
        result = map_attributes(retweet,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)
Esempio n. 2
0
    def test_insert_different_statuses(self):
        old_status = create_status(created_at=datetime(1988, 12, 19))
        new_status = create_status(id=2)

        self.timeline.add_statuses([old_status, new_status])

        self.assertEqual(len(self.timeline), 2)
Esempio n. 3
0
    def test_insert_different_statuses_individually(self):
        old_status = create_status(created_at=datetime(1988, 12, 19))
        new_status = create_status(id=2)

        # first
        self.timeline.add_status(old_status)
        self.assertEqual(len(self.timeline), 1)

        # second
        self.timeline.add_status(new_status)
        self.assertEqual(len(self.timeline), 2)
Esempio n. 4
0
    def test_active_index_does_not_change_when_adding_various_statuses(self):
        a_status = create_status(id=1)
        another_status = create_status(id=2)

        # first
        self.timeline.add_status(a_status)
        self.assertEqual(self.timeline.active_index, 0)

        # second
        self.timeline.add_status(another_status)
        self.assertEqual(self.timeline.active_index, 0)
Esempio n. 5
0
    def test_clear(self):
        old_created_at = datetime(1988, 12, 19)
        old_status = create_status(created_at=old_created_at)
        new_created_at = datetime.now()
        new_status = create_status(id=2,
                                   created_at=new_created_at)

        self.timeline.add_statuses([old_status, new_status])

        self.timeline.clear()

        self.assertEqual(len(self.timeline), 0)
Esempio n. 6
0
    def test_authors_username_retweet(self):
        user = '******'
        status = create_status(user=user)
        retweeter = 'bot'
        retweet = create_status(user=retweeter,
                                is_retweet=True,
                                retweeted_status=status,
                                author=user)

        author = retweet.authors_username

        self.assertEqual(user, author)
Esempio n. 7
0
    def test_statuses_ordered_reversely_by_date(self):
        old_status = create_status(created_at=datetime(1988, 12, 19))
        new_status = create_status(id=2)

        # ordered
        self.timeline = Timeline(statuses=[new_status, old_status])
        self.assertEqual(self.timeline[0], new_status)
        self.assertEqual(self.timeline[1], old_status)

        # unordered
        self.timeline = Timeline(statuses=[old_status, new_status])
        self.assertEqual(self.timeline[0], new_status)
        self.assertEqual(self.timeline[1], old_status)
Esempio n. 8
0
    def test_statuses_ordered_reversely_by_date(self):
        old_status = create_status(created_at=datetime(1988, 12, 19))
        new_status = create_status(id=2)

        # ordered
        self.timeline = Timeline(statuses=[new_status, old_status])
        self.assertEqual(self.timeline[0], new_status)
        self.assertEqual(self.timeline[1], old_status)

        # unordered
        self.timeline = Timeline(statuses=[old_status, new_status])
        self.assertEqual(self.timeline[0], new_status)
        self.assertEqual(self.timeline[1], old_status)
Esempio n. 9
0
    def test_unique_statuses_in_timeline(self):
        status = create_status()

        self.timeline.add_status(status)
        self.timeline.add_status(status)

        self.assertEqual(len(self.timeline), 1)
Esempio n. 10
0
    def test_is_DM(self):
        # status is NOT a DM
        status = create_status()
        self.failIf(is_DM(status))

        dm = create_direct_message()
        self.failUnless(is_DM(dm))
Esempio n. 11
0
    def test_is_DM(self):
        # status is NOT a DM
        status = create_status()
        self.assertFalse(is_DM(status))

        dm = create_direct_message()
        self.assertTrue(is_DM(dm))
Esempio n. 12
0
    def test_is_DM(self):
        # status is NOT a DM
        status = create_status()
        self.failIf(is_DM(status))

        dm = create_direct_message()
        self.failUnless(is_DM(dm))
Esempio n. 13
0
    def test_authors_username_tweet(self):
        user = '******'
        status = create_status(user=user)

        author = status.authors_username

        self.assertEqual(user, author)
Esempio n. 14
0
    def test_authors_username_tweet(self):
        user = '******'
        status = create_status(user=user)

        author = status.authors_username

        self.assertEqual(user, author)
Esempio n. 15
0
    def test_map_attributes_mention(self):
        text = '@pypi is down!'

        entities = {
            u'user_mentions': [
                {
                    u'id': 60840400,
                    u'indices': [0, 5],
                    u'id_str': u'60840400',
                    u'screen_name': u'pypi',
                    u'name': u'PYthon Package Index'
                },
            ],
            u'hashtags': [],
            u'urls': [],
        }
        tweet = create_status(
            text=text,
            entities=entities,
        )

        expected_result = [('attag', u'@pypi'), u' is down!']
        result = map_attributes(tweet,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)
Esempio n. 16
0
    def test_unique_statuses_in_timeline(self):
        status = create_status()

        self.timeline.add_status(status)
        self.timeline.add_status(status)

        self.assertEqual(len(self.timeline), 1)
Esempio n. 17
0
    def test_thread(self):
        status = create_status()

        thread_timeline = self.factory.thread(status)

        self.assertEqual(thread_timeline.update_function.__name__,
                         'get_thread',)
        self.assertEqual(thread_timeline._args[0], status)
Esempio n. 18
0
    def test_unread_count(self):
        self.assertEqual(self.timeline.unread_count, 0)

        # a status
        status = create_status(id=1)
        self.timeline.add_status(status)
        self.assertEqual(self.timeline.unread_count, 1)

        self.timeline.mark_all_as_read()
        self.assertEqual(self.timeline.unread_count, 0)

        # new statuses
        statuses = [create_status(id=id_num) for id_num in xrange(2, 10)]
        self.timeline.add_statuses(statuses)
        self.assertEqual(self.timeline.unread_count, len(statuses))

        self.timeline.mark_all_as_read()
        self.assertEqual(self.timeline.unread_count, 0)
Esempio n. 19
0
    def test_dm_recipients_username_tweet(self):
        # authenticating user
        user = '******'

        # given a status in which the author is the authenticated author
        # must return `None`
        status = create_status(user=user)
        recipient_own_tweet = status.dm_recipients_username(user)
        self.failIf(recipient_own_tweet)
Esempio n. 20
0
    def test_unread_count(self):
        self.assertEqual(self.timeline.unread_count, 0)

        # a status
        status = create_status(id=1)
        self.timeline.add_status(status)
        self.assertEqual(self.timeline.unread_count, 1)

        self.timeline.mark_all_as_read()
        self.assertEqual(self.timeline.unread_count, 0)

        # new statuses
        statuses = [create_status(id=id_num) for id_num in xrange(2, 10)]
        self.timeline.add_statuses(statuses)
        self.assertEqual(self.timeline.unread_count, len(statuses))

        self.timeline.mark_all_as_read()
        self.assertEqual(self.timeline.unread_count, 0)
Esempio n. 21
0
    def test_dm_recipients_username_tweet(self):
        # authenticating user
        user = '******'

        # given a status in which the author is the authenticated author
        # must return `None`
        status = create_status(user=user)
        recipient_own_tweet = status.dm_recipients_username(user)
        self.failIf(recipient_own_tweet)
Esempio n. 22
0
    def test_thread_timeline(self):
        active_timeline = self.controller.timelines.active
        active_timeline.add_status(create_status())
        # make sure that there is at least one status in the active timeline
        self.assertTrue(active_timeline.active)

        self.controller.append_thread_timeline()

        appended_timeline = self.timelines[-1]
        self.assertTrue(is_thread_timeline(appended_timeline))
Esempio n. 23
0
    def test_thread_timeline(self):
        active_timeline = self.controller.timelines.active
        active_timeline.add_status(create_status())
        # make sure that there is at least one status in the active timeline
        self.assertTrue(active_timeline.active)

        self.controller.append_thread_timeline()

        appended_timeline = self.timelines[-1]
        self.assertTrue(is_thread_timeline(appended_timeline))
Esempio n. 24
0
    def test_mentioned_usernames(self):
        user = '******'
        mentioned = ('dialelo', 'mental_floss', '4n_4Wfu1_US3RN4M3')

        expected_output = list(mentioned)

        text = "@%s, @%s and @%s" % mentioned
        status = create_status(user=user, text=text)

        expected = set(expected_output)
        mentioned_usernames = status.mentioned_usernames
        self.assertEqual(expected, set(mentioned_usernames))
Esempio n. 25
0
    def test_hashtags(self):
        user = '******'
        hashtags = ('#turses', '#arch_linux', '#I<3Python')

        expected_output = list(hashtags)

        text = "%s %s %s" % hashtags
        status = create_status(user=user, text=text)

        expected = set(expected_output)
        mentioned_hashtags = status.hashtags
        self.assertEqual(expected, set(mentioned_hashtags))
Esempio n. 26
0
    def test_hashtags(self):
        user = '******'
        hashtags = ('#turses', '#arch_linux', '#I<3Python')

        expected_output = list(hashtags)

        text = "%s %s %s" % hashtags
        status = create_status(user=user,
                               text=text)

        expected = set(expected_output)
        mentioned_hashtags = status.hashtags
        self.assertEqual(expected, set(mentioned_hashtags))
Esempio n. 27
0
    def test_mentioned_usernames(self):
        user = '******'
        mentioned = ('dialelo', 'mental_floss', '4n_4Wfu1_US3RN4M3')

        expected_output = list(mentioned)

        text = "@%s, @%s and @%s" % mentioned
        status = create_status(user=user,
                               text=text)

        expected = set(expected_output)
        mentioned_usernames = status.mentioned_usernames
        self.assertEqual(expected, set(mentioned_usernames))
Esempio n. 28
0
    def test_mentioned_for_reply(self):
        user = '******'
        mentioned = ('dialelo', 'mental_floss', '4n_4Wfu1_US3RN4M3')

        expected_output = list(mentioned)
        expected_output.append(user)
        expected_output = map(prepend_at, expected_output)

        text = "@%s, @%s and @%s" % mentioned
        status = create_status(user=user, text=text)

        expected = set(filter(prepend_at, expected_output))
        mentioned_for_reply = status.mentioned_for_reply
        self.assertEqual(expected, set(mentioned_for_reply))
Esempio n. 29
0
    def test_mentioned_for_reply(self):
        user = '******'
        mentioned = ('dialelo', 'mental_floss', '4n_4Wfu1_US3RN4M3')

        expected_output = list(mentioned)
        expected_output.append(user)
        expected_output = map(prepend_at, expected_output)

        text = "@%s, @%s and @%s" % mentioned
        status = create_status(user=user,
                               text=text)

        expected = set(filter(prepend_at, expected_output))
        mentioned_for_reply = status.mentioned_for_reply
        self.assertEqual(expected, set(mentioned_for_reply))
Esempio n. 30
0
    def test_timeline(self):
        timeline = tests.create_timeline()

        self.assertTrue(isinstance(timeline, Timeline))
        self.assertEqual(0, len(timeline.statuses))

        status = None
        with self.assertRaises(Exception):
            timeline.add(status)

        status2 = tests.create_another_status()
        self.assertRaises(ValueError, timeline.remove(status2))

        status = tests.create_status()
        timeline.add(status)
        self.assertEqual(1, len(timeline.statuses))

        timeline.remove(status)
        self.assertEqual(0, len(timeline.statuses))
Esempio n. 31
0
    def test_timeline(self):
        timeline = tests.create_timeline()

        self.assertTrue(isinstance(timeline, Timeline))
        self.assertEqual(0, len(timeline.statuses))

        status = None
        with self.assertRaises(Exception):
            timeline.add(status)

        status2 = tests.create_another_status()
        self.assertRaises(ValueError, timeline.remove(status2))

        status = tests.create_status()
        timeline.add(status)
        self.assertEqual(1, len(timeline.statuses))

        timeline.remove(status)
        self.assertEqual(0, len(timeline.statuses))
Esempio n. 32
0
    def test_map_attributes_mention(self):
        text = '@pypi is down!'

        entities = {
            u'user_mentions': [
                {u'id': 60840400,
                 u'indices': [0, 5],
                 u'id_str': u'60840400',
                 u'screen_name': u'pypi',
                 u'name': u'PYthon Package Index'},
            ],
            u'hashtags': [],
            u'urls': [],
            }
        tweet = create_status(text=text,
                              entities=entities,)

        expected_result = [('attag', u'@pypi'), u' is down!']
        result = tweet.map_attributes(hashtag='hashtag',
                                      attag='attag',
                                      url='url')

        self.assertEqual(result, expected_result)
Esempio n. 33
0
    def test_map_attributes_with_mentions_hashtags_and_url(self):
        text = (u'@aaloy  QT @Pybonacci: \xa1Qu\xe9 pasada con Vim!'
                u' #Python #IDE RT @dialelo uso un setup parecido a este: '
                u'http://t.co/5lTGNzba')
        entities = {
            u'user_mentions': [{
                u'id': 60840400,
                u'indices': [0, 6],
                u'id_str': u'60840400',
                u'screen_name': u'aaloy',
                u'name': u'Antoni Aloy'
            }, {
                u'id': 552951614,
                u'indices': [11, 21],
                u'id_str': u'552951614',
                u'screen_name': u'Pybonacci',
                u'name': u'Pybonacci'
            }, {
                u'id': 87322884,
                u'indices': [60, 68],
                u'id_str': u'87322884',
                u'screen_name': u'dialelo',
                u'name': u'Alejandro G\xf3mez'
            }],
            u'hashtags': [{
                u'indices': [44, 51],
                u'text': u'Python'
            }, {
                u'indices': [52, 56],
                u'text': u'IDE'
            }],
            u'urls': [{
                u'url': u'http://t.co/5lTGNzba',
                u'indices': [99, 119],
                u'expanded_url':
                u'http://sontek.net/turning-vim-into-a-modern-python-ide',
                u'display_url': u'sontek.net/turning-vim-in\u2026'
            }]
        }
        expected_result = [('attag', u'@aaloy'), u'  QT ',
                           ('attag', u'@Pybonacci'),
                           u': \xa1Qu\xe9 pasada con Vim! ',
                           ('hashtag', u'#Python'), u' ', ('hashtag', u'#IDE'),
                           u' RT ', ('attag', u'@dialelo'),
                           u' uso un setup parecido a este: ',
                           ('url', u'sontek.net/turning-vim-in\u2026')]

        status = create_status(text=text, entities=entities)
        result = map_attributes(status,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)

        text = (u'New release of #Turses 0.1.6 with lots of improvements, '
                u'ncurses twitter client. https://t.co/cciH85AG via @dialelo')
        entities = {
            u'hashtags': [{
                u'indices': [15, 22],
                u'text': u'Turses'
            }],
            u'urls': [{
                u'display_url': u'github.com/alejandrogomez\u2026',
                u'expanded_url': u'https://github.com/alejandrogomez/turses',
                u'indices': [80, 101],
                u'url': u'https://t.co/cciH85AG'
            }],
            u'user_mentions': [{
                u'id': 87322884,
                u'id_str': u'87322884',
                u'indices': [106, 114],
                u'name': u'Alejandro G\xf3mez',
                u'screen_name': u'dialelo'
            }]
        }
        expected_result = [
            u'New release of ', ('hashtag', u'#Turses'),
            (u' 0.1.6 with lots of improvements, '
             u'ncurses twitter client. '),
            ('url', u'github.com/alejandrogomez\u2026'), u' via ',
            ('attag', u'@dialelo')
        ]

        status = create_status(user='******', text=text, entities=entities)
        result = map_attributes(status,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)
Esempio n. 34
0
 def test_status(self):
     status = tests.create_status()
     self.assertTrue(isinstance(status, Status))
     self.assertFalse(isinstance(status, User))
     self.assertFalse(isinstance(status, DirectMessage))
     self.assertEqual(status.__str__(), status.id_str)
Esempio n. 35
0
    def test_active_index_becomes_0_when_adding_first_status(self):
        status = create_status()

        self.timeline.add_status(status)

        self.assertEqual(self.timeline.active_index, 0)
Esempio n. 36
0
    def test_active_index_is_0_when_creating_timeline_with_statuses(self):
        status = create_status()

        self.timeline = Timeline(statuses=[status])

        self.assertEqual(self.timeline.active_index, 0)
Esempio n. 37
0
    def test_active_index_becomes_0_when_adding_first_status(self):
        status = create_status()

        self.timeline.add_status(status)

        self.assertEqual(self.timeline.active_index, 0)
Esempio n. 38
0
 def test_create_with_status(self):
     # load the defaults
     status = create_status()
     StatusWidget(status)
Esempio n. 39
0
    def test_map_attributes_with_mentions_hashtags_and_url(self):
        text = (u'@aaloy  QT @Pybonacci: \xa1Qu\xe9 pasada con Vim!'
                u' #Python #IDE RT @dialelo uso un setup parecido a este: '
                u'http://t.co/5lTGNzba')
        entities = {
            u'user_mentions': [
                {u'id': 60840400,
                 u'indices': [0, 6],
                 u'id_str': u'60840400',
                 u'screen_name': u'aaloy',
                 u'name': u'Antoni Aloy'},
                {u'id': 552951614,
                 u'indices': [11, 21],
                 u'id_str': u'552951614',
                 u'screen_name': u'Pybonacci',
                 u'name': u'Pybonacci'},
                {u'id': 87322884,
                 u'indices': [60, 68],
                 u'id_str': u'87322884',
                 u'screen_name': u'dialelo',
                 u'name': u'Alejandro G\xf3mez'}
            ],
            u'hashtags': [
                {u'indices': [44, 51],
                 u'text': u'Python'},
                {u'indices': [52, 56],
                 u'text': u'IDE'}
            ],
            u'urls': [
                {u'url': u'http://t.co/5lTGNzba',
                 u'indices': [99, 119],
                 u'expanded_url':
                    u'http://sontek.net/turning-vim-into-a-modern-python-ide',
                 u'display_url': u'sontek.net/turning-vim-in\u2026'}
            ]}
        expected_result = [('attag', u'@aaloy'), u'  QT ',
                           ('attag', u'@Pybonacci'),
                           u': \xa1Qu\xe9 pasada con Vim! ',
                           ('hashtag', u'#Python'), u' ', ('hashtag', u'#IDE'),
                           u' RT ', ('attag', u'@dialelo'),
                           u' uso un setup parecido a este: ',
                           ('url', u'sontek.net/turning-vim-in\u2026')]

        status = create_status(text=text,
                               entities=entities)
        result = map_attributes(status,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)

        text = (u'New release of #Turses 0.1.6 with lots of improvements, '
                u'ncurses twitter client. https://t.co/cciH85AG via @dialelo')
        entities = {
            u'hashtags': [{u'indices': [15, 22], u'text': u'Turses'}],
            u'urls': [{u'display_url': u'github.com/alejandrogomez\u2026',
                       u'expanded_url':
                       u'https://github.com/alejandrogomez/turses',
                       u'indices': [80, 101],
                       u'url': u'https://t.co/cciH85AG'}],
            u'user_mentions': [{u'id': 87322884,
                                u'id_str': u'87322884',
                                u'indices': [106, 114],
                                u'name': u'Alejandro G\xf3mez',
                                u'screen_name': u'dialelo'}]
        }
        expected_result = [u'New release of ',
                           ('hashtag', u'#Turses'),
                           (u' 0.1.6 with lots of improvements, '
                            u'ncurses twitter client. '),
                           ('url', u'github.com/alejandrogomez\u2026'),
                           u' via ',
                           ('attag', u'@dialelo')]

        status = create_status(user='******',
                               text=text,
                               entities=entities)
        result = map_attributes(status,
                                hashtag='hashtag',
                                attag='attag',
                                url='url')

        self.assertEqual(result, expected_result)
Esempio n. 40
0
    def test_create_fav(self):
        api_twipy = tests.create_api()

        tweet = tests.create_status()

        api_twipy.create_fav(tweet_id=tweet.id_str)
Esempio n. 41
0
 def test_create_with_status(self):
     # load the defaults
     configuration = Configuration()
     status = create_status()
     StatusWidget(status, configuration)
Esempio n. 42
0
 def test_status(self):
     status = tests.create_status()
     self.assertTrue(isinstance(status, Status))
     self.assertFalse(isinstance(status, User))
     self.assertFalse(isinstance(status, DirectMessage))
     self.assertEqual(status.__str__(), status.id_str)
Esempio n. 43
0
 def test_create_with_status(self):
     # load the defaults
     status = create_status()
     StatusWidget(status)
Esempio n. 44
0
    def test_retweet(self):
        api_twipy = tests.create_api()

        status = tests.create_status()

        api_twipy.retweet(tweet_id=status.id_str)
Esempio n. 45
0
    def test_active_index_is_0_when_creating_timeline_with_statuses(self):
        status = create_status()

        self.timeline = Timeline(statuses=[status])

        self.assertEqual(self.timeline.active_index, 0)