Skip to content

Instantly share code, notes, and snippets.

@dkirkham
Created June 5, 2021 09:41
Show Gist options
  • Save dkirkham/9a9982652f17f2c4daf88a0323b260e4 to your computer and use it in GitHub Desktop.
Save dkirkham/9a9982652f17f2c4daf88a0323b260e4 to your computer and use it in GitHub Desktop.
Wagtail tests, creating image file to match JSON fixtures
from wagtail.tests.utils import WagtailPageTests
import os
import PIL.Image
from django.core.files.images import ImageFile
from wagtail.images import get_image_model
Image = get_image_model()
def make_test_image_file(filename='hero.jpg', colour='white', size=(960, 450)):
if os.access(filename, os.R_OK):
return ImageFile(filename)
ext = os.path.splitext(filename)[1].lower()
if ext == '.jpg' or ext == '.jpeg':
image_type = ('RGB', 'JPEG')
elif ext == '.png':
image_type = ('RGBA', 'PNG')
else:
raise ValueError("Cannot determine intended image type for %s" % filename)
image = PIL.Image.new(image_type[0], size, colour)
image.save(filename, image_type[1])
return ImageFile(filename)
class ImageFixturesMixin:
def setUp(self):
super(ImageFixturesMixin, self).setUp()
for img in Image.objects.all():
make_test_image_file(
filename=settings.MEDIA_ROOT + img.file.name,
size=(img.width, img.height),
colour="black",
)
class HomePageTests(ImageFixturesMixin, WagtailPageTests):
fixtures = ["test_base.json"]
def test_empty_home_page(self):
# implement tests here...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment