from app.article_fetchers.wechat import parse_wechat_article_html
from app.article_fetchers.wechat import parse_wechat_search_html
WECHAT_HTML = """
ignored
一篇公众号文章标题
VideoMemo实验室
2026-06-08
第一段正文
第二段正文
"""
def test_parse_wechat_article_extracts_core_fields():
article = parse_wechat_article_html(
WECHAT_HTML,
"https://mp.weixin.qq.com/s/example",
)
assert article.platform == "wechat_mp"
assert article.article_id == "MzExample:123456:1:abcdef"
assert article.title == "一篇公众号文章标题"
assert article.author_name == "VideoMemo实验室"
assert article.published_at == "2026-06-08"
assert "第一段正文" in article.content_text
assert "第二段正文" in article.content_text
assert article.image_urls == ["https://mmbiz.qpic.cn/example.jpg"]
def test_parse_wechat_article_fails_when_body_is_empty():
html = '标题
'
try:
parse_wechat_article_html(html, "https://mp.weixin.qq.com/s/empty")
except ValueError as exc:
assert "正文" in str(exc)
else:
raise AssertionError("expected parser to reject empty article body")
def test_parse_wechat_search_html_extracts_article_results():
html = """
"""
items = parse_wechat_search_html(html, "AI工具", limit=5)
assert len(items) == 1
assert items[0].platform == "wechat_mp"
assert items[0].title == "AI工具清单"
assert items[0].url == "https://mp.weixin.qq.com/s/abc"
assert items[0].author_name == "公众号作者"
assert items[0].content_text == "正文摘要"