Exemplo n.º 1
0
    def test_saves_correct_user_data(self):

        user_data = self.make_user_data()
        user = self.make_user_object(user_data)

        self.assertEqual(user.fetch_time, datetime_now())
        self.assertEqual(user.raw, json.dumps(user_data))
        self.assertEqual(user.screen_name, 'philgyford')
        self.assertEqual(user.url, 'http://www.gyford.com/')
        self.assertFalse(user.is_private)
        self.assertFalse(user.is_verified)
        self.assertEqual(
            user.created_at,
            datetime.datetime.strptime(
                '2006-11-15 16:55:59',
                '%Y-%m-%d %H:%M:%S').replace(tzinfo=pytz.utc))
        self.assertEqual(user.description, 'Good. Good to Firm in places.')
        self.assertEqual(user.location, 'London, UK')
        self.assertEqual(user.time_zone, 'London')
        self.assertEqual(
            user.profile_image_url_https,
            'https://pbs.twimg.com/profile_images/1167616130/james_200208_300x300_normal.jpg'
        )
        self.assertEqual(user.favourites_count, 1389)
        self.assertEqual(user.followers_count, 2435)
        self.assertEqual(user.friends_count, 309)
        self.assertEqual(user.listed_count, 138)
        self.assertEqual(user.statuses_count, 16428)
Exemplo n.º 2
0
    def test_does_not_download_and_save_avatar(self, exists, download):
        "If we already have the user's avatar, don't download it."
        # Fake that the file we look for exists:
        exists.return_value = True

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())
        assert not download.called
 def test_calls_save_user_correctly(self, save_user, fetch_avatar):
     "The correct data should be sent to UserSaver.save_user()"
     self.expect_response('people.getInfo')
     result = UserFetcher(account=self.account).fetch(
                                                     nsid='35034346050@N01')
     user_response = self.load_fixture('people.getInfo')
     save_user.assert_called_once_with(
                                 user_response['person'], datetime_now())
Exemplo n.º 4
0
    def test_does_not_download_and_save_avatar(self, exists, download):
        "If we already have the user's avatar, don't download it."
        # Fake that the file we look for exists:
        exists.return_value = True

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())
        assert not download.called
Exemplo n.º 5
0
 def make_user_object(self, user_data, download):
     """"Creates/updates a User from API data, then fetches that User from
     the DB and returns it.
     """
     # Quietly prevents avatar files being fetched:
     download.side_effect = DownloadException('Oops')
     saved_user = UserSaver().save_user(user_data, datetime_now())
     return User.objects.get(twitter_id=12552)
Exemplo n.º 6
0
 def make_user_object(self, user_data, download):
     """"Creates/updates a User from API data, then fetches that User from
     the DB and returns it.
     """
     # Quietly prevents avatar files being fetched:
     download.side_effect = DownloadException('Oops')
     saved_user = UserSaver().save_user(user_data, datetime_now())
     return User.objects.get(twitter_id=12552)
Exemplo n.º 7
0
 def test_calls_save_user_correctly(self, save_user, fetch_avatar):
     "The correct data should be sent to UserSaver.save_user()"
     self.expect_response('people.getInfo')
     result = UserFetcher(account=self.account).fetch(
         nsid='35034346050@N01')
     user_response = self.load_fixture('people.getInfo')
     save_user.assert_called_once_with(user_response['person'],
                                       datetime_now())
Exemplo n.º 8
0
    def test_calls_fetch_and_save_avatar(self, fetch_avatar, download):
        "_fetch_and_save_avatar should be called with the User object."
        # Quietly prevents avatar files being fetched:
        download.side_effect = DownloadException('Oops')
        # Just make the mocked method return the User that's passed in:
        fetch_avatar.side_effect = lambda value: value

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())
        fetch_avatar.assert_called_once_with(saved_user)
Exemplo n.º 9
0
    def test_calls_fetch_and_save_avatar(self, fetch_avatar, download):
        "_fetch_and_save_avatar should be called with the User object."
        # Quietly prevents avatar files being fetched:
        download.side_effect = DownloadException('Oops')
        # Just make the mocked method return the User that's passed in:
        fetch_avatar.side_effect = lambda value: value

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())
        fetch_avatar.assert_called_once_with(saved_user)
Exemplo n.º 10
0
    def setUp(self):
        "Save a tweet using the api_fixture's data."

        fetch_time = datetime_now()

        tweet_data = json.loads(self.make_response_body())

        # Send the JSON, and our new User object, to try and save the tweet:
        saved_tweet = TweetSaver().save_tweet(tweet_data, fetch_time)

        # Load that saved tweet from the DB:
        self.tweet = Tweet.objects.get(twitter_id=9876543210)
