"""F1 测试:项目骨架 + 配置体系""" import pytest from fastapi.testclient import TestClient from src.main import app, config, load_config @pytest.fixture def client(): return TestClient(app) class TestHealthEndpoint: """健康端点""" def test_status_returns_200(self, client): resp = client.get("/api/daemon/status") assert resp.status_code == 200 def test_status_has_required_fields(self, client): data = client.get("/api/daemon/status").json() assert data["status"] == "running" assert data["version"] == "2.6.0" assert "ticker_running" in data assert "config" in data def test_status_config_values(self, client): data = client.get("/api/daemon/status").json() assert data["config"]["tick_interval"] == 30 assert data["config"]["max_global_agents"] == 5 class TestProjectsEndpoint: """项目列表端点(占位)""" def test_list_projects_returns_200(self, client): resp = client.get("/api/projects") assert resp.status_code == 200 assert "projects" in resp.json() class TestConfig: """配置加载""" def test_config_loaded(self): assert isinstance(config, dict) def test_config_has_daemon_section(self): assert "daemon" in config assert config["daemon"]["tick_interval"] == 30 def test_config_has_inbox_section(self): assert "inbox" in config def test_load_config_returns_dict(self): cfg = load_config() assert isinstance(cfg, dict) class TestOpenAPI: """Swagger 文档""" def test_openapi_json_accessible(self, client): resp = client.get("/openapi.json") assert resp.status_code == 200 data = resp.json() assert data["info"]["title"] == "Sanguo MoziPlus v2" def test_docs_endpoint_accessible(self, client): resp = client.get("/docs") assert resp.status_code == 200