def test_jpeg_quality_filter_too_big(self): fil = Filter(spec='width-400|jpegquality-101') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) self.assertRaises(InvalidFilterSpecError, fil.run, image, BytesIO())
def test_webp_quality_filter_too_big(self): fil = Filter(spec='width-400|webpquality-101|format-webp') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) self.assertRaises(InvalidFilterSpecError, fil.run, image, BytesIO())
def test_jpeg_quality_filter_no_value(self): fil = Filter(spec='width-400|jpegquality') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) self.assertRaises(InvalidFilterSpecError, fil.run, image, BytesIO())
def _generate_image(self, filetype, filter_spec="width-960"): if filetype == "jpeg": image_file = get_test_image_file_jpeg(size=(1280, 720)) else: image_file = get_test_image_file(size=(1280, 720)) image = Image.objects.create(title="Test", file=image_file) rendition = image.get_rendition(filter_spec) return (image, rendition)
def test_jpeg_quality_filter_overrides_setting(self): fil = Filter(spec='width-400|webpquality-40|format-webp') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) f = BytesIO() with patch('PIL.Image.Image.save') as save: fil.run(image, f) save.assert_called_with(f, 'WEBP', quality=40, lossless=False)
def test_jpeg_quality_filter_overrides_setting(self): fil = Filter(spec='width-400|jpegquality-40') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) f = BytesIO() with patch('PIL.Image.Image.save') as save: fil.run(image, f) save.assert_called_with(f, 'JPEG', quality=40, optimize=True, progressive=True)
def test_webp_quality_setting(self): fil = Filter(spec="width-400|format-webp") image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) f = BytesIO() with patch("PIL.Image.Image.save") as save: fil.run(image, f) save.assert_called_with(f, "WEBP", quality=50, lossless=False)
def test_jpeg_quality_filter_overrides_setting(self): fil = Filter(spec='width-400|jpegquality-40') image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) f = BytesIO() with patch('PIL.Image.Image.save') as save: fil.run(image, f) save.assert_called_with(f, 'JPEG', quality=40, optimize=True, progressive=True)
def test_jpeg_quality_setting(self): fil = Filter(spec="width-400") image = Image.objects.create( title="Test image", file=get_test_image_file_jpeg(), ) f = BytesIO() with patch("PIL.Image.Image.save") as save: fil.run(image, f) save.assert_called_with(f, "JPEG", quality=50, optimize=True, progressive=True)
def test_image_conversion_with_duplicate(self): image_converter = ImageConverter("test_block") test_image_file = get_test_image_file() test_image_file.seek(0) test_image_file_2 = get_test_image_file_jpeg() test_image_file_2.seek(0) image_converter.fetch_image = MagicMock( return_value=("content_import_test_image", test_image_file.read())) test_user = User.objects.create_superuser(username="******", email="test@test", password="******") # Run the image converter once _, imported_image = image_converter({ "type": "image", "value": "url" }, user=test_user) # Now try to reimport by running the converter again Image = get_image_model() converted_element = image_converter({ "type": "image", "value": "url" }, user=test_user) self.assertEqual(converted_element[0], "test_block", "Should be 'test_block'") self.assertIsInstance(converted_element[1], Image) # Check we reuse the first imported instance, rather than importing a duplicate self.assertEqual(converted_element[1], imported_image) # Now import a different image by running the converter again image_converter.fetch_image = MagicMock( return_value=("content_import_test_image", test_image_file_2.read())) new_converted_element = image_converter( { "type": "image", "value": "url" }, user=test_user) self.assertIsInstance(new_converted_element[1], Image) # Check we recognise the new image as a non-duplicate, and import it separately self.assertNotEqual(new_converted_element[1], imported_image)