Exemplo n.º 11
0
    def setUp(self):
        "Save a tweet using the api_fixture's data."

        fetch_time = datetime_now()

        tweet_data = json.loads(self.make_response_body())

        # Send the JSON, and our new User object, to try and save the tweet:
        saved_tweet = TweetSaver().save_tweet(tweet_data, fetch_time)

        # Load that saved tweet from the DB:
        self.tweet = Tweet.objects.get(twitter_id=9876543210)
Exemplo n.º 12
0
 def test_home_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     ac = AccountFactory()
     photo_1 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=2))
     response = self.client.get(reverse('flickr:home'))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 13
0
 def test_tag_detail_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     self.carp_photo.post_time = dt - timedelta(days=2)
     self.carp_photo.save()
     self.cod_photo.post_time = dt - timedelta(days=1)
     self.cod_photo.save()
     response = self.client.get(reverse('flickr:tag_detail',
                                                 kwargs={'slug': 'fish'}))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, self.cod_photo.pk)
     self.assertEqual(pl[1].pk, self.carp_photo.pk)
Exemplo n.º 14
0
 def test_tag_detail_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     self.carp_photo.post_time = dt - timedelta(days=2)
     self.carp_photo.save()
     self.cod_photo.post_time = dt - timedelta(days=1)
     self.cod_photo.save()
     response = self.client.get(
         reverse('flickr:tag_detail', kwargs={'slug': 'fish'}))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, self.cod_photo.pk)
     self.assertEqual(pl[1].pk, self.carp_photo.pk)
Exemplo n.º 15
0
 def test_home_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     ac = AccountFactory()
     photo_1 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=ac.user, post_time=dt - timedelta(days=2))
     response = self.client.get(reverse('flickr:home'))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 16
0
    def test_fetch_user_if_missing_fetches(self, save_user, fetch_avatar):
        """If the user isn't in fetched_users, it is fetched and saved."""

        save_user.return_value = UserFactory.create(nsid='35034346050@N01')

        self.expect_response('people.getInfo')
        user_data = self.load_fixture('people.getInfo')['person']

        self.fetcher._fetch_user_if_missing('35034346050@N01')
        save_user.assert_called_once_with(user_data, datetime_now())
        self.assertEqual(1, len(self.fetcher.fetched_users))
        self.assertEqual(self.fetcher.fetched_users['35034346050@N01'].nsid,
                        '35034346050@N01')
Exemplo n.º 17
0
    def test_fetch_user_if_missing_fetches(self, save_user, fetch_avatar):
        """If the user isn't in fetched_users, it is fetched and saved."""

        save_user.return_value = UserFactory.create(nsid='35034346050@N01')

        self.expect_response('people.getInfo')
        user_data = self.load_fixture('people.getInfo')['person']

        self.fetcher._fetch_user_if_missing('35034346050@N01')
        save_user.assert_called_once_with(user_data, datetime_now())
        self.assertEqual(1, len(self.fetcher.fetched_users))
        self.assertEqual(self.fetcher.fetched_users['35034346050@N01'].nsid,
                         '35034346050@N01')
Exemplo n.º 18
0
 def test_tag_detail_ordering_taken(self):
     """With ?order=taken, photos should be in reverse-taken_time order.
     And Photos with taken_unknown=True should not appear."""
     dt = datetime_now()
     self.carp_photo.taken_time = dt - timedelta(days=2)
     self.carp_photo.save()
     self.cod_photo.taken_time = dt - timedelta(days=1)
     self.cod_photo.save()
     response = self.client.get(
         reverse('flickr:tag_detail', kwargs={'slug': 'fish'}) + \
                 '?order=taken')
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, self.cod_photo.pk)
     self.assertEqual(pl[1].pk, self.carp_photo.pk)
Exemplo n.º 19
0
 def test_tag_detail_ordering_taken(self):
     """With ?order=taken, photos should be in reverse-taken_time order.
     And Photos with taken_unknown=True should not appear."""
     dt = datetime_now()
     self.carp_photo.taken_time = dt - timedelta(days=2)
     self.carp_photo.save()
     self.cod_photo.taken_time = dt - timedelta(days=1)
     self.cod_photo.save()
     response = self.client.get(
         reverse('flickr:tag_detail', kwargs={'slug': 'fish'}) + \
                 '?order=taken')
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, self.cod_photo.pk)
     self.assertEqual(pl[1].pk, self.carp_photo.pk)
