2013-05-25 03:46:02 +00:00
|
|
|
from django.core.files import File
|
|
|
|
|
from imagekit.signals import source_saved
|
|
|
|
|
from imagekit.specs.sourcegroups import ImageFieldSourceGroup
|
|
|
|
|
from nose.tools import eq_
|
2013-05-25 04:02:26 +00:00
|
|
|
from . models import AbstractImageModel, ImageModel, ConcreteImageModel
|
2013-05-25 03:46:02 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
2013-05-25 04:02:26 +00:00
|
|
|
def test_source_saved_signal():
|
|
|
|
|
"""
|
|
|
|
|
Creating a new instance with an image causes the source_saved signal to be
|
|
|
|
|
dispatched.
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
source_group = ImageFieldSourceGroup(ImageModel, 'image')
|
|
|
|
|
receiver = make_counting_receiver(source_group)
|
|
|
|
|
source_saved.connect(receiver)
|
|
|
|
|
ImageModel.objects.create(image=File(get_image_file()))
|
|
|
|
|
eq_(receiver.count, 1)
|
|
|
|
|
|
|
|
|
|
|
2013-05-25 04:07:58 +00:00
|
|
|
def test_no_source_saved_signal():
|
|
|
|
|
"""
|
|
|
|
|
Creating a new instance without an image shouldn't cause the source_saved
|
|
|
|
|
signal to be dispatched.
|
|
|
|
|
|
2013-06-03 19:50:20 +00:00
|
|
|
https://github.com/matthewwithanm/django-imagekit/issues/214
|
2013-05-25 04:07:58 +00:00
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
source_group = ImageFieldSourceGroup(ImageModel, 'image')
|
|
|
|
|
receiver = make_counting_receiver(source_group)
|
|
|
|
|
source_saved.connect(receiver)
|
|
|
|
|
ImageModel.objects.create()
|
|
|
|
|
eq_(receiver.count, 0)
|
|
|
|
|
|
|
|
|
|
|
2013-05-25 03:46:02 +00:00
|
|
|
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)
|
2013-05-25 04:01:58 +00:00
|
|
|
ConcreteImageModel.objects.create(original_image=File(get_image_file()))
|
2013-05-25 03:46:02 +00:00
|
|
|
eq_(receiver.count, 1)
|