"""Tests for turnstone.core.web — strip_html.""" from turnstone.core.web import strip_html class TestStripHtml: def test_removes_tags(self): assert strip_html("hello") == "hello" def test_removes_nested_tags(self): assert strip_html("
text
Some & text
" result = strip_html(html) assert "Title" in result assert "Some & text" in result assert "<" not in result def test_br_becomes_newline(self): #before
after
" result = strip_html(html) assert "var x" not in result assert "before" in result assert "after" in result def test_strips_style_content(self): html = "visible
" result = strip_html(html) assert "color" not in result assert "visible" in result def test_strips_template_content(self): html = "shown
" result = strip_html(html) assert "hidden" not in result assert "shown" in result def test_strips_noscript_content(self): html = "content
" result = strip_html(html) assert "Enable JS" not in result assert "content" in result def test_strips_multiple_script_blocks(self): html = "middle
" result = strip_html(html) assert "a()" not in result assert "b()" not in result assert "middle" in result def test_strips_multiline_script(self): html = "ok
" result = strip_html(html) assert "function" not in result assert "ok" in result def test_strips_script_case_insensitive(self): html = "text
" result = strip_html(html) assert "code()" not in result assert "text" in result def test_strips_script_with_attributes(self): html = 'done
' result = strip_html(html) assert "init()" not in result assert "done" in result class TestStripHtmlBlockStructure: """Block-level boundaries become line breaks instead of gluing text together.""" def test_paragraphs_separated(self): assert strip_html("a
b
") == "a\n\nb" def test_heading_not_glued_to_body(self): result = strip_html("Body text
") assert "TitleBody" not in result assert result == "Title\n\nBody text" def test_list_items_separated(self): result = strip_html("a
b
') assert result == "a\n\nb" def test_no_false_match_on_similar_tag_names(self): # is. Name lookup is exact,
# so lookalike prefixes must not introduce breaks.
assert strip_html("
a
b
") == "a\n\nb" assert strip_html("a