Exemplo n.º 20
0
 def test_user_detail_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     user = UserFactory()
     ac = AccountFactory(user=user)
     photo_1 = PhotoFactory(user=user, post_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=user, post_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=user, post_time=dt - timedelta(days=2))
     response = self.client.get(
         reverse('flickr:user_detail', kwargs={'nsid': user.nsid}))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 21
0
 def test_user_detail_ordering_posted(self):
     "By default, photos should be in reverse-post_time order."
     dt = datetime_now()
     user = UserFactory()
     ac = AccountFactory(user=user)
     photo_1 = PhotoFactory(user=user, post_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=user, post_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=user, post_time=dt - timedelta(days=2))
     response = self.client.get(reverse('flickr:user_detail',
                                             kwargs={'nsid': user.nsid}))
     pl = response.context['photo_list']
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 22
0
    def make_tweet(self, is_private=False):
        self.fetch_time = datetime_now()

        # Get the JSON for a single tweet.
        tweets_data = json.loads(self.make_response_body())
        tweet_data = tweets_data[0]

        if is_private:
            tweet_data['user']['protected'] = True

        # Send the JSON, and our new User object, to try and save the tweet:
        saved_tweet = TweetSaver().save_tweet(tweet_data, self.fetch_time)

        # Load that saved tweet from the DB:
        return Tweet.objects.get(twitter_id=300)
Exemplo n.º 23
0
    def make_tweet(self, is_private=False):
        self.fetch_time = datetime_now()

        # Get the JSON for a single tweet.
        tweets_data = json.loads(self.make_response_body())
        tweet_data = tweets_data[0]

        if is_private:
            tweet_data['user']['protected'] = True

        # Send the JSON, and our new User object, to try and save the tweet:
        saved_tweet = TweetSaver().save_tweet(tweet_data, self.fetch_time)

        # Load that saved tweet from the DB:
        return Tweet.objects.get(twitter_id=300)
Exemplo n.º 24
0
 def test_home_ordering_taken(self):
     """With ?order=taken, photos should be in reverse-taken_time order.
     And Photos with taken_unknown=True should not appear."""
     dt = datetime_now()
     ac = AccountFactory()
     photo_1 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=2))
     photo_4 = PhotoFactory(user=ac.user, taken_unknown=True)
     response = self.client.get(reverse('flickr:home')+'?order=taken')
     pl = response.context['photo_list']
     self.assertEqual(len(pl), 3)
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 25
0
    def test_downloads_and_saves_avatar(self, download):
        "Should call download() and save avatar."
        # Make a temporary file, like download() would make:
        jpg = tempfile.NamedTemporaryFile()
        temp_filepath = jpg.name
        download.return_value = temp_filepath

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())

        download.assert_called_once_with(saved_user.profile_image_url_https,
                        ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'])

        self.assertEqual(saved_user.avatar, 'twitter/avatars/25/52/12552/%s' %
                                            os.path.basename(temp_filepath))
Exemplo n.º 26
0
 def test_home_ordering_taken(self):
     """With ?order=taken, photos should be in reverse-taken_time order.
     And Photos with taken_unknown=True should not appear."""
     dt = datetime_now()
     ac = AccountFactory()
     photo_1 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=1))
     photo_3 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=3))
     photo_2 = PhotoFactory(user=ac.user, taken_time=dt - timedelta(days=2))
     photo_4 = PhotoFactory(user=ac.user, taken_unknown=True)
     response = self.client.get(reverse('flickr:home') + '?order=taken')
     pl = response.context['photo_list']
     self.assertEqual(len(pl), 3)
     self.assertEqual(pl[0].pk, photo_1.pk)
     self.assertEqual(pl[1].pk, photo_2.pk)
     self.assertEqual(pl[2].pk, photo_3.pk)
