Simple HTML Generation https://minihtml.trendels.name/
1from textwrap import dedent
2
3from minihtml import fragment, make_prototype
4
5div = make_prototype("div")
6p = make_prototype("p")
7span = make_prototype("span", inline=True)
8
9
10def test_fragment_holds_a_group_of_nodes():
11 f = fragment(
12 p("a paragraph"),
13 span("a span"),
14 " and some text",
15 )
16
17 assert str(f) == dedent("""\
18 <p>a paragraph</p>
19 <span>a span</span> and some text""")
20
21
22def test_empty_fragment_produces_no_output():
23 elem = span("a", fragment(), "b")
24
25 assert str(elem) == "<span>ab</span>"
26
27
28def test_fragment_is_a_context_manager():
29 with fragment() as f:
30 p("hi")
31 p("there")
32
33 assert str(f) == dedent("""\
34 <p>hi</p>
35 <p>there</p>""")
36
37
38def test_can_use_fragment_in_context_manager():
39 with div as elem:
40 fragment("hi there")
41
42 assert str(elem) == "<div>hi there</div>"
43
44
45def test_element_passed_to_fragment_is_not_registered_with_context():
46 with div as elem:
47 fragment(p("hi"), p("there"))
48
49 assert str(elem) == dedent("""\
50 <div>
51 <p>hi</p>
52 <p>there</p>
53 </div>""")
54
55
56def test_stringifying_fragment_has_no_side_effect():
57 f = fragment()
58 with f:
59 p("content")
60
61 with div as elem:
62 str(f)
63
64 assert str(elem) == "<div></div>"