|
4 | 4 | import os
|
5 | 5 | import re
|
6 | 6 | import shutil
|
| 7 | +import sys |
7 | 8 | import unittest
|
8 | 9 | from PIL import Image
|
9 | 10 | from django.core.files.storage import default_storage
|
|
20 | 21 | from sorl.thumbnail.templatetags.thumbnail import margin
|
21 | 22 | from subprocess import Popen, PIPE
|
22 | 23 | from thumbnail_tests.models import Item
|
| 24 | +from thumbnail_tests.storage import slog |
23 | 25 |
|
24 | 26 |
|
25 | 27 | handler = ThumbnailLogHandler()
|
26 | 28 | handler.setLevel(logging.ERROR)
|
27 | 29 | logging.getLogger('sorl.thumbnail').addHandler(handler)
|
28 | 30 |
|
29 | 31 |
|
| 32 | +class StorageTestCase(unittest.TestCase): |
| 33 | + def setUp(self): |
| 34 | + name = 'org.jpg' |
| 35 | + os.makedirs(settings.MEDIA_ROOT) |
| 36 | + fn = pjoin(settings.MEDIA_ROOT, name) |
| 37 | + Image.new('L', (100, 100)).save(fn) |
| 38 | + self.im = ImageFile(name) |
| 39 | + |
| 40 | + def test_a_new(self): |
| 41 | + slog.start_log() |
| 42 | + get_thumbnail(self.im, '50x50') |
| 43 | + log = slog.stop_log() |
| 44 | + actions = [ |
| 45 | + 'exists: test/cache/20/c7/20c7ceda51cd4d26f8f4f375cf9dddf3.jpg', # first see if the file exists |
| 46 | + 'open: org.jpg', # open the original for thumbnailing |
| 47 | + 'save: test/cache/20/c7/20c7ceda51cd4d26f8f4f375cf9dddf3.jpg', # save the file |
| 48 | + 'get_available_name: test/cache/20/c7/20c7ceda51cd4d26f8f4f375cf9dddf3.jpg', # cehck for filename |
| 49 | + 'exists: test/cache/20/c7/20c7ceda51cd4d26f8f4f375cf9dddf3.jpg', # called by get_available_name |
| 50 | + ] |
| 51 | + self.assertEqual(log, actions) |
| 52 | + |
| 53 | + def test_b_cached(self): |
| 54 | + slog.start_log() |
| 55 | + get_thumbnail(self.im, '50x50') |
| 56 | + log<
F987
/span> = slog.stop_log() |
| 57 | + self.assertEqual(log, []) # now this should all be in cache |
| 58 | + |
| 59 | + def test_c_safe_methods(self): |
| 60 | + slog.start_log() |
| 61 | + im = default.kvstore.get(self.im) |
| 62 | + im.url, im.x, im.y |
| 63 | + log = slog.stop_log() |
| 64 | + self.assertEqual(log, []) |
| 65 | + |
| 66 | + def tearDown(self): |
| 67 | + shutil.rmtree(settings.MEDIA_ROOT) |
| 68 | + |
| 69 | + |
30 | 70 | class ParsersTestCase(unittest.TestCase):
|
31 | 71 | def testAliasCrop(self):
|
32 | 72 | crop = parse_crop('center', (500, 500), (400, 400))
|
@@ -172,26 +212,26 @@ def keys_test(x, y, z):
|
172 | 212 |
|
173 | 213 | def test_storage_serialize(self):
|
174 | 214 | im = ImageFile(Item.objects.get(image='500x500.jpg').image)
|
175 |
| - self.assertEqual(im.serialize_storage(), 'django.core.files.storage.FileSystemStorage') |
| 215 | + self.assertEqual(im.serialize_storage(), 'thumbnail_tests.storage.TestStorage') |
176 | 216 | self.assertEqual(
|
177 | 217 | ImageFile('http://www.image.jpg').serialize_storage(),
|
178 | 218 | 'sorl.thumbnail.images.UrlStorage',
|
179 | 219 | )
|
180 | 220 | self.assertEqual(
|
181 | 221 | ImageFile('http://www.image.jpg', default.storage).serialize_storage(),
|
182 |
| - 'django.core.files.storage.FileSystemStorage', |
| 222 | + 'thumbnail_tests.storage.TestStorage', |
183 | 223 | )
|
184 | 224 | self.assertEqual(
|
185 | 225 | ImageFile('getit', default_storage).serialize_storage(),
|
186 |
| - 'django.core.files.storage.FileSystemStorage', |
| 226 | + 'thumbnail_tests.storage.TestStorage', |
187 | 227 | )
|
188 | 228 |
|
189 | 229 | def test_image_file_deserialize(self):
|
190 | 230 | im = ImageFile(Item.objects.get(image='500x500.jpg').image)
|
191 | 231 | default.kvstore.set(im)
|
192 | 232 | self.assertEqual(
|
193 | 233 | default.kvstore.get(im).serialize_storage(),
|
194 |
| - 'django.core.files.storage.FileSystemStorage', |
| 234 | + 'thumbnail_tests.storage.TestStorage', |
195 | 235 | )
|
196 | 236 | im = ImageFile('http://www.aino.se/media/i/logo.png')
|
197 | 237 | default.kvstore.set(im)
|
@@ -227,8 +267,8 @@ def test_nested(self):
|
227 | 267 | val = render_to_string('thumbnail6.html', {
|
228 | 268 | 'item': item,
|
229 | 269 | }).strip()
|
230 |
| - self.assertEqual(val, ('<a href="/media/test/cache/57/ba/57ba10c5a6c56dc71362d9b1427cb0b4.jpg">' |
231 |
| - '<img src="/media/test/cache/6c/c3/6cc32cd4aa002c577b534442c11e07d2.jpg" width="400" height="400">' |
| 270 | + self.assertEqual(val, ('<a href="/media/test/cache/ac/78/ac78a0326054e1d795cba4016ee54966.jpg">' |
| 271 | + '<img src="/media/test/cache/4b/44/4b44d2d5f5cf0a35a1450873c88e28b7.jpg" width="400" height="400">' |
232 | 272 | '</a>'))
|
233 | 273 |
|
234 | 274 | def test_serialization_options(self):
|
@@ -514,7 +554,7 @@ def test_nonascii(self):
|
514 | 554 | th = get_thumbnail(self.name, '200x200')
|
515 | 555 | self.assertEqual(
|
516 | 556 | th.url,
|
517 |
| - '/media/test/cache/4c/ed/4cede3c3e9dc62dcd3164e680e611c87.jpg' |
| 557 | + '/media/test/cache/8a/17/8a17eff95c6ecf46f82d0807d93631e9.jpg' |
518 | 558 | )
|
519 | 559 |
|
520 | 560 | def tearDown(self):
|
|
0 commit comments