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())
Exemple #2
0
 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())
Exemple #3
0
 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())
Exemple #4
0
 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)
Exemple #5
0
    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)
Exemple #6
0
    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)