Created a layer of abstraction for tests
rodzic
dc64fd56ae
commit
4d06d1344a
|
@ -1,21 +1,22 @@
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from unittest.mock import patch
|
|
||||||
from store.tests.factories import ProductTemplateFactory
|
from store.tests.factories import ProductTemplateFactory
|
||||||
from store.models import ProductTemplateImage
|
from store.models import ProductTemplateImage
|
||||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||||
from artel.tasks import generate_thumbnails
|
from artel.tasks import generate_thumbnails
|
||||||
|
from abc import ABC
|
||||||
|
|
||||||
|
|
||||||
class CeleryTaskTest(TestCase):
|
class AbstractThumbnailGenerationTest(TestCase, ABC):
|
||||||
@patch('artel.tasks.generate_thumbnails')
|
model_factory = None
|
||||||
def test_generate_thumbnails(self, mock_generate_thumbnails):
|
|
||||||
template_instance = ProductTemplateFactory()
|
def test_generate_thumbnails(self):
|
||||||
|
model_instance = self.model_factory()
|
||||||
image_path = "media/dow.jpg"
|
image_path = "media/dow.jpg"
|
||||||
image_file = SimpleUploadedFile("test_image.jpg",
|
image_file = SimpleUploadedFile("test_image.jpg",
|
||||||
open(image_path, "rb").read(),
|
open(image_path, "rb").read(),
|
||||||
content_type="image/jpeg")
|
content_type="image/jpeg")
|
||||||
instance_mock = ProductTemplateImage(
|
instance_mock = self.model_class(
|
||||||
template=template_instance,
|
template=model_instance,
|
||||||
image=image_file,
|
image=image_file,
|
||||||
is_main=True
|
is_main=True
|
||||||
)
|
)
|
||||||
|
@ -26,3 +27,8 @@ class CeleryTaskTest(TestCase):
|
||||||
pk=instance_pk,
|
pk=instance_pk,
|
||||||
field="image")
|
field="image")
|
||||||
self.assertTrue(result["status"])
|
self.assertTrue(result["status"])
|
||||||
|
|
||||||
|
|
||||||
|
class ProductTemplateImageThumbnailTest(AbstractThumbnailGenerationTest):
|
||||||
|
model_factory = ProductTemplateFactory
|
||||||
|
model_class = ProductTemplateImage
|
||||||
|
|
|
@ -3,21 +3,31 @@ from django.core.files.uploadedfile import SimpleUploadedFile
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
from store.tests.factories import ProductTemplateFactory
|
from store.tests.factories import ProductTemplateFactory
|
||||||
from store.models import ProductTemplateImage
|
from store.models import ProductTemplateImage
|
||||||
|
from abc import ABC
|
||||||
|
|
||||||
|
|
||||||
class SignalTest(TestCase):
|
class AbstractSignalTest(TestCase, ABC):
|
||||||
|
def setUp(self):
|
||||||
|
self.template_instance = ProductTemplateFactory()
|
||||||
|
|
||||||
|
def create_instance_mock(self):
|
||||||
|
raise NotImplementedError("Subclasses must implement this method")
|
||||||
|
|
||||||
@patch("artel.tasks.generate_thumbnails.delay")
|
@patch("artel.tasks.generate_thumbnails.delay")
|
||||||
def test_generate_thumbnails_async_signal(self, mock_generate_thumbnails):
|
def test_generate_thumbnails_async_signal(self, mock_generate_thumbnails):
|
||||||
template_instance = ProductTemplateFactory()
|
self.instance_mock = self.create_instance_mock()
|
||||||
|
|
||||||
instance_mock = ProductTemplateImage.objects.create(
|
mock_generate_thumbnails.assert_called_once_with(
|
||||||
template=template_instance,
|
model=self.instance_mock.__class__,
|
||||||
|
pk=self.instance_mock.pk,
|
||||||
|
field="image",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ProductTemplateImageSignalTest(AbstractSignalTest):
|
||||||
|
def create_instance_mock(self):
|
||||||
|
return ProductTemplateImage.objects.create(
|
||||||
|
template=self.template_instance,
|
||||||
image=SimpleUploadedFile("test_image.jpg", b"fake_content"),
|
image=SimpleUploadedFile("test_image.jpg", b"fake_content"),
|
||||||
is_main=True
|
is_main=True
|
||||||
)
|
)
|
||||||
|
|
||||||
mock_generate_thumbnails.assert_called_once_with(
|
|
||||||
model=instance_mock.__class__,
|
|
||||||
pk=instance_mock.pk,
|
|
||||||
field="image",
|
|
||||||
)
|
|
||||||
|
|
Ładowanie…
Reference in New Issue