feat: initial import (exclude templates and runtime temp files)

This commit is contained in:
237899745
2026-02-27 15:21:15 +08:00
commit 0951732c7a
33 changed files with 11698 additions and 0 deletions

View File

@@ -0,0 +1,82 @@
#!/usr/bin/env python3
from __future__ import annotations
import unittest
from argparse import Namespace
from pathlib import Path
from tempfile import TemporaryDirectory
from wechat_bot_bridge import WechatXibaoBridge
class WechatBotBridgeSkipTests(unittest.TestCase):
def _new_bridge(self, tmp_dir: str) -> WechatXibaoBridge:
base = Path(tmp_dir)
args = Namespace(
wechat_base_url="http://127.0.0.1:18238",
xibao_base_url="http://127.0.0.1:8787",
wechat_auth_key="",
wechat_session_file=str(base / "session.json"),
sync_count=30,
poll_interval=2.0,
max_images=3,
once=True,
dry_run=True,
allow_from="",
state_file=str(base / "state.json"),
meta_file=str(base / "meta.json"),
daily_cleanup_time="00:10",
)
return WechatXibaoBridge(args)
def test_parse_skip_command(self) -> None:
with TemporaryDirectory() as tmp_dir:
bridge = self._new_bridge(tmp_dir)
cmd = bridge.parse_command("跳过3")
self.assertIsNotNone(cmd)
self.assertEqual(cmd.get("action"), "set_skip")
self.assertEqual(cmd.get("count"), "3")
cmd2 = bridge.parse_command("跳过12")
self.assertIsNotNone(cmd2)
self.assertEqual(cmd2.get("action"), "set_skip")
self.assertEqual(cmd2.get("count"), "12")
def test_apply_daily_skip_to_numbered_lines(self) -> None:
with TemporaryDirectory() as tmp_dir:
bridge = self._new_bridge(tmp_dir)
bridge.set_daily_skip("wxid_u1", 2)
raw = "#接龙\n1、第一条\n2、第二条\n3、第三条\n说明文本"
text, removed, requested = bridge.apply_daily_skip_to_raw_text("wxid_u1", raw)
self.assertEqual(requested, 2)
self.assertEqual(removed, 2)
self.assertIn("3、第三条", text)
self.assertNotIn("1、第一条", text)
self.assertNotIn("2、第二条", text)
def test_skip_zero_clears_setting(self) -> None:
with TemporaryDirectory() as tmp_dir:
bridge = self._new_bridge(tmp_dir)
bridge.set_daily_skip("wxid_u2", 5)
self.assertEqual(bridge.get_daily_skip("wxid_u2"), 5)
bridge.set_daily_skip("wxid_u2", 0)
self.assertEqual(bridge.get_daily_skip("wxid_u2"), 0)
def test_stale_daily_skip_is_invalidated(self) -> None:
with TemporaryDirectory() as tmp_dir:
bridge = self._new_bridge(tmp_dir)
bridge.meta["daily_skip"] = {
"wxid_old": {
"date": "2000-01-01",
"count": 3,
"updated_at": "2000-01-01T00:00:00",
}
}
value = bridge.get_daily_skip("wxid_old")
self.assertEqual(value, 0)
self.assertNotIn("wxid_old", bridge.meta.get("daily_skip", {}))
if __name__ == "__main__":
unittest.main()