def setUp(self): """Setup the images test""" # Make a popular image and an unpopular image self.superuser = self.create_superuser() self.popular_image = get_in_memory_image_instance(user=self.superuser) self.popular_image.view_count = 10000 self.popular_image.save() self.unpopular_image = get_in_memory_image_instance(user=self.superuser)
def setUp(self): """Setup the images test""" # Make a popular image and an unpopular image self.superuser = self.create_superuser() self.popular_image = get_in_memory_image_instance(user=self.superuser) self.popular_image.view_count = 10000 self.popular_image.save() self.unpopular_image = get_in_memory_image_instance( user=self.superuser)
def test_non_display_image_view_does_not_increment_view_count(self): """Viewing an alternate size (thumbnail) should not increment count.""" image = get_in_memory_image_instance(self.user) response = image_view(self.request, image.uuid, image_type='thumbnail') self.assertEqual(response.url, image.get_thumbnail.url) small_image = Image.objects.get(pk=image.pk) self.assertEqual(small_image.view_count, 0)
def test_admin_gallery_does_not_have_direct_message_images(self): """admin gallery should not include images from direct messages.""" image = get_in_memory_image_instance(self.user) direct_message = self.create_thread(direct=True) direct_message.first_message.images.add(image) response = self.client.get(reverse('admin_gallery')) self.assertNotContains(response, image.uuid)
def test_non_display_image_view_does_not_increment_view_count(self): """Viewing an alternate size (thumbnail) should not increment count.""" image = get_in_memory_image_instance(self.user) response = image_view(self.request, image.uuid, image_type='thumbnail') self.assertEqual(response.url, image.get_thumbnail.url) small_image = Image.objects.get(pk=image.pk) self.assertEqual(small_image.view_count, 0)
def test_admin_gallery_does_not_have_direct_message_images(self): """admin gallery should not include images from direct messages.""" image = get_in_memory_image_instance(self.user) direct_message = self.create_thread(direct=True) direct_message.first_message.images.add(image) response = self.client.get(reverse('admin_gallery')) self.assertNotContains(response, image.uuid)
def test_filename_too_long(self): """If the filename is too long, it should trigger an error.""" user = self.create_user() image = get_in_memory_image_instance(user) image.image.name = ( 'fjkdslajgdkslajgdlskajfdlskajfldsjafldjsalfkdsjalfkdjsalkfjdsalkjf' 'dlsakfjdslajfdlksajfdlsajfdlsajfdkslajfdlksajjflkdjlfkjdsklfjaldkj' 'aflkdjsafkldsjaflkdsjaflkdsjaflkdjsalkfdjsalkfdjsalkfjdsalkfdjsalk' 'fdjsalkfjdslkajfdlsajfdlasjfdsafdlksajflkdsjalkfjdsalkfjdslakjfsal' 'fjdsalkfjdslafjdslkajfldsjalfjdslkafjdksalfkdjsalkfjdsa' ) image.save() group = maker.make('groups.Group') form = ResourceForm( data={'name': 'fjkdsl', 'groups': [group.pk]}, files={ 'attachment': SimpleUploadedFile( image.image.name, image.image.read()) } ) self.assertFalse(form.is_valid()) self.assertEqual( form.errors, {'attachment': [u'Filename cannot exceed 200 characters.']} )
def test_my_images(self): """my_images should return list of images a user has uploaded.""" image1 = get_in_memory_image_instance(self.user) image2 = get_in_memory_image_instance(self.user) response = self.client.get(reverse('my_images')) content = json.loads(response.content) expected = [ {u'thumb': image1.get_thumbnail.url, u'image': image1.get_absolute_url(), u'id': image1.pk}, {u'thumb': image2.get_thumbnail.url, u'image': image2.get_absolute_url(), u'id': image2.pk} ] self.assertEqual(len(content), len(expected)) for image in content: self.assertIn(image, expected)
def test_image_view_redirects_to_image_url(self): """image_view should redirect to the actual image url.""" image = get_in_memory_image_instance(self.user) response = self.client.get( reverse('image', kwargs={'image_uuid': image.uuid})) # assertRedirects doesn't work here because there's no staticfiles # in the test client self.assertEqual(response._headers['location'][1], 'http://testserver%s' % image.image.url)
def test_promote_image_view(self): """promote image view should return json with status and uuid.""" image = get_in_memory_image_instance(self.user) self.assertFalse(image.promoted) response = self.client.post( reverse('promote_image'), {'uuid': image.uuid}) result = json.loads(response.content) image = Image.objects.get(pk=image.pk) self.assertTrue(image.promoted) self.assertEqual(result['status'], 'success') self.assertEqual(result['uuid'], image.uuid)
def test_promote_image_view(self): """promote image view should return json with status and uuid.""" image = get_in_memory_image_instance(self.user) self.assertFalse(image.promoted) response = self.client.post(reverse('promote_image'), {'uuid': image.uuid}) result = json.loads(response.content) image = Image.objects.get(pk=image.pk) self.assertTrue(image.promoted) self.assertEqual(result['status'], 'success') self.assertEqual(result['uuid'], image.uuid)
def test_image_view_redirects_to_image_url(self): """image_view should redirect to the actual image url.""" image = get_in_memory_image_instance(self.user) response = self.client.get( reverse('image', kwargs={'image_uuid': image.uuid})) # assertRedirects doesn't work here because there's no staticfiles # in the test client self.assertEqual( response._headers['location'][1], 'http://testserver%s' % image.image.url )
def test_image_view_returns_cache_if_possible(self, mock): """If possible, return what's in the cache""" mock.get.return_value = 'http://razzmatazz.local/great.gif' image = get_in_memory_image_instance(self.user) image.uuid = 'uuid-here' image.save() response = image_view( self.request, image.uuid, image_type='display_image') self.assertEqual(response.url, 'http://razzmatazz.local/great.gif') mock.get.assert_called_once_with( 'imageurlcache_display_image_uuid-here') display_image = Image.objects.get(pk=image.pk) self.assertEqual(display_image.view_count, 1)
def test_clear_image(self): """A user's image should be removed if clear is selected.""" self.user.image = get_in_memory_image_instance(self.user) self.user.save() data = { 'image-clear': True, 'image': None, 'timezone': 'US/Central', 'group_notification_period': 'none', 'email': self.user.email } response = self.client.post( reverse('update_user', args=(self.user.uuid, )), data) self.assertRedirects( response, reverse('user_details', kwargs={'user_uuid': self.user.uuid})) user = User.objects.get(pk=self.user.pk) self.assertIsNone(user.image)
def test_image_view_uses_correct_hash_key(self, mock): """Viewing an alternate size (thumbnail) should not increment count.""" mock.get.return_value = None image = get_in_memory_image_instance(self.user) image.uuid = 'uuid-here' image.save() response = image_view(self.request, image.uuid, image_type='display_image') self.assertEqual(response.url, image.get_display_image.url) mock.get.assert_called_once_with( 'imageurlcache_display_image_uuid-here') mock.set.assert_called_once_with( 'imageurlcache_display_image_uuid-here', image.get_display_image.url, 2700) display_image = Image.objects.get(pk=image.pk) self.assertEqual(display_image.view_count, 1)
def test_image_view_uses_correct_hash_key(self, mock): """Viewing an alternate size (thumbnail) should not increment count.""" mock.get.return_value = None image = get_in_memory_image_instance(self.user) image.uuid = 'uuid-here' image.save() response = image_view( self.request, image.uuid, image_type='display_image') self.assertEqual(response.url, image.get_display_image.url) mock.get.assert_called_once_with( 'imageurlcache_display_image_uuid-here') mock.set.assert_called_once_with( 'imageurlcache_display_image_uuid-here', image.get_display_image.url, 2700 ) display_image = Image.objects.get(pk=image.pk) self.assertEqual(display_image.view_count, 1)
def test_filename_too_long(self): """If the filename is too long, it should trigger an error.""" user = self.create_user() image = get_in_memory_image_instance(user) image.image.name = ( "fjkdslajgdkslajgdlskajfdlskajfldsjafldjsalfkdsjalfkdjsalkfjdsalkjf" "dlsakfjdslajfdlksajfdlsajfdlsajfdkslajfdlksajjflkdjlfkjdsklfjaldkj" "aflkdjsafkldsjaflkdsjaflkdsjaflkdjsalkfdjsalkfdjsalkfjdsalkfdjsalk" "fdjsalkfjdslkajfdlsajfdlasjfdsafdlksajflkdsjalkfjdsalkfjdslakjfsal" "fjdsalkfjdslafjdslkajfldsjalfjdslkafjdksalfkdjsalkfjdsa" ) image.save() group = maker.make("groups.Group") form = ResourceForm( data={"name": "fjkdsl", "groups": [group.pk]}, files={"attachment": SimpleUploadedFile(image.image.name, image.image.read())}, ) self.assertFalse(form.is_valid()) self.assertEqual(form.errors, {"attachment": [u"Filename cannot exceed 200 characters."]})
def test_clear_image(self): """A user's image should be removed if clear is selected.""" self.user.image = get_in_memory_image_instance(self.user) self.user.save() data = { 'image-clear': True, 'image': None, 'timezone': 'US/Central', 'group_notification_period': 'none', 'email': self.user.email } response = self.client.post( reverse('update_user', args=(self.user.uuid,)), data) self.assertRedirects( response, reverse('user_profile'), target_status_code=302 ) user = User.objects.get(pk=self.user.pk) self.assertIsNone(user.image)
def test_admin_gallery_only_has_images_from_approved_messages(self): """Test that admin gallery only has images from approved messages""" # pylint: disable=unused-variable thread = self.create_thread() image = get_in_memory_image_instance(self.user) thread.first_message.images.add(image) for code, name in MESSAGE_STATUSES: thread.first_message.status = code thread.first_message.save() view = AdminGalleryView() view.request = self.factory.get('/') view.request.user = self.user queryset = view.get_queryset() if code == 'approved': self.assertIn(image, queryset) else: self.assertNotIn(image, queryset, msg="Status was %s." % code)
def test_admin_gallery_only_has_images_from_approved_messages(self): """Test that admin gallery only has images from approved messages""" # pylint: disable=unused-variable thread = self.create_thread() image = get_in_memory_image_instance(self.user) thread.first_message.images.add(image) for code, name in MESSAGE_STATUSES: thread.first_message.status = code thread.first_message.save() view = AdminGalleryView() view.request = self.factory.get('/') view.request.user = self.user queryset = view.get_queryset() if code == 'approved': self.assertIn(image, queryset) else: self.assertNotIn(image, queryset, msg="Status was %s." % code)
def test_image_view_increments_view_count(self): """Viewing an image should increase the view count.""" image = get_in_memory_image_instance(self.user) image_view(self.request, image.uuid) small_image = Image.objects.get(pk=image.pk) self.assertEqual(small_image.view_count, 1)
def test_image_view_increments_view_count(self): """Viewing an image should increase the view count.""" image = get_in_memory_image_instance(self.user) image_view(self.request, image.uuid) small_image = Image.objects.get(pk=image.pk) self.assertEqual(small_image.view_count, 1)