aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/docx/body_xml_tests.py66
1 files changed, 61 insertions, 5 deletions
diff --git a/tests/docx/body_xml_tests.py b/tests/docx/body_xml_tests.py
index 6064ddb..678d17f 100644
--- a/tests/docx/body_xml_tests.py
+++ b/tests/docx/body_xml_tests.py
@@ -464,6 +464,56 @@ class ReadXmlElementTests(object):
with image.open() as image_file:
assert_equal(self.IMAGE_BYTES, image_file.read())
+
+ @istest
+ def alt_text_title_is_used_if_alt_text_description_is_blank(self):
+ drawing_element = _create_inline_image(
+ blip=_embedded_blip(self.IMAGE_RELATIONSHIP_ID),
+ description=" ",
+ title="It's a hat",
+ )
+
+ image = self._read_embedded_image(drawing_element)
+
+ assert_equal(documents.Image, type(image))
+ assert_equal("It's a hat", image.alt_text)
+ assert_equal("image/png", image.content_type)
+ with image.open() as image_file:
+ assert_equal(self.IMAGE_BYTES, image_file.read())
+
+
+ @istest
+ def alt_text_title_is_used_if_alt_text_description_is_missing(self):
+ drawing_element = _create_inline_image(
+ blip=_embedded_blip(self.IMAGE_RELATIONSHIP_ID),
+ title="It's a hat",
+ )
+
+ image = self._read_embedded_image(drawing_element)
+
+ assert_equal(documents.Image, type(image))
+ assert_equal("It's a hat", image.alt_text)
+ assert_equal("image/png", image.content_type)
+ with image.open() as image_file:
+ assert_equal(self.IMAGE_BYTES, image_file.read())
+
+
+ @istest
+ def alt_text_description_is_preferred_to_alt_text_title(self):
+ drawing_element = _create_inline_image(
+ blip=_embedded_blip(self.IMAGE_RELATIONSHIP_ID),
+ description="It's a hat",
+ title="hat",
+ )
+
+ image = self._read_embedded_image(drawing_element)
+
+ assert_equal(documents.Image, type(image))
+ assert_equal("It's a hat", image.alt_text)
+ assert_equal("image/png", image.content_type)
+ with image.open() as image_file:
+ assert_equal(self.IMAGE_BYTES, image_file.read())
+
@istest
def can_read_anchored_pictures(self):
drawing_element = _create_anchored_image(
@@ -696,21 +746,27 @@ def _text_element(value):
return xml_element("w:t", {}, [xml_text(value)])
-def _create_inline_image(description, blip):
+def _create_inline_image(blip, description=None, title=None):
return xml_element("w:drawing", {}, [
- xml_element("wp:inline", {}, _create_image_elements(description, blip))
+ xml_element("wp:inline", {}, _create_image_elements(blip, description=description, title=title))
])
def _create_anchored_image(description, blip):
return xml_element("w:drawing", {}, [
- xml_element("wp:anchor", {}, _create_image_elements(description, blip))
+ xml_element("wp:anchor", {}, _create_image_elements(blip, description=description, ))
])
-def _create_image_elements(description, blip):
+def _create_image_elements(blip, description=None, title=None):
+ properties = {}
+ if description is not None:
+ properties["descr"] = description
+ if title is not None:
+ properties["title"] = title
+
return [
- xml_element("wp:docPr", {"descr": description}),
+ xml_element("wp:docPr", properties),
xml_element("a:graphic", {}, [
xml_element("a:graphicData", {}, [
xml_element("pic:pic", {}, [