aboutsummaryrefslogtreecommitdiff
path: root/tests/docx/style_map_tests.py
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-12 17:18:45 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-12 17:18:45 +0100
commit2cf770c98de1851d9859e2787e10f0b77bcc7956 (patch)
tree488c652688fe9c1802432c30ad10a90263b8ba8f /tests/docx/style_map_tests.py
parentbdf4ce362483964d1604facaa262618a0f0bd971 (diff)
Update content types when embedding style map
Diffstat (limited to 'tests/docx/style_map_tests.py')
-rw-r--r--tests/docx/style_map_tests.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/docx/style_map_tests.py b/tests/docx/style_map_tests.py
index 6c9e97b..b774b66 100644
--- a/tests/docx/style_map_tests.py
+++ b/tests/docx/style_map_tests.py
@@ -41,6 +41,12 @@ def embedded_style_map_is_referenced_in_relationships():
fileobj = _normal_docx()
write_style_map(fileobj, "p => h1")
assert_equal(expected_relationships_xml, _read_relationships_xml(fileobj))
+
+@istest
+def embedded_style_map_has_override_content_type_in_content_types_xml():
+ fileobj = _normal_docx()
+ write_style_map(fileobj, "p => h1")
+ assert_equal(expected_content_types_xml, _read_content_types_xml(fileobj))
@istest
@@ -52,6 +58,7 @@ def can_overwrite_existing_style_map():
assert_equal("p => h2", read_style_map(fileobj))
_assert_no_duplicates(zip_file._zip_file.namelist())
assert_equal(expected_relationships_xml, _read_relationships_xml(fileobj))
+ assert_equal(expected_content_types_xml, _read_content_types_xml(fileobj))
def _read_relationships_xml(fileobj):
@@ -62,6 +69,14 @@ def _read_relationships_xml(fileobj):
)
+def _read_content_types_xml(fileobj):
+ with open_zip(fileobj, "r") as zip_file:
+ return xml.parse_xml(
+ io.StringIO(zip_file.read_str("[Content_Types].xml")),
+ [("ct", "http://schemas.openxmlformats.org/package/2006/content-types")],
+ )
+
+
original_relationships_xml = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
'<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">' +
'<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>' +
@@ -72,6 +87,17 @@ expected_relationships_xml = xml.element("r:Relationships", {}, [
xml.element("r:Relationship", {"Id": "rMammothStyleMap", "Type": "http://schemas.zwobble.org/mammoth/style-map", "Target": "/mammoth/style-map"}),
])
+original_content_types_xml = ('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>' +
+ '<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">' +
+ '<Default Extension="png" ContentType="image/png"/>' +
+ '</Types>'
+)
+
+expected_content_types_xml = xml.element("ct:Types", {}, [
+ xml.element("ct:Default", {"Extension": "png", "ContentType": "image/png"}),
+ xml.element("ct:Override", {"PartName": "/mammoth/style-map", "ContentType": "text/prs.mammoth.style-map"}),
+])
+
def _normal_docx():
fileobj = io.BytesIO()
@@ -79,6 +105,7 @@ def _normal_docx():
try:
zip_file.writestr("placeholder", "placeholder")
zip_file.writestr("word/_rels/document.xml.rels", original_relationships_xml)
+ zip_file.writestr("[Content_Types].xml", original_content_types_xml)
expected_relationships_xml
finally:
zip_file.close()