aboutsummaryrefslogtreecommitdiff
path: root/tests/docx/content_types_xml_tests.py
blob: 14920b4aa872bc2babde9adcdf8f44eed9f8db45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from mammoth.docx.xmlparser import element as xml_element
from mammoth.docx.content_types_xml import read_content_types_xml_element
from ..testing import assert_equal


def test_content_type_is_based_on_default_for_extension_if_there_is_no_override():
    element = xml_element("content-types:Types", {}, [
        xml_element("content-types:Default", {
            "Extension": "png",
            "ContentType": "image/png",
        })
    ])
    content_types = read_content_types_xml_element(element)
    assert_equal(
        "image/png",
        content_types.find_content_type("word/media/hat.png"),
    )


def test_content_type_is_based_on_override_if_present():
    element = xml_element("content-types:Types", {}, [
        xml_element("content-types:Default", {
            "Extension": "png",
            "ContentType": "image/png",
        }),
        xml_element("content-types:Override", {
            "PartName": "/word/media/hat.png",
            "ContentType": "image/hat"
        }),
    ])
    content_types = read_content_types_xml_element(element)
    assert_equal(
        "image/hat",
        content_types.find_content_type("word/media/hat.png"),
    )


def test_fallback_content_types_have_common_image_types():
    element = xml_element("content-types:Types", {}, [])
    content_types = read_content_types_xml_element(element)
    assert_equal(
        "image/png",
        content_types.find_content_type("word/media/hat.png"),
    )
    assert_equal(
        "image/gif",
        content_types.find_content_type("word/media/hat.gif"),
    )
    assert_equal(
        "image/jpeg",
        content_types.find_content_type("word/media/hat.jpg"),
    )
    assert_equal(
        "image/jpeg",
        content_types.find_content_type("word/media/hat.jpeg"),
    )
    assert_equal(
        "image/bmp",
        content_types.find_content_type("word/media/hat.bmp"),
    )
    assert_equal(
        "image/tiff",
        content_types.find_content_type("word/media/hat.tif"),
    )
    assert_equal(
        "image/tiff",
        content_types.find_content_type("word/media/hat.tiff"),
    )


def test_fallback_content_types_are_case_insensitive():
    element = xml_element("content-types:Types", {}, [])
    content_types = read_content_types_xml_element(element)
    assert_equal(
        "image/png",
        content_types.find_content_type("word/media/hat.PnG"),
    )