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"]