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()