import sys import unittest from pathlib import Path ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT / "src")) from wechat_decrypt_tool.chat_helpers import _parse_app_message class TestChatOfficialArticleCoverStyle(unittest.TestCase): def test_mp_weixin_feed_url_is_cover_style(self): raw_text = ( "" "" "时尚穿搭:「这样的jk你喜欢吗」" "这样的jk你喜欢吗?" "5" "" "http://mp.weixin.qq.com/s?__biz=MzkxOTY4MjIxOA==&mid=2247508015&idx=1&sn=931dce677c6e70b4365792b14e7e8ff0" "&exptype=masonry_feed_brief_content_elite_for_pcfeeds_u2i&ranksessionid=1770868256_1&req_id=1770867949535989#rd" "" "https://mmbiz.qpic.cn/sz_mmbiz_jpg/foo/640?wx_fmt=jpeg&wxfrom=401" "甜图社" "gh_abc123" "" "" ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "link") self.assertEqual(parsed.get("linkType"), "official_article") self.assertEqual(parsed.get("linkStyle"), "cover") def test_mp_weixin_non_feed_url_keeps_default_style(self): raw_text = ( "" "" "普通分享" "这样的jk你喜欢吗?" "5" "http://mp.weixin.qq.com/s?__biz=foo&mid=1&idx=1&sn=bar#rd" "甜图社" "gh_abc123" "" "" ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "link") self.assertEqual(parsed.get("linkType"), "official_article") self.assertEqual(parsed.get("linkStyle"), "default") if __name__ == "__main__": unittest.main()