فهرست منبع

Add more SVG tests

Joshua Munn 2 سال پیش
والد
کامیت
ef12245351

+ 20 - 1
wagtail/images/tests/test_admin_views.py

@@ -31,7 +31,7 @@ from wagtail.test.testapp.models import (
 )
 from wagtail.test.utils import WagtailTestUtils
 
-from .utils import Image, get_test_image_file
+from .utils import Image, get_test_image_file, get_test_image_file_svg
 
 # Get the chars that Django considers safe to leave unescaped in a URL
 urlquote_safechars = RFC3986_SUBDELIMS + str("/~:@")
@@ -524,6 +524,25 @@ class TestImageAddView(WagtailTestUtils, TestCase):
         root_collection = Collection.get_first_root_node()
         self.assertEqual(image.collection, root_collection)
 
+    def test_add_svg(self):
+        response = self.post(
+            {
+                "title": "Test image",
+                "file": SimpleUploadedFile(
+                    "test.svg",
+                    get_test_image_file_svg().file.getvalue(),
+                    content_type="text/html",
+                ),
+            }
+        )
+
+        # Should redirect back to index
+        self.assertRedirects(response, reverse("wagtailimages:index"))
+
+        # Check that the image was created
+        images = Image.objects.filter(title="Test image")
+        self.assertEqual(images.count(), 1)
+
     @override_settings(
         DEFAULT_FILE_STORAGE="wagtail.test.dummy_external_storage.DummyExternalStorage"
     )

+ 35 - 0
wagtail/images/tests/test_image_operations.py

@@ -913,3 +913,38 @@ class TestWebpFormatConversion(TestCase):
         out = fil.run(image, BytesIO())
 
         self.assertEqual(out.format_name, "webp")
+
+
+class TestCheckSize(TestCase):
+    def test_check_size_when_floats_allowed(self):
+        sizes = [
+            (1.5, 1.5),
+            (1.5, 1),
+            (1, 1.5),
+            (1, 1),
+        ]
+        for size in sizes:
+            with self.subTest(size=size):
+                self.assertIsNone(
+                    image_operations.ImageTransform._check_size(
+                        size, allow_floating_point=True
+                    )
+                )
+
+    def test_check_size_when_floats_forbidden(self):
+        fail_sizes = [
+            (1.5, 1.5),
+            (1.5, 1),
+            (1, 1.5),
+        ]
+        for size in fail_sizes:
+            with self.subTest(size=size):
+                with self.assertRaises(TypeError):
+                    image_operations.ImageTransform._check_size(
+                        size, allow_floating_point=False
+                    )
+        self.assertIsNone(
+            image_operations.ImageTransform._check_size(
+                (1, 1), allow_floating_point=False
+            )
+        )

+ 6 - 0
wagtail/images/tests/test_templatetags.py

@@ -88,6 +88,12 @@ class ImageNodeTestCase(TestCase):
                 ["fill-400x400", "format-webp", "webpquality-50"],
                 "fill-400x400|format-webp|webpquality-50",
             ),
+            (self.svg_image, ["max-400x400"], "max-400x400"),
+            (self.svg_image, ["min-400x400"], "min-400x400"),
+            (self.svg_image, ["width-300"], "width-300"),
+            (self.svg_image, ["height-300"], "height-300"),
+            (self.svg_image, ["scale-50"], "scale-50"),
+            (self.svg_image, ["fill-400x400"], "fill-400x400"),
         ]
         for image, filter_specs, expected in params:
             with self.subTest(img=image, filter_specs=filter_specs, expected=expected):

+ 2 - 0
wagtail/test/settings.py

@@ -257,3 +257,5 @@ MESSAGE_TAGS = {
     message_constants.WARNING: "my-custom-tag",
     message_constants.ERROR: "my-custom-tag",
 }
+
+WAGTAILIMAGES_ALLOW_SVG = True