aboutsummaryrefslogtreecommitdiff
path: root/tests/html_generation_tests.py
blob: f32b71393ec5e34b37f10a50ddb08168b2b27ae0 (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
88
89
90
91
92
93
from nose.tools import istest, assert_equal

from mammoth.html_generation import HtmlGenerator


@istest
def generates_empty_string_when_newly_created():
    generator = HtmlGenerator()
    assert_equal("", generator.html_string())


@istest
def html_escapes_text():
    generator = HtmlGenerator()
    generator.text("<")
    assert_equal("&lt;", generator.html_string())


@istest
def self_closing_tag_is_self_closing():
    generator = HtmlGenerator()
    generator.self_closing("br")
    assert_equal("<br />", generator.html_string())


@istest
def all_elements_are_closed_by_end_all():
    generator = HtmlGenerator()
    generator.start("p")
    generator.start("span")
    generator.text("Hello!")
    generator.end_all()
    assert_equal("<p><span>Hello!</span></p>", generator.html_string())


@istest
def elements_with_no_text_are_not_generator():
    generator = HtmlGenerator()
    generator.start("p")
    generator.start("span")
    generator.end_all()
    assert_equal("", generator.html_string())
    

@istest
def elements_with_empty_string_text_are_not_generator():
    generator = HtmlGenerator()
    generator.start("p")
    generator.start("span")
    generator.text("")
    generator.end_all()
    assert_equal("", generator.html_string())
    

@istest
def self_closing_tag_can_have_attributes():
    generator = HtmlGenerator()
    generator.self_closing("br", {"data-blah": "42"})
    assert_equal('<br data-blah="42" />', generator.html_string())


@istest
def attribute_values_are_escaped():
    generator = HtmlGenerator()
    generator.self_closing("br", {"data-blah": "<"})
    assert_equal('<br data-blah="&lt;" />', generator.html_string())


@istest
def opening_tag_can_have_attributes():
    generator = HtmlGenerator()
    generator.start("p", {"data-blah": "42"})
    generator.text("Hello!")
    generator.end()
    assert_equal('<p data-blah="42">Hello!</p>', generator.html_string())


@istest
def appending_another_html_generator_does_nothing_if_empty():
    generator = HtmlGenerator()
    generator.start("p")
    generator.append(HtmlGenerator())
    assert_equal('', generator.html_string())


@istest
def appending_another_html_generator_writes_out_elements_if_other_generator_is_not_empty():
    generator = HtmlGenerator()
    generator.start("p")
    other = HtmlGenerator()
    other.text("Hello!")
    generator.append(other)
    assert_equal('<p>Hello!', generator.html_string())