def test_to_date_after_from_date(self):
     to_date = (datetime.datetime.now()).strftime('%Y-%m-%d')
     from_date = (datetime.datetime.now() - datetime.timedelta(days=10)).strftime('%Y-%m-%d')
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         from_date, to_date, None, 10, 10)
     self.assertEqual(t_analyser.to_date, datetime.datetime.strptime(to_date, '%Y-%m-%d'))
    def test_search_text_valid(self, cursor, api, access_token, oauth):
        cursor.return_value.pages.return_value = pages = [
                    [
                        mock.Mock(text="Hello my name is Fred.", created_at=datetime.datetime(2016, 9, 9)),
                        mock.Mock(text="About to blow up NK - Donald Trump.", created_at=datetime.datetime(2016, 9, 9))
                    ],

                    [
                        mock.Mock(text = "Dr. Merkel is awesome!", created_at=datetime.datetime(2016, 9, 9)),
                        mock.Mock(text = "Monash University 243546576879809", created_at=datetime.datetime(2016, 9, 9))
                    ]
            ]

        t_analyser = tweet_analyser.TweetAnalyser(
            "the", None, app_access_token, app_access_token_secret, user_access_token, user_access_token_secret,
            None, None, None, None, None)

        frequencies = t_analyser.analyse_tweets()

        found = False
        for item in frequencies:
            if item[0] == t_analyser.search_text:
                found = True
                break
        self.assertEqual(found, False)
 def test_tweets_ordered(self, cursor, api, access_token, oauth):
     cursor.return_value.pages.return_value = pages = [
         [
             mock.Mock(text="Hello my name is Fred.", created_at=datetime.datetime(2016, 9, 9)),
             mock.Mock(text="About to blow up NK - Donald Trump.", created_at=datetime.datetime(2016, 9, 9))
         ] * 105
     ]
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 203, app_access_token, app_access_token_secret, user_access_token, user_access_token_secret,
         None, None, None, None, None)
     frequencies = t_analyser.analyse_tweets()
     ordered = True
     for i in range(len(frequencies)-1):
         if frequencies[i][1] < frequencies[i+1][1]:
             ordered = False
     self.assertTrue(ordered)
    def test_top_t_words_not_supplied(self, cursor, api, access_token, oauth):
        cursor.return_value.pages.return_value = pages = [
            [
                mock.Mock(text="Hello my name is Fred.", created_at=datetime.datetime(2012, 9, 9)),
                mock.Mock(text="About to blow up NK - Donald Trump.", created_at=datetime.datetime(2011, 1, 9))
            ],

            [
                mock.Mock(text="Dr. Merkel is awesome!", created_at=datetime.datetime(2016, 9, 9)),
                mock.Mock(text="Monash University 243546576879809",created_at=datetime.datetime(2014, 10, 9))
            ]
        ]
        t_analyser = tweet_analyser.TweetAnalyser(
            "searchtext", 10, app_access_token, app_access_token_secret, user_access_token, user_access_token_secret,
            None, None, None, None, None)
        frequencies = t_analyser.analyse_tweets()
        self.assertEqual(len(frequencies), 10)
    def test_user_access_token_secret_invalid(self, cursor, api, access_token, oauth):
        with self.assertRaises(tweepy.error.TweepError):
            cursor.return_value.pages.return_value = pages = [
                [
                    mock.Mock(text="Hello my name is Fred.", created_at=datetime.datetime(2016, 9, 9)),
                    mock.Mock(text="About to blow up NK - Donald Trump.", created_at=datetime.datetime(2016, 9, 9))
                ],

                [
                    mock.Mock(text="Dr. Merkel is awesome!", created_at=datetime.datetime(2016, 9, 9)),
                    mock.Mock(text="Monash University 243546576879809", created_at=datetime.datetime(2016, 9, 9))
                ]
            ]
            api.side_effect = tweepy.error.TweepError(reason="user access token secret invalid")
            t_analyser = tweet_analyser.TweetAnalyser(
                "searchtext", 10, app_access_token, app_access_token_secret, user_access_token,
                user_access_token_secret, None, None, None, None, None)
            frequencies = t_analyser.analyse_tweets()
 def test_tweets_matching(self, cursor, api, access_token, oauth):
     cursor.return_value.pages.return_value = pages = [
         [
             mock.Mock(text="Hello my name is Fred.", created_at=datetime.datetime(2016, 9, 9)),
             mock.Mock(text="About to blow up NK - Donald Trump.", created_at=datetime.datetime(2016, 9, 9))
         ] * 105
     ]
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 203, app_access_token, app_access_token_secret, user_access_token, user_access_token_secret,
         None, None, None, None, None)
     frequencies = t_analyser.analyse_tweets()
     matching = False
     expected = [('Hello', 102), ('my', 102), ('name', 102), ('is', 102), ('About', 101),
                          ('to', 101), ('blow', 101), ('up', 101), ('NK', 101), ('Donald', 101)]
     for i in range(len(frequencies)):
         matching = False
         for j in range(len(expected)):
             if frequencies[i][0] == expected[j][0]:
                 matching = True
                 del expected[j]
                 break
         if matching is False:
             break
     self.assertTrue(matching)
 def test_max_num_tweets_invalid_num(self):
     with self.assertRaises(TypeError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", "invalid_max_num_tweets", "token", "token", "token", "token", 
             None, None, "@random_id", 10, 10)
 def test_from_date_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         None, None, None, 10, 10)
     self.assertEqual(t_analyser.from_date, datetime.datetime(2006, 3, 21)) # Default date is when Twitter was established.
 def test_min_word_count_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "search", 100, "token", "token", "token", "token", 
         None, None, "@random_id", 10, None)
     self.assertEqual(t_analyser.min_word_count, 0)
 def test_search_text_not_empty_and_not_alpha(self):
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "1", 10, "token", "token", "token", "token", 
             None, None, "@random_id", 10, 10)
 def test_from_date_invalid_format(self):
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             "invalid from date", None, None, 10, 10)
 def test_user_access_token_not_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         None, None, "@random_id", 10, 10)
     self.assertEqual(t_analyser.user_access_token, "token")
 def test_search_text_not_empty_and_alpha(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "a", 10, "token", "token", "token", "token", 
         None, None, "@random_id", 10, 10)
     self.assertEqual(t_analyser.search_text, "a")
 def test_from_date_after_today_date(self):
     d = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime('%Y-%m-%d')
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             d, None, None, 10, 10)
 def test_max_num_tweets_out_of_upper_bounds(self):
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 501, "token", "token", "token", "token",
             None, None, "@random_id", 10, 10)
 def test_top_t_words_invalid_num(self):
     with self.assertRaises(TypeError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             None, None, "@random_id", "invalid top t words", 10)
 def test_twitter_user_id_invalid(self):
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "a", 10, "token", "token", "token", "token", 
             None, None, "random_id", 10, 10)
 def test_twitter_user_id_valid(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "a", 10, "token", "token", "token", "token", 
         None, None, "@random_id", 10, 10)
     self.assertEqual(t_analyser.twitter_user_id, "random_id")
 def test_twitter_user_id_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         None, None, None, 10, 10)
     self.assertEqual(t_analyser.twitter_user_id, None)
 def test_max_num_tweets_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "search", None, "token", "token", "token", "token", 
         None, None, "@random_id", 10, 10)
     self.assertEqual(t_analyser.max_num_tweets, 100)
 def test_top_t_words_in_of_bounds(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         None, None, "@random_id", 1, 10)
     self.assertEqual(t_analyser.top_t_words, 1)
 def test_from_date_today_date(self):
     d = (datetime.datetime.now().now()).strftime('%Y-%m-%d')
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         d, None, None, 10, 10)
     self.assertEqual(t_analyser.from_date, datetime.datetime.strptime(d, '%Y-%m-%d'))
 def test_top_t_words_empty(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "search", 100, "token", "token", "token", "token", 
         None, None, "@random_id", None, 10)
     self.assertEqual(t_analyser.top_t_words, 10)
 def test_min_word_count_invalid_num(self):
     with self.assertRaises(TypeError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             None, None, "@random_id", 10, "invalid min count")
 def test_max_num_tweets_in_of_upper_bounds(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 500, "token", "token", "token", "token",
         None, None, "@random_id", 10, 10)
     self.assertEqual(t_analyser.max_num_tweets, 500)
 def test_min_word_count_out_of_bounds(self):
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             None, None, "@random_id", 10, -1)
 def test_user_access_token_empty(self):
     with self.assertRaises(TypeError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", None, "token", 
             None, None, "@random_id", 10, 10)
 def test_min_word_count_in_of_bounds(self):
     t_analyser = tweet_analyser.TweetAnalyser(
         "searchtext", 10, "token", "token", "token", "token", 
         None, None, "@random_id", 1, 1)
     self.assertEqual(t_analyser.min_word_count, 1)
Beispiel #29
0
        "Include results only until the given DATE. Specified as YYYY-MM-DD.",
        type=str)
    parser.add_argument(
        "-i",
        help=
        "An id of a specific twitter user to analyse. Should start with @ sign.",
        type=str)
    parser.add_argument("-t",
                        help="List at most the top T words in the set.",
                        type=int,
                        default=10)  # ASSUMPTION: argument is -T.
    parser.add_argument(
        "-c",
        help=
        "Only list words that occur the given minimum count or more times.",
        type=int)

    args = parser.parse_args()

    t_analyser = tweet_analyser.TweetAnalyser(args.s, args.m, args.o, args.p,
                                              args.u, args.x, args.a, args.b,
                                              args.i, args.t, args.c)

    frequency_table = t_analyser.analyse_tweets()

    for item in frequency_table:
        total = str(item[1])
        if len(total) == 1:
            total = "0" + total
        print(total + "    " + item[0])
 def test_to_date_equals_from_date(self):
     d = (datetime.datetime.now()).strftime('%Y-%m-%d')
     with self.assertRaises(ValueError):
         t_analyser = tweet_analyser.TweetAnalyser(
             "searchtext", 10, "token", "token", "token", "token", 
             d, d, None, 10, 10)