Esempio n. 1
0
 def test_in_reply_to_url(self):
     tweet_1 = TweetFactory(in_reply_to_screen_name='bob',
                             in_reply_to_status_id=1234567)
     self.assertEqual(tweet_1.in_reply_to_url,
                     'https://twitter.com/bob/status/1234567')
     tweet_2 = TweetFactory(in_reply_to_screen_name='')
     self.assertEqual(tweet_2.in_reply_to_url, '')
Esempio n. 2
0
 def test_get_retweeted_tweet_caches(self, get_method):
     "Should only fetch retweeted Tweet from DB once."
     retweeted_tweet = TweetFactory(text='Retweeted tweet!', twitter_id=123)
     tweet = TweetFactory(retweeted_status_id=123)
     tweet.get_retweeted_tweet()
     tweet.get_retweeted_tweet()
     self.assertEqual(get_method.call_count, 1)
Esempio n. 3
0
 def test_ordering(self):
     """Multiple tweets are sorted by post_time descending"""
     time_now = datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
     tweet_1 = TweetFactory(
                     post_time=time_now - datetime.timedelta(minutes=1))
     tweet_2 = TweetFactory(post_time=time_now)
     tweets = Tweet.objects.all()
     self.assertEqual(tweets[0].pk, tweet_2.pk)
Esempio n. 4
0
 def test_tweets(self):
     "It should be possible to belong to more than one tweet."
     tweet_1 = TweetFactory(text='1')
     tweet_2 = TweetFactory(text='2')
     photo = PhotoFactory(tweets=(tweet_1, tweet_2,))
     self.assertEqual(2, photo.tweets.count())
     self.assertEqual(photo.tweets.all()[0], tweet_2)
     self.assertEqual(photo.tweets.all()[1], tweet_1)
Esempio n. 5
0
 def test_default_manager(self):
     "Default Manager shows both private and public photos"
     public_user = UserFactory(is_private=False)
     private_user = UserFactory(is_private=True)
     public_tweet = TweetFactory(user=public_user)
     private_tweet = TweetFactory(user=private_user)
     public_photos = PhotoFactory.create_batch(2, tweets=(public_tweet,))
     private_photos = PhotoFactory.create_batch(1, tweets=(private_tweet,))
     self.assertEqual(len(Media.objects.all()), 3)
 def test_saves_correct_tweet_data(self, save_tweet):
     """Assert save_tweet is called once per tweet.
     Not actually checking what's passed in."""
     save_tweet.side_effect = [
         TweetFactory(), TweetFactory(),
         TweetFactory()
     ]
     self.add_response(body=self.make_response_body())
     result = FavoriteTweetsFetcher(screen_name='jill').fetch()
     self.assertEqual(save_tweet.call_count, 3)
Esempio n. 7
0
 def test_favorites(self):
     user = UserFactory(screen_name='bill')
     tweet_1 = TweetFactory(text ='Tweet 1')
     tweet_2 = TweetFactory(text ='Tweet 2')
     user.favorites.add(tweet_1)
     user.favorites.add(tweet_2)
     faves = User.objects.get(screen_name='bill').favorites.all()
     self.assertEqual(len(faves), 2)
     self.assertIsInstance(faves[0], Tweet)
     self.assertEqual(faves[0].text, 'Tweet 2')
     self.assertEqual(faves[1].text, 'Tweet 1')
Esempio n. 8
0
    def test_public_favorites_tweets_manager(self):
        "Should contain recent PUBLIC tweets favorited the Accounts"
        accounts = AccountFactory.create_batch(2)
        public_user = UserFactory(is_private=False)
        private_user = UserFactory(is_private=True)
        public_tweet = TweetFactory(user=public_user)
        private_tweet = TweetFactory(user=private_user)

        accounts[0].user.favorites.add(private_tweet)
        accounts[0].user.favorites.add(public_tweet)
        accounts[1].user.favorites.add(private_tweet)

        favorites = Tweet.public_favorite_objects.all()
        self.assertEqual(len(favorites), 1)
        self.assertEqual(favorites[0].pk, public_tweet.pk)
Esempio n. 9
0
 def test_default_manager_recent(self):
     "The default manager includes tweets from public AND private users"
     public_user = UserFactory(is_private=False)
     private_user = UserFactory(is_private=True)
     public_tweets = TweetFactory.create_batch(2, user=public_user)
     private_tweet = TweetFactory(user=private_user)
     self.assertEqual(len(Tweet.objects.all()), 3)
