from textwrap import dedent
from minihtml import fragment, make_prototype
def test_nested_block_elements_are_rendered_with_indentation():
div = make_prototype("div")
assert str(div(div())) == dedent(
"""\
"""
)
assert str(div(div(), div())) == dedent(
"""\
"""
)
def test_nested_inline_elements_are_rendered_without_indentation():
span = make_prototype("span", inline=True)
em = make_prototype("em", inline=True)
assert str(span(em())) == ""
assert str(span(em(), em())) == ""
def test_consecutive_inline_children_of_block_elements_are_rendered_without_indentation():
div = make_prototype("div")
span = make_prototype("span", inline=True)
assert str(div(span(), span())) == dedent("
")
def test_a_single_inline_child_of_a_block_element_is_rendered_without_indentation():
div = make_prototype("div")
span = make_prototype("span", inline=True)
assert str(div(span())) == "
"
def test_nested_block_elements_are_always_rendered_with_indentation():
div = make_prototype("div")
p = make_prototype("p")
span = make_prototype("span", inline=True)
assert str(div(span(), p())) == dedent(
"""\
"""
)
assert str(div(span(), span(), p())) == dedent(
"""\
"""
)
assert str(span(span(), p())) == dedent(
"""\
"""
)
assert str(span(p(), span())) == dedent(
"""\
"""
)
def test_empty_elements_with_and_without_end_tag():
div = make_prototype("div")
img = make_prototype("img", inline=True, empty=True, omit_end_tag=True)
iframe = make_prototype("iframe", empty=True, omit_end_tag=False)
assert str(img()) == "
"
assert str(iframe()) == ""
assert str(div(img(), img())) == ""
assert str(div(iframe(), iframe())) == dedent(
"""\
"""
)
def test_text_content_is_rendered_inline():
div = make_prototype("div")
span = make_prototype("span", inline=True)
assert str(div("hello")) == "hello
"
assert str(span("hello")) == "hello"
assert str(div(span(), "hello")) == "hello
"
def test_rendering_fragments():
div = make_prototype("div")
span = make_prototype("span", inline=True)
frag1 = fragment(div(), span(), "test", div())
assert str(div(frag1)) == dedent(
"""\
"""
)
assert str(frag1) == dedent(
"""\
test
"""
)