feat: 添加测试用例并优化代码结构
refactor(permission_manager): 调整初始化顺序和逻辑 fix(admin_manager): 修复初始化逻辑和目录创建问题 feat(ws): 优化Bot实例初始化条件 feat(message): 增强MessageSegment功能并添加测试 feat(events): 支持字符串格式的消息解析 test: 添加核心功能测试用例 refactor(plugin_manager): 改进插件路径处理 style: 清理无用导入和代码 chore: 更新依赖项
This commit is contained in:
141
tests/test_event_factory.py
Normal file
141
tests/test_event_factory.py
Normal file
@@ -0,0 +1,141 @@
|
||||
import pytest
|
||||
from models.events.factory import EventFactory, EventType
|
||||
from models.events.message import GroupMessageEvent, PrivateMessageEvent
|
||||
from models.events.notice import GroupIncreaseNoticeEvent
|
||||
from models.events.request import FriendRequestEvent
|
||||
from models.events.meta import HeartbeatEvent
|
||||
from models.message import MessageSegment
|
||||
|
||||
class TestEventFactory:
|
||||
def test_create_group_message_event_list(self):
|
||||
"""测试创建群消息事件 (message 为列表格式)"""
|
||||
data = {
|
||||
"post_type": "message",
|
||||
"message_type": "group",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456,
|
||||
"sub_type": "normal",
|
||||
"message_id": 1001,
|
||||
"user_id": 111111,
|
||||
"group_id": 222222,
|
||||
"message": [
|
||||
{"type": "text", "data": {"text": "Hello"}}
|
||||
],
|
||||
"raw_message": "Hello",
|
||||
"font": 0,
|
||||
"sender": {
|
||||
"user_id": 111111,
|
||||
"nickname": "User",
|
||||
"role": "member"
|
||||
}
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, GroupMessageEvent)
|
||||
assert event.group_id == 222222
|
||||
assert len(event.message) == 1
|
||||
assert event.message[0].type == "text"
|
||||
assert event.message[0].data["text"] == "Hello"
|
||||
|
||||
def test_create_group_message_event_str(self):
|
||||
"""测试创建群消息事件 (message 为字符串格式)"""
|
||||
data = {
|
||||
"post_type": "message",
|
||||
"message_type": "group",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456,
|
||||
"sub_type": "normal",
|
||||
"message_id": 1002,
|
||||
"user_id": 111111,
|
||||
"group_id": 222222,
|
||||
"message": "Hello World",
|
||||
"raw_message": "Hello World",
|
||||
"font": 0,
|
||||
"sender": {
|
||||
"user_id": 111111,
|
||||
"nickname": "User"
|
||||
}
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, GroupMessageEvent)
|
||||
assert len(event.message) == 1
|
||||
assert event.message[0].type == "text"
|
||||
assert event.message[0].data["text"] == "Hello World"
|
||||
|
||||
def test_create_private_message_event(self):
|
||||
"""测试创建私聊消息事件"""
|
||||
data = {
|
||||
"post_type": "message",
|
||||
"message_type": "private",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456,
|
||||
"sub_type": "friend",
|
||||
"message_id": 2001,
|
||||
"user_id": 333333,
|
||||
"message": "Private Msg",
|
||||
"raw_message": "Private Msg",
|
||||
"font": 0,
|
||||
"sender": {
|
||||
"user_id": 333333,
|
||||
"nickname": "Friend"
|
||||
}
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, PrivateMessageEvent)
|
||||
assert event.user_id == 333333
|
||||
|
||||
def test_create_notice_event(self):
|
||||
"""测试创建通知事件 (群成员增加)"""
|
||||
data = {
|
||||
"post_type": "notice",
|
||||
"notice_type": "group_increase",
|
||||
"sub_type": "approve",
|
||||
"group_id": 222222,
|
||||
"operator_id": 444444,
|
||||
"user_id": 555555,
|
||||
"time": 1600000000,
|
||||
"self_id": 123456
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, GroupIncreaseNoticeEvent)
|
||||
assert event.group_id == 222222
|
||||
assert event.user_id == 555555
|
||||
|
||||
def test_create_request_event(self):
|
||||
"""测试创建请求事件 (加好友)"""
|
||||
data = {
|
||||
"post_type": "request",
|
||||
"request_type": "friend",
|
||||
"user_id": 666666,
|
||||
"comment": "Add me",
|
||||
"flag": "flag_123",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, FriendRequestEvent)
|
||||
assert event.user_id == 666666
|
||||
assert event.comment == "Add me"
|
||||
|
||||
def test_create_meta_event(self):
|
||||
"""测试创建元事件 (心跳)"""
|
||||
data = {
|
||||
"post_type": "meta_event",
|
||||
"meta_event_type": "heartbeat",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456,
|
||||
"status": {"online": True, "good": True},
|
||||
"interval": 5000
|
||||
}
|
||||
event = EventFactory.create_event(data)
|
||||
assert isinstance(event, HeartbeatEvent)
|
||||
assert event.interval == 5000
|
||||
|
||||
def test_unknown_event_type(self):
|
||||
"""测试未知事件类型"""
|
||||
data = {
|
||||
"post_type": "unknown_type",
|
||||
"time": 1600000000,
|
||||
"self_id": 123456
|
||||
}
|
||||
with pytest.raises(ValueError, match="Unknown event type"):
|
||||
EventFactory.create_event(data)
|
||||
Reference in New Issue
Block a user