Files
mulit-agent/mulit_agent/tests/test_agent_service_skills.py
T

57 lines
1.9 KiB
Python

import hashlib
from mulit_agent_app.application.agent_service import AgentService
from mulit_agent_app.config import AgentConfig
from mulit_agent_app.infrastructure.database import AgentDatabase
class _Session:
def __init__(self) -> None:
self.acks: list[tuple[str, str, str]] = []
def send_skill_ack(self, skill_id: str, status: str, error: str = "") -> None:
self.acks.append((skill_id, status, error))
class _Executor:
def __init__(self) -> None:
self.prefix = ""
def set_instruction_prefix(self, value: str) -> None:
self.prefix = value
def test_chinese_skill_name_installs_and_empty_snapshot_removes_it(tmp_path):
config = AgentConfig(tmp_path, tmp_path / "settings.json", tmp_path / "agent.sqlite3", tmp_path / "agent.log")
service = AgentService.__new__(AgentService)
service._config = config
service._database = AgentDatabase(config.database_path)
service._database.initialize()
service.session = _Session()
service.task_executor = _Executor()
content = "# 图生图工具\n\n仅用于测试。"
skill_id = "a" * 32
service.apply_skill_snapshot(
{
"skills": [
{
"id": skill_id,
"name": "图生图工具",
"version": "0.3.2",
"content": content,
"checksum": hashlib.sha256(content.encode("utf-8")).hexdigest(),
}
]
}
)
assert (config.data_dir / "skills" / skill_id / "SKILL.md").read_text(encoding="utf-8") == content
assert service._database.get_meta(f"skill.{skill_id}.name") == "图生图工具"
assert service.session.acks == [(skill_id, "applied", "")]
service.apply_skill_snapshot({"skills": []})
assert not (config.data_dir / "skills" / skill_id).exists()
assert service._database.get_meta(f"skill.{skill_id}.name") == ""