Esempio n. 10
0
    def setUp(self):
        self.user_1 = UserFactory(screen_name='terry')
        self.user_2 = UserFactory(screen_name='bob')
        self.user_3 = UserFactory(screen_name='thelma', is_private=True)
        self.account_1 = AccountFactory(user=self.user_1)
        account_2 = AccountFactory(user=self.user_2)
        account_3 = AccountFactory(user=self.user_3)  # private

        # Public tweets in 2015 and 2016:
        tweets2015 = TweetFactory.create_batch(
            3, post_time=datetime_from_str('2015-01-01 12:00:00'))
        tweets2016 = TweetFactory.create_batch(
            2, post_time=datetime_from_str('2016-01-01 12:00:00'))
        # One private tweet in 2015:
        private_tweet = TweetFactory(
            post_time=datetime_from_str('2015-01-01 12:00:00'))
        private_tweet.user.is_private = True
        private_tweet.user.save()

        self.account_1.user.favorites.add(private_tweet)
        self.account_1.user.favorites.add(tweets2015[0])
        self.account_1.user.favorites.add(tweets2015[1])
        self.account_1.user.favorites.add(tweets2015[2])
        self.account_1.user.favorites.add(tweets2016[0])
        self.account_1.user.favorites.add(tweets2016[1])

        account_2.user.favorites.add(tweets2015[1])
        account_2.user.favorites.add(tweets2016[1])
        account_3.user.favorites.add(tweets2015[1])  # private user favoriting
Esempio n. 11
0
 def test_media(self):
     tweet = TweetFactory()
     photo_1 = PhotoFactory()
     photo_2 = PhotoFactory()
     photo_1.tweets.add(tweet)
     photo_2.tweets.add(tweet)
     self.assertEqual(2, tweet.media.count())
Esempio n. 12
0
 def test_makes_text_html(self, htmlify_method):
     "When save() is called, text_html should be created from the raw JSON"
     htmlify_method.return_value = 'my test text'
     tweet = TweetFactory()
     tweet.raw = '{"text":"my test text"}'
     tweet.save()
     htmlify_method.assert_called_once_with({'text': 'my test text'})
     self.assertEqual(tweet.text_html, 'my test text')
Esempio n. 13
0
 def test_empty_years(self):
     "It should include years for which there are no tweets."
     # Add a tweet in 2018, leaving a gap for 2017:
     TweetFactory(post_time=datetime_from_str('2018-01-01 12:00:00'),
                  user=self.user_1)
     tweets = ditto_twitter.annual_tweet_counts()
     self.assertEqual(len(tweets), 4)
     self.assertEqual(tweets[2]['year'], 2017)
     self.assertEqual(tweets[2]['count'], 0)
Esempio n. 14
0
 def test_public_manager(self):
     "The public manager ONLY includes tweets from public users"
     public_user = UserFactory(is_private=False)
     private_user = UserFactory(is_private=True)
     public_tweets = TweetFactory.create_batch(2, user=public_user)
     private_tweet = TweetFactory(user=private_user)
     tweets = Tweet.public_objects.all()
     self.assertEqual(len(tweets), 2)
     self.assertEqual(tweets[0].pk, public_tweets[1].pk)
     self.assertEqual(tweets[1].pk, public_tweets[0].pk)
Esempio n. 15
0
 def test_empty_years(self):
     "It should include years for which there are no favorited tweets."
     # Add a favorite tweet in 2018, leaving a gap for 2017:
     tweet2018 = TweetFactory(
         post_time=datetime_from_str('2018-01-01 12:00:00'))
     self.account_1.user.favorites.add(tweet2018)
     tweets = ditto_twitter.annual_favorite_counts()
     self.assertEqual(len(tweets), 4)
     self.assertEqual(tweets[2]['year'], 2017)
     self.assertEqual(tweets[2]['count'], 0)
Esempio n. 16
0
 def test_going_public(self):
     "Makes the user's tweets public if they go public"
     # Start off private:
     user = UserFactory(is_private=True)
     tweet = TweetFactory(user=user)
     self.assertTrue(tweet.is_private)
     # Now change to public:
     user.is_private = False
     # Should change the user's tweets to public:
     user.save()
     tweet.refresh_from_db()
     self.assertFalse(tweet.is_private)
Esempio n. 17
0
    def setUp(self):
        dt = datetime.datetime.strptime(
                                    '2016-04-08 12:00:00', '%Y-%m-%d %H:%M:%S'
                                ).replace(tzinfo=pytz.utc)

        user = UserFactory()
        account = AccountFactory(user=user)
        self.tweet_1 = TweetFactory(user=user, post_time=dt)

        private_user = UserFactory(is_private=True)
        private_account = AccountFactory(user=private_user)
        self.private_tweeet = TweetFactory(user=private_user,
                                post_time=dt + datetime.timedelta(days=1))

        # Tweet by a different user:
        user_2 = UserFactory()
        account_2 = AccountFactory(user=user_2)
        self.other_tweet = TweetFactory(user=user_2,
                                post_time=dt + datetime.timedelta(days=2))

        self.tweet_2 = TweetFactory(user=user,
                                    post_time=dt + datetime.timedelta(days=3))
