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 TestParseAppMessage(unittest.TestCase): def test_quote_type_57_nested_refermsg_uses_inner_title(self): raw_text = ( '' '一松一紧57' '00' '' '0' '' '' '571173057991425172913' '44372432598@chatroom44372432598@chatroom' '' '那里紧?哪里张?' '5700' '' '0' '' ']]>' '' ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "quote") self.assertEqual(parsed.get("content"), "一松一紧") self.assertEqual(parsed.get("quoteType"), "57") self.assertEqual(parsed.get("quoteContent"), "那里紧?哪里张?") def test_quote_type_57_plain_text_refermsg_keeps_text(self): raw_text = ( '' '回复57' '57' '' ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "quote") self.assertEqual(parsed.get("quoteContent"), "普通文本引用") def test_quote_type_49_nested_xml_refermsg_uses_inner_title(self): raw_text = ( '' '这种傻逼公众号怎么还在看57' '49' '' '为自己的美丽漂亮善良知性发声😊' '5https://mp.weixin.qq.com/s/example' 'https://mmbiz.qpic.cn/some-thumb.jpg' ']]>' ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "quote") self.assertEqual(parsed.get("quoteType"), "49") self.assertEqual(parsed.get("quoteTitle"), "水豚喧喧") self.assertEqual(parsed.get("quoteContent"), "[链接] 为自己的美丽漂亮善良知性发声😊") self.assertEqual(parsed.get("quoteThumbUrl"), "https://mmbiz.qpic.cn/some-thumb.jpg") def test_public_account_link_exposes_link_type_and_style(self): raw_text = ( '' '为自己的美丽漂亮善良知性发声😊' '#日常穿搭灵感 #白色蕾丝裙穿搭 #知性美女' '5' 'http://mp.weixin.qq.com/s?__biz=xx&mid=1' 'http://mmbiz.qpic.cn/abc/640?wx_fmt=jpeg' 'gh_0cef8eaa987d' '草莓不甜芒果甜' '' ) 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_quote_type_5_nested_xml_refermsg_uses_inner_title(self): raw_text = ( '' '这个年龄有点大啊57' '5' '\n' '谁说冬天不能穿裙子?5' 'https://mmbiz.qpic.cn/some-thumb2.jpg' 'https://mp.weixin.qq.com/s/example2' ']]>' ) parsed = _parse_app_message(raw_text) self.assertEqual(parsed.get("renderType"), "quote") self.assertEqual(parsed.get("quoteType"), "5") self.assertEqual(parsed.get("quoteTitle"), "水豚噜噜") self.assertEqual(parsed.get("quoteContent"), "[链接] 谁说冬天不能穿裙子?") self.assertEqual(parsed.get("quoteThumbUrl"), "https://mmbiz.qpic.cn/some-thumb2.jpg") if __name__ == "__main__": unittest.main()