Files
mai-bot/pytests/test_napcat_adapter_plugin.py

61 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""NapCat 插件入口行为测试。"""
from pathlib import Path
from typing import List
from types import SimpleNamespace
import importlib
import sys
import pytest
BUILT_IN_PLUGIN_ROOT = Path(__file__).resolve().parents[1] / "src" / "plugins" / "built_in"
if str(BUILT_IN_PLUGIN_ROOT) not in sys.path:
sys.path.insert(0, str(BUILT_IN_PLUGIN_ROOT))
NapCatAdapterPlugin = importlib.import_module("napcat_adapter.plugin").NapCatAdapterPlugin
class DummyLogger:
"""用于测试的轻量日志对象。"""
def __init__(self) -> None:
"""初始化测试日志对象。"""
self.debug_messages: List[str] = []
def debug(self, message: str) -> None:
"""记录调试日志。
Args:
message: 待记录的日志内容。
"""
self.debug_messages.append(message)
@pytest.mark.asyncio
async def test_on_config_update_refreshes_settings_and_restarts(monkeypatch: pytest.MonkeyPatch) -> None:
"""配置更新时应刷新插件配置、清空旧 settings并触发连接重启。"""
plugin = NapCatAdapterPlugin()
plugin._ctx = SimpleNamespace(logger=DummyLogger())
plugin._settings = object()
restart_calls: List[dict] = []
async def fake_restart() -> None:
"""记录一次重启调用。"""
restart_calls.append(dict(plugin._plugin_config))
monkeypatch.setattr(plugin, "_restart_connection_if_needed", fake_restart)
new_config = {
"plugin": {"enabled": True, "config_version": "0.1.0"},
"napcat_server": {"host": "127.0.0.1", "port": 3001},
}
await plugin.on_config_update(new_config, "v2")
assert plugin._plugin_config == new_config
assert plugin._settings is None
assert restart_calls == [new_config]
assert plugin.ctx.logger.debug_messages == ["NapCat 适配器收到配置更新通知: v2"]