From 4ff55724dccc8e44ca283afddad9727ed25bf8d9 Mon Sep 17 00:00:00 2001 From: Matthew Tretter Date: Fri, 24 May 2013 23:46:02 -0400 Subject: [PATCH] Separate source group tests; signal counting util --- tests/test_abstract_models.py | 22 +--------------------- tests/test_sourcegroups.py | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 tests/test_sourcegroups.py diff --git a/tests/test_abstract_models.py b/tests/test_abstract_models.py index 4621d59..302fc07 100644 --- a/tests/test_abstract_models.py +++ b/tests/test_abstract_models.py @@ -1,27 +1,7 @@ -from django.core.files import File -from imagekit.signals import source_saved -from imagekit.specs.sourcegroups import ImageFieldSourceGroup from imagekit.utils import get_nonabstract_descendants from nose.tools import eq_ from . models import (AbstractImageModel, ConcreteImageModel, - ConcreteImageModelSubclass) -from .utils import get_image_file - - -def test_source_saved_signal(): - source_group = ImageFieldSourceGroup(AbstractImageModel, 'original_image') - count = [0] - - def receiver(sender, *args, **kwargs): - if sender is source_group: - count[0] += 1 - - source_saved.connect(receiver, dispatch_uid='test_source_saved') - instance = ConcreteImageModel() - img = File(get_image_file()) - instance.original_image.save('test_source_saved_signal.jpg', img) - - eq_(count[0], 1) + ConcreteImageModelSubclass) def test_nonabstract_descendants_generator(): diff --git a/tests/test_sourcegroups.py b/tests/test_sourcegroups.py new file mode 100644 index 0000000..03fd467 --- /dev/null +++ b/tests/test_sourcegroups.py @@ -0,0 +1,29 @@ +from django.core.files import File +from imagekit.signals import source_saved +from imagekit.specs.sourcegroups import ImageFieldSourceGroup +from nose.tools import eq_ +from . models import AbstractImageModel, ConcreteImageModel +from .utils import get_image_file + + +def make_counting_receiver(source_group): + def receiver(sender, *args, **kwargs): + if sender is source_group: + receiver.count += 1 + receiver.count = 0 + return receiver + + +def test_abstract_model_signals(): + """ + Source groups created for abstract models must cause signals to be + dispatched on their concrete subclasses. + + """ + source_group = ImageFieldSourceGroup(AbstractImageModel, 'original_image') + receiver = make_counting_receiver(source_group) + source_saved.connect(receiver) + instance = ConcreteImageModel() + img = File(get_image_file()) + instance.original_image.save('test_source_saved_signal.jpg', img) + eq_(receiver.count, 1)