def setUp(self): user_1 = factories.UserFactory(screen_name='terry') user_2 = factories.UserFactory(screen_name='bob') tweets_1 = factories.TweetFactory.create_batch(2, user=user_1) tweets_2 = factories.TweetFactory.create_batch(3, user=user_2) account_1 = factories.AccountFactory(user=user_1) account_2 = factories.AccountFactory(user=user_2) self.out = StringIO()
def setUp(self): user_1 = factories.UserFactory(screen_name='terry') user_2 = factories.UserFactory(screen_name='bob') account_1 = factories.AccountFactory(user=user_1) account_2 = factories.AccountWithCredentialsFactory(user=user_2) self.patcher = patch( 'ditto.twitter.management.commands.update_twitter_tweets.TweetsFetcher' ) self.fetcher_class = self.patcher.start() self.out = StringIO() self.out_err = StringIO()
def setUp(self): self.patcher = patch(self.fetch_method_path) self.fetch_method = self.patcher.start() user = factories.UserFactory(screen_name='philgyford') self.account = factories.AccountFactory(user=user, is_active=True) self.out = StringIO() self.out_err = StringIO()
def test_home_privacy_twitter_recent(self): "Overall home page does not display private Tweets" private_user = twitterfactories.UserFactory(is_private=True) public_user = twitterfactories.UserFactory(is_private=False) private_account = twitterfactories.AccountFactory(user=private_user) public_account = twitterfactories.AccountFactory(user=public_user) public_tweet_1 = twitterfactories.TweetFactory(user=public_user) private_tweet = twitterfactories.TweetFactory(user=private_user) public_tweet_2 = twitterfactories.TweetFactory(user=public_user) response = self.client.get(reverse('ditto:home')) tweets = response.context['object_list'] self.assertEqual(len(tweets), 2) self.assertEqual(tweets[0].pk, public_tweet_2.pk) self.assertEqual(tweets[1].pk, public_tweet_1.pk)
def test_home_privacy(self): "Only public Tweets should appear." private_user = factories.UserFactory(is_private=True) public_user = factories.UserFactory(is_private=False) # We only display tweets from Accounts, so add some. private_account = factories.AccountFactory(user=private_user) public_account = factories.AccountFactory(user=public_user) public_tweet_1 = factories.TweetFactory(user=public_user) private_tweet = factories.TweetFactory(user=private_user) public_tweet_2 = factories.TweetFactory(user=public_user) response = self.client.get(reverse('twitter:home')) tweets = response.context['tweet_list'] self.assertEqual(len(tweets), 2) self.assertEqual(tweets[0].pk, public_tweet_2.pk) self.assertEqual(tweets[1].pk, public_tweet_1.pk)
def test_user_detail_privacy(self): "It does not show private Tweets" user = factories.UserFactory(is_private=True) account = factories.AccountFactory(user=user) tweets = factories.TweetFactory.create_batch(3, user=user) response = self.client.get( reverse('twitter:user_detail', kwargs={'screen_name': user.screen_name})) self.assertIn('account', response.context) self.assertEqual(len(response.context['tweet_list']), 0)
def test_tweet_detail_privacy(self): "It does not show private Tweets" user = factories.UserFactory(is_private=True) account = factories.AccountFactory(user=user) tweets = factories.TweetFactory.create_batch(3, user=user) response = self.client.get( reverse('twitter:tweet_detail', kwargs={ 'screen_name': account.user.screen_name, 'twitter_id': tweets[1].twitter_id })) self.assertIn('tweet', response.context) self.assertIsNone(response.context['tweet'])
def test_favorite_list_privacy_accounts(self): "Only Tweets favorited by Accounts with public Users should appear." user = factories.UserFactory(is_private=True) account = factories.AccountFactory(user=user) tweet = factories.TweetFactory() account.user.favorites.add(tweet) # Check it is there: self.assertEqual(account.user.favorites.count(), 1) response = self.client.get(reverse('twitter:favorite_list')) tweets = response.context['tweet_list'] # Check it doesn't appear on the page: self.assertEqual(len(tweets), 0)
def test_account_favorite_list_privacy_account(self): "It does not show favorites if the account's user is private" user = factories.UserFactory(is_private=True) account = factories.AccountFactory(user=user) tweet = factories.TweetFactory() account.user.favorites.add(tweet) # Check it is there: self.assertEqual(account.user.favorites.count(), 1) response = self.client.get( reverse('twitter:account_favorite_list', kwargs={'screen_name': account.user.screen_name})) tweets = response.context['tweet_list'] # Check it doesn't appear on the page: self.assertEqual(len(tweets), 0)
def test_user_detail_context_no_account(self): "Sends correct data to templates for a User with no Account." private_user = factories.UserFactory(is_private=True) private_account = factories.AccountFactory(user=private_user) public_accounts = factories.AccountFactory.create_batch(3) user_1 = factories.UserFactory() user_2 = factories.UserFactory() tweets_1 = factories.TweetFactory.create_batch(3, user=user_1) tweets_2 = factories.TweetFactory.create_batch(3, user=user_2) response = self.client.get( reverse('twitter:user_detail', kwargs={'screen_name': user_1.screen_name})) self.assertIn('account', response.context) self.assertIsNone(response.context['account']) self.assertIn('public_accounts', response.context) self.assertEqual(len(response.context['public_accounts']), 3) self.assertIn('user', response.context) self.assertEqual(user_1.pk, response.context['user'].pk) self.assertIn('tweet_list', response.context) self.assertEqual(len(response.context['tweet_list']), 3) self.assertEqual( [twitter.pk for twitter in response.context['tweet_list']], [3, 2, 1])
def test_tweet_detail_context_no_account(self): "Sends correct data to templates when showing a tweet with no account" user = factories.UserFactory() tweets = factories.TweetFactory.create_batch(3, user=user) response = self.client.get( reverse('twitter:tweet_detail', kwargs={ 'screen_name': user.screen_name, 'twitter_id': tweets[1].twitter_id })) self.assertIn('account', response.context) self.assertIsNone(response.context['account']) self.assertIn('twitter_user', response.context) self.assertEqual(user.pk, response.context['twitter_user'].pk) self.assertIn('tweet', response.context) self.assertEqual(tweets[1].pk, response.context['tweet'].pk)
def test_favorite_list_privacy_tweets(self): "Only public Tweets should appear." private_user = factories.UserFactory(is_private=True) public_users = factories.UserFactory.create_batch(2, is_private=False) favoriting_account = factories.AccountFactory(user=public_users[0]) private_tweet = factories.TweetFactory(user=private_user) public_tweet = factories.TweetFactory(user=public_users[1]) favoriting_account.user.favorites.add(private_tweet) favoriting_account.user.favorites.add(public_tweet) response = self.client.get(reverse('twitter:favorite_list')) tweets = response.context['tweet_list'] self.assertEqual(len(tweets), 1) self.assertEqual(tweets[0].pk, public_tweet.pk)
def test_opens_all_files(self): "All the .js files in the directory are opened." user = factories.UserFactory(twitter_id=12552, screen_name='philgyford') files = ['2015_01.js', '2015_02.js', '2015_03.js',] file_content = self.get_tweet_data() with patch('os.listdir', return_value=files): m = mock_open(read_data=file_content) with patch('builtins.open', m): m.return_value.readlines.return_value = file_content.splitlines() ingester = TweetIngester() result = ingester.ingest(directory='/good/dir') m.assert_has_calls([ call('/good/dir/2015_01.js', 'r'), call('/good/dir/2015_02.js', 'r'), call('/good/dir/2015_03.js', 'r'), ], any_order=True) self.assertEqual(ingester.tweet_count, 9)
def test_account_favorite_list_privacy_tweets(self): "It does not show private Tweets" private_user = factories.UserFactory(is_private=True) public_users = factories.UserFactory.create_batch(2, is_private=False) favoriting_account = factories.AccountFactory(user=public_users[0]) private_tweet = factories.TweetFactory(user=private_user) public_tweet = factories.TweetFactory(user=public_users[1]) favoriting_account.user.favorites.add(private_tweet) favoriting_account.user.favorites.add(public_tweet) response = self.client.get( reverse( 'twitter:account_favorite_list', kwargs={'screen_name': favoriting_account.user.screen_name})) tweets = response.context['tweet_list'] self.assertEqual(len(tweets), 1) self.assertEqual(tweets[0].pk, public_tweet.pk)