From de550b71df79ff6883157dfd24e0b640dbd03507 Mon Sep 17 00:00:00 2001 From: Matthew Tretter Date: Sun, 10 Feb 2013 15:41:24 -0500 Subject: [PATCH] Add test for abstract model signals --- tests/models.py | 28 +++++++++++++++++++++------- tests/test_abstract_models.py | 22 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 tests/test_abstract_models.py diff --git a/tests/models.py b/tests/models.py index 17e887b..61265f0 100644 --- a/tests/models.py +++ b/tests/models.py @@ -26,17 +26,31 @@ class ProcessedImageFieldModel(models.Model): options={'quality': 90}, upload_to='p') +class CountingCacheFileStrategy(object): + def __init__(self): + self.before_access_count = 0 + self.on_source_changed_count = 0 + self.on_source_created_count = 0 + + def before_access(self, file): + self.before_access_count += 1 + + def on_source_changed(self, file): + self.on_source_changed_count += 1 + + def on_source_created(self, file): + self.on_source_created_count += 1 + + class AbstractImageModel(models.Model): original_image = models.ImageField(upload_to='photos') - abstract_class_spec = ImageSpecField() + abstract_class_spec = ImageSpecField(source='original_image', + format='JPEG', + cachefile_strategy=CountingCacheFileStrategy()) class Meta: abstract = True -class ConcreteImageModel1(AbstractImageModel): - first_spec = ImageSpecField() - - -class ConcreteImageModel2(AbstractImageModel): - second_spec = ImageSpecField() +class ConcreteImageModel(AbstractImageModel): + pass diff --git a/tests/test_abstract_models.py b/tests/test_abstract_models.py new file mode 100644 index 0000000..c144136 --- /dev/null +++ b/tests/test_abstract_models.py @@ -0,0 +1,22 @@ +from django.core.files import File +from imagekit.signals import source_created +from imagekit.specs.sourcegroups import ImageFieldSourceGroup +from nose.tools import eq_ +from . models import AbstractImageModel, ConcreteImageModel +from .utils import get_image_file + + +def test_source_created_signal(): + source_group = ImageFieldSourceGroup(AbstractImageModel, 'original_image') + count = [0] + + def receiver(sender, *args, **kwargs): + if sender is source_group: + count[0] += 1 + + source_created.connect(receiver, dispatch_uid='test_source_created') + instance = ConcreteImageModel() + img = File(get_image_file()) + instance.original_image.save('test_source_created_signal.jpg', img) + + eq_(count[0], 1)