django-imagekit/tests/core/tests.py

94 lines
3.2 KiB
Python
Raw Normal View History

import os
import tempfile
2011-10-31 14:23:50 +00:00
from django.core.files.base import ContentFile
2009-01-04 22:14:13 +00:00
from django.db import models
from django.test import TestCase
2011-10-31 14:23:50 +00:00
from imagekit import utils
2011-10-31 14:23:50 +00:00
from imagekit.lib import Image
from imagekit.models import ImageSpec
2011-09-26 20:38:55 +00:00
from imagekit.processors import Adjust
from imagekit.processors.resize import Crop, SmartCrop
2011-09-26 20:38:55 +00:00
class Photo(models.Model):
original_image = models.ImageField(upload_to='photos')
2011-09-26 20:38:55 +00:00
thumbnail = ImageSpec([Adjust(contrast=1.2, sharpness=1.1), Crop(50, 50)],
image_field='original_image', format='JPEG', quality=90)
smartcropped_thumbnail = ImageSpec([Adjust(contrast=1.2, sharpness=1.1), SmartCrop(50, 50)],
image_field='original_image', format='JPEG', quality=90)
class IKTest(TestCase):
def generate_image(self):
tmp = tempfile.TemporaryFile()
Image.new('RGB', (800, 600)).save(tmp, 'JPEG')
tmp.seek(0)
return tmp
def generate_lenna(self):
"""
See also:
http://en.wikipedia.org/wiki/Lenna
http://sipi.usc.edu/database/database.php?volume=misc&image=12
"""
tmp = tempfile.TemporaryFile()
lennapath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'assets', 'lenna-800x600-white-border.jpg')
with open(lennapath, "r+b") as lennafile:
Image.open(lennafile).save(tmp, 'JPEG')
tmp.seek(0)
return tmp
def setUp(self):
2011-09-26 20:38:55 +00:00
self.photo = Photo()
img = self.generate_lenna()
2011-09-26 20:38:55 +00:00
file = ContentFile(img.read())
self.photo.original_image = file
self.photo.original_image.save('test.jpeg', file)
self.photo.save()
img.close()
def test_save_image(self):
2011-09-26 20:38:55 +00:00
photo = Photo.objects.get(id=self.photo.id)
self.assertTrue(os.path.isfile(photo.original_image.path))
def test_setup(self):
2011-09-26 20:38:55 +00:00
self.assertEqual(self.photo.original_image.width, 800)
self.assertEqual(self.photo.original_image.height, 600)
2011-09-26 20:38:55 +00:00
def test_thumbnail_creation(self):
photo = Photo.objects.get(id=self.photo.id)
self.assertTrue(os.path.isfile(photo.thumbnail.file.name))
2011-09-26 20:38:55 +00:00
def test_thumbnail_size(self):
""" Explicit and smart-cropped thumbnail size """
2011-09-26 20:38:55 +00:00
self.assertEqual(self.photo.thumbnail.width, 50)
self.assertEqual(self.photo.thumbnail.height, 50)
self.assertEqual(self.photo.smartcropped_thumbnail.width, 50)
self.assertEqual(self.photo.smartcropped_thumbnail.height, 50)
2011-09-26 20:38:55 +00:00
def test_thumbnail_source_file(self):
self.assertEqual(
self.photo.thumbnail.source_file, self.photo.original_image)
class IKUtilsTest(TestCase):
def test_extension_to_format(self):
self.assertEqual(utils.extension_to_format('.jpeg'), 'JPEG')
self.assertEqual(utils.extension_to_format('.rgba'), 'SGI')
with self.assertRaises(utils.UnknownExtensionError):
utils.extension_to_format('.txt')
def test_format_to_extension_no_init(self):
self.assertEqual(utils.format_to_extension('PNG'), '.png')
self.assertEqual(utils.format_to_extension('ICO'), '.ico')
with self.assertRaises(utils.UnknownFormatError):
utils.format_to_extension('TXT')