Exemplo n.º 27
0
    def test_downloads_and_saves_avatar(self, download):
        "Should call download() and save avatar."
        # Make a temporary file, like download() would make:
        jpg = tempfile.NamedTemporaryFile()
        temp_filepath = jpg.name
        download.return_value = temp_filepath

        user_data = self.make_user_data()
        saved_user = UserSaver().save_user(user_data, datetime_now())

        download.assert_called_once_with(
            saved_user.profile_image_url_https,
            ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'])

        self.assertEqual(
            saved_user.avatar,
            'twitter/avatars/25/52/12552/%s' % os.path.basename(temp_filepath))
Exemplo n.º 28
0
 def test_sets_scrobble_data(self):
     "Sets all the scrobble data correctly"
     self.add_recent_tracks_response()
     results = self.fetcher.fetch(fetch_type='all')
     scrobble = Scrobble.objects.get(artist__slug='lou+reed')
     self.assertEqual(scrobble.title, 'Lou Reed – Make Up')
     self.assertEqual(scrobble.account, self.account)
     self.assertEqual(scrobble.track.slug, 'make+up')
     self.assertEqual(scrobble.album.slug, 'transformer')
     self.assertEqual(scrobble.post_time,
                         datetime.datetime.strptime(
                                 '2016-09-22 09:23:33', '%Y-%m-%d %H:%M:%S'
                             ).replace(tzinfo=pytz.utc))
     json_data = self.load_fixture('user_getrecenttracks')
     scrobble_json = json_data['recenttracks']['track'][2]
     self.assertEqual(scrobble.raw, json.dumps(scrobble_json))
     self.assertEqual(scrobble.fetch_time, datetime_now())
Exemplo n.º 29
0
    def test_saves_correct_user_data(self):

        user_data = self.make_user_data()
        user = self.make_user_object(user_data)

        self.assertEqual(user.fetch_time, datetime_now())
        self.assertEqual(user.raw, json.dumps(user_data))
        self.assertEqual(user.screen_name, 'philgyford')
        self.assertEqual(user.url, 'http://www.gyford.com/')
        self.assertFalse(user.is_private)
        self.assertFalse(user.is_verified)
        self.assertEqual(user.created_at, datetime.datetime.strptime(
                                    '2006-11-15 16:55:59', '%Y-%m-%d %H:%M:%S'
                                ).replace(tzinfo=pytz.utc))
        self.assertEqual(user.description, 'Good. Good to Firm in places.')
        self.assertEqual(user.location, 'London, UK')
        self.assertEqual(user.time_zone, 'London')
        self.assertEqual(user.favourites_count, 1389)
        self.assertEqual(user.followers_count, 2435)
        self.assertEqual(user.friends_count, 309)
        self.assertEqual(user.listed_count, 138)
        self.assertEqual(user.statuses_count, 16428)
Exemplo n.º 30
0
 def test_granularity_6_no_link(self):
     self.assertEqual(display_time(datetime_now(), granularity=6),
                      '<time datetime="2015">sometime in 2015</time>')
Exemplo n.º 31
0
 def test_granularity_4_no_link(self):
     self.assertEqual(
         display_time(datetime_now(), granularity=4),
         '<time datetime="2015-08">sometime in Aug&nbsp;2015</time>')
Exemplo n.º 32
0
 def test_returns_time_with_link(self, reverse):
     reverse.return_value = '/2015/08/14/'
     self.assertEqual(
         display_time(datetime_now(), True),
         '<time datetime="2015-08-14 13:34:56">13:34 on <a href="/2015/08/14/" title="All items from this day">14&nbsp;Aug&nbsp;2015</a></time>'
     )
Exemplo n.º 33
0
 def test_returns_time_with_no_link(self):
     self.assertEqual(
         display_time(datetime_now()),
         '<time datetime="2015-08-14 13:34:56">13:34 on 14&nbsp;Aug&nbsp;2015</time>'
     )
Exemplo n.º 34
0
 def test_case_capfirst(self):
     self.assertEqual(
         display_time(datetime_now(), granularity=4, case='capfirst'),
         '<time datetime="2015-08">Sometime in Aug&nbsp;2015</time>')
Exemplo n.º 35
0
 def test_case_lower(self):
     self.assertEqual(
         display_time(datetime_now(), granularity=4, case='lower'),
         '<time datetime="2015-08">sometime in aug&nbsp;2015</time>')
Exemplo n.º 36
0
 def test_granularity_8_with_link(self):
     "Doesn't actually have a link as there's no exact day."
     self.assertEqual(
         display_time(datetime_now(), link_to_day=True, granularity=8),
         '<time datetime="2015">circa 2015</time>')
Exemplo n.º 37
0
 def test_granularity_8_no_link(self):
     self.assertEqual(display_time(datetime_now(), granularity=8),
                      '<time datetime="2015">circa 2015</time>')
Exemplo n.º 38
0
 def test_granularity_4_with_link(self):
     "Doesn't actually have a link as there's no exact day."
     self.assertEqual(
         display_time(datetime_now(), link_to_day=True, granularity=4),
         '<time datetime="2015-08">sometime in Aug&nbsp;2015</time>')
Exemplo n.º 39
0
 def test_datetime_now(self):
     self.assertEqual(datetime_now(),
                      datetime.datetime.utcnow().replace(tzinfo=pytz.utc))