Simple HTML Generation https://minihtml.trendels.name/
at main 64 lines 1.3 kB view raw
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>"