summaryrefslogtreecommitdiffstats
path: root/imagekit/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'imagekit/tests.py')
-rw-r--r--imagekit/tests.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/imagekit/tests.py b/imagekit/tests.py
new file mode 100644
index 0000000..8c2eb5e
--- /dev/null
+++ b/imagekit/tests.py
@@ -0,0 +1,86 @@
+import os
+import tempfile
+import unittest
+from django.conf import settings
+from django.core.files.base import ContentFile
+from django.db import models
+from django.test import TestCase
+
+from imagekit import processors
+from imagekit.models import ImageModel
+from imagekit.specs import ImageSpec
+from imagekit.lib import Image
+
+
+class ResizeToWidth(processors.Resize):
+ width = 100
+
+class ResizeToHeight(processors.Resize):
+ height = 100
+
+class ResizeToFit(processors.Resize):
+ width = 100
+ height = 100
+
+class ResizeCropped(ResizeToFit):
+ crop = ('center', 'center')
+
+class TestResizeToWidth(ImageSpec):
+ access_as = 'to_width'
+ processors = [ResizeToWidth]
+
+class TestResizeToHeight(ImageSpec):
+ access_as = 'to_height'
+ processors = [ResizeToHeight]
+
+class TestResizeCropped(ImageSpec):
+ access_as = 'cropped'
+ processors = [ResizeCropped]
+
+class TestPhoto(ImageModel):
+ """ Minimal ImageModel class for testing """
+ image = models.ImageField(upload_to='images')
+
+ class IKOptions:
+ spec_module = 'imagekit.tests'
+
+
+class IKTest(TestCase):
+ """ Base TestCase class """
+ def setUp(self):
+ # create a test image using tempfile and PIL
+ self.tmp = tempfile.TemporaryFile()
+ Image.new('RGB', (800, 600)).save(self.tmp, 'JPEG')
+ self.tmp.seek(0)
+ self.p = TestPhoto()
+ self.p.image.save(os.path.basename('test.jpg'),
+ ContentFile(self.tmp.read()))
+ self.p.save()
+ # destroy temp file
+ self.tmp.close()
+
+ def test_setup(self):
+ self.assertEqual(self.p.image.width, 800)
+ self.assertEqual(self.p.image.height, 600)
+
+ def test_to_width(self):
+ self.assertEqual(self.p.to_width.width, 100)
+ self.assertEqual(self.p.to_width.height, 75)
+
+ def test_to_height(self):
+ self.assertEqual(self.p.to_height.width, 133)
+ self.assertEqual(self.p.to_height.height, 100)
+
+ def test_crop(self):
+ self.assertEqual(self.p.cropped.width, 100)
+ self.assertEqual(self.p.cropped.height, 100)
+
+ def test_url(self):
+ tup = (settings.MEDIA_URL, self.p._ik.cache_dir, 'test_to_width.jpg')
+ self.assertEqual(self.p.to_width.url, "%s%s/%s" % tup)
+
+ def tearDown(self):
+ # make sure image file is deleted
+ path = self.p.image.path
+ self.p.delete()
+ self.failIf(os.path.isfile(path))