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()
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
 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)
예제 #7
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'])
예제 #8
0
    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)
예제 #9
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)
예제 #10
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])
예제 #11
0
 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)
예제 #12
0
    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)
예제 #13
0
 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)
예제 #14
0
    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)