"""xml_parser CDATA 剥离单元测试。""" from packages.application.viral_video.xml_parser import find_all, text_of XML = """""" def test_text_of_strips_cdata_with_markdown_newlines(): text = text_of(XML, "copy_display_markdown") assert not text.startswith("") assert "# 标题" in text assert "**加粗**" in text assert "[链接](https://a.com)" in text # markdown 换行被保留 assert "\n\n第二行" in text def test_plain_text_unchanged(): assert text_of(XML, "voiceover") == "口播不带 CDATA,保持原样。" def test_other_cdata_fields_stripped(): assert text_of(XML, "visual") == "画面:产品特写,光线柔和" def test_unclosed_tag_cdata_stripped(): # action_details 没有闭合标签,走未闭合兜底分支 node = find_all(XML, "action_details")[0] assert node["text"] == "未闭合标签里的 CDATA 也要剥离" def test_no_cdata_returns_original(): xml = "普通内容]]> 残留结尾" # 非完整 CDATA 包裹不应被误剥离 assert text_of(xml, "copy_display_markdown") == "普通内容]]> 残留结尾" def test_missing_tag_default(): assert text_of(XML, "nope", default="缺省") == "缺省"