summaryrefslogtreecommitdiff
path: root/tests/images_tests.py
blob: 0ab29e1b5f706e3bb3d9015280de2c985e885079 (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
78
79
80
81
82
83
84
85
86
87
import io

from nose.tools import istest
from precisely import assert_that, has_attrs, is_sequence

import mammoth


@istest
def inline_is_available_as_alias_of_img_element():
    assert mammoth.images.inline is mammoth.images.img_element


@istest
def data_uri_encodes_images_in_base64():
    image_bytes = b"abc"
    image = mammoth.documents.Image(
        alt_text=None,
        content_type="image/jpeg",
        open=lambda: io.BytesIO(image_bytes),
    )

    result = mammoth.images.data_uri(image)

    assert_that(result, is_sequence(
        has_attrs(attributes={"src": "data:image/jpeg;base64,YWJj"}),
    ))


@istest
class ImgElementTests:
    @istest
    def test_when_element_does_not_have_alt_text_then_alt_attribute_is_not_set(self):
        image_bytes = b"abc"
        image = mammoth.documents.Image(
            alt_text=None,
            content_type="image/jpeg",
            open=lambda: io.BytesIO(image_bytes),
        )

        @mammoth.images.img_element
        def convert_image(image):
            return {"src": "<src>"}

        result = convert_image(image)

        assert_that(result, is_sequence(
            has_attrs(attributes={"src": "<src>"}),
        ))

    @istest
    def test_when_element_se_alt_text_then_alt_attribute_is_set(self):
        image_bytes = b"abc"
        image = mammoth.documents.Image(
            alt_text="<alt>",
            content_type="image/jpeg",
            open=lambda: io.BytesIO(image_bytes),
        )

        @mammoth.images.img_element
        def convert_image(image):
            return {"src": "<src>"}

        result = convert_image(image)

        assert_that(result, is_sequence(
            has_attrs(attributes={"alt": "<alt>", "src": "<src>"}),
        ))

    @istest
    def test_image_alt_text_can_be_overridden_by_alt_attribute_returned_from_function(self):
        image_bytes = b"abc"
        image = mammoth.documents.Image(
            alt_text="<alt>",
            content_type="image/jpeg",
            open=lambda: io.BytesIO(image_bytes),
        )

        @mammoth.images.img_element
        def convert_image(image):
            return {"alt": "<alt override>", "src": "<src>"}

        result = convert_image(image)

        assert_that(result, is_sequence(
            has_attrs(attributes={"alt": "<alt override>", "src": "<src>"}),
        ))