33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
import tempfile
|
|
|
|
from genesis.chat.agent import ChatAgent
|
|
from genesis.server.service import GenesisService
|
|
from genesis.server.store import ProjectsStore, SessionStore
|
|
|
|
_tmp = tempfile.mkdtemp(prefix="genesis_ws_")
|
|
|
|
|
|
def _make_agent(sink):
|
|
store = SessionStore(db_path=f"{_tmp}/sessions.db")
|
|
projects = ProjectsStore(db_path=f"{_tmp}/projects.db")
|
|
svc = GenesisService(store=store, data_root="data", engine="fake", projects=projects)
|
|
return ChatAgent(service=svc, fake=True, engine="fake", progress_sink=sink)
|
|
|
|
|
|
def test_agent_emits_progress_events():
|
|
events = []
|
|
agent = _make_agent(events.append)
|
|
sid = agent.service.create_session("u1").session_id
|
|
agent._emit_progress(sid, {"step": "parse", "status": "ok", "detail": "解析完成"})
|
|
assert events and events[0]["type"] == "progress"
|
|
assert events[0]["step"] == "parse"
|
|
|
|
|
|
def test_agent_emits_error_event():
|
|
events = []
|
|
agent = _make_agent(events.append)
|
|
sid = agent.service.create_session("u1").session_id
|
|
agent._emit_error(sid, "解析失败:boom", "generate")
|
|
errs = [e for e in events if e["type"] == "error"]
|
|
assert errs and "boom" in errs[0]["detail"]
|