geo/backend/tests/test_html_generator.py

55 lines
1.6 KiB
Python

# test_html_generator.py
import pytest
# 使用实际实现的 HTMLGenerator
from app.services.content.html_generator import HTMLGenerator
def test_filter_banned_tags_zhihu():
"""知乎HTML标签过滤"""
generator = HTMLGenerator()
html = generator.generate(
content="<script>alert(1)</script><p>这是内容</p>",
platform="zhihu"
)
assert "<script>" not in html
assert "<p>这是内容</p>" in html
def test_filter_banned_tags_wechat():
"""微信公众号HTML过滤"""
generator = HTMLGenerator()
html = generator.generate(
content="<a href='http://baidu.com'>外部链接</a><p>内容</p>",
platform="wechat"
)
# 微信公众号禁止外部链接
assert "http://baidu.com" not in html
def test_convert_to_markdown():
"""Markdown转换"""
generator = HTMLGenerator()
md = generator.to_markdown("<h1>标题</h1><p>段落</p>")
assert "# 标题" in md
assert "段落" in md
def test_convert_to_plain():
"""纯文本转换"""
generator = HTMLGenerator()
plain = generator.to_plain("<h1>标题</h1><p>段落<b>加粗</b></p>")
assert "标题" in plain
assert "段落" in plain
assert "<" not in plain # 不应包含HTML标签
def test_multi_format_output():
"""多格式同时输出"""
generator = HTMLGenerator()
html = generator.generate("<p>内容</p>", "zhihu", "html")
md = generator.to_markdown("<p>内容</p>")
plain = generator.to_plain("<p>内容</p>")
assert html is not None
assert md is not None
assert plain is not None
assert len(html) > 0
assert len(md) > 0
assert len(plain) > 0