Esempio n. 18
0
 def setUp(self):
     self.user_1 = UserFactory(screen_name='terry')
     self.user_2 = UserFactory(screen_name='bob')
     self.user_3 = UserFactory(screen_name='thelma', is_private=True)
     account_1 = AccountFactory(user=self.user_1)
     account_2 = AccountFactory(user=self.user_2)
     account_3 = AccountFactory(user=self.user_3)
     # Tweets in 2015 and 2016 for user 1:
     TweetFactory.create_batch(
         3,
         post_time=datetime_from_str('2015-01-01 12:00:00'),
         user=self.user_1)
     TweetFactory.create_batch(
         2,
         post_time=datetime_from_str('2016-01-01 12:00:00'),
         user=self.user_1)
     # And one for self.user_2 in 2015:
     TweetFactory(user=self.user_2,
                  post_time=datetime_from_str('2015-01-01 12:00:00'))
     # And one tweet in 2015 for the private user 3.
     tw = TweetFactory(user=self.user_3,
                       is_private=True,
                       post_time=datetime_from_str('2015-01-01 12:00:00'))
Esempio n. 19
0
 def test_summary(self):
     "The summary should be created from the description on save."
     tweet = TweetFactory(
         title='Testing. <a href="http://example.org">A link</a> '
         'and more text which goes on a bit so that this goes to more than '
         '255 characters so that we can test it will be truncated '
         'correctly.\nLorem ipsum dolor sit amet, consectetur adipiscing '
         'elit. Etiam odio tortor, maximus ut mauris eget, sollicitudins '
         'odales felis.')
     self.assertEqual(
         tweet.summary, 'Testing. A link '
         'and more text which goes on a bit so that this goes to more than '
         '255 characters so that we can test it will be truncated '
         'correctly. Lorem ipsum dolor sit amet, consectetur adipiscing '
         'elit. Etiam odio tortor, maximus ut mauris eget,…')
Esempio n. 20
0
 def test_get_absolute_url(self):
     tweet = TweetFactory(user=UserFactory(screen_name='bob'),
                         twitter_id=1234567890)
     self.assertEqual(tweet.get_absolute_url(), '/twitter/bob/1234567890/')
Esempio n. 21
0
 def test_unique_twitter_id(self):
     "Ensures twitter_id is unique"
     tweet_1 = TweetFactory(twitter_id=123)
     with self.assertRaises(IntegrityError):
         tweet_2 = TweetFactory(twitter_id=123)
Esempio n. 22
0
 def test_account_exists(self):
     "If the tweet is from an Account the account property should return it."
     user = UserFactory()
     account = AccountFactory(user=user)
     tweet = TweetFactory(text='This is my tweet text', user=user)
     self.assertEqual(tweet.account, account)
Esempio n. 23
0
 def test_post_year(self):
     "The post_year should be set based on post_time on save."
     tweet = TweetFactory(post_time=datetime_from_str('2015-01-01 12:00:00'))
     self.assertEqual(tweet.post_year, 2015)
Esempio n. 24
0
 def test_account_none(self):
     "If the tweet isn't from an Account its account property should be None."
     tweet = TweetFactory(text='This is my tweet text', user=UserFactory())
     self.assertIsNone(tweet.account)
Esempio n. 25
0
 def test_is_public(self):
     "Tweet should be public if tweet's user is public"
     user = UserFactory(is_private=False)
     tweet = TweetFactory(user=user)
     self.assertFalse(tweet.is_private)
Esempio n. 26
0
 def test_get_retweeted_tweet_none(self):
     tweet = TweetFactory(retweeted_status_id=None)
     self.assertIsNone(tweet.get_retweeted_tweet())
Esempio n. 27
0
 def test_get_retweeted_tweet(self):
     retweeted_tweet = TweetFactory(text='Retweeted tweet!', twitter_id=123)
     tweet = TweetFactory(retweeted_status_id=123)
     self.assertEqual(tweet.get_retweeted_tweet().text, 'Retweeted tweet!')
Esempio n. 28
0
 def test_get_quoted_tweet(self):
     quoted_tweet = TweetFactory(text='The quote!', twitter_id=123)
     tweet = TweetFactory(quoted_status_id=123)
     self.assertEqual(tweet.get_quoted_tweet().text, 'The quote!')
Esempio n. 29
0
 def test_is_private(self):
     "Tweet should be private if tweet's user is private"
     user = UserFactory(is_private=True)
     tweet = TweetFactory(user=user)
     self.assertTrue(tweet.is_private)
Esempio n. 30
0
 def test_is_reply(self):
     tweet_1 = TweetFactory(in_reply_to_screen_name='bob')
     self.assertTrue(tweet_1.is_reply)
     tweet_2 = TweetFactory(in_reply_to_screen_name='')
     self.assertFalse(tweet_2.is_reply)