test_data_research_frontend_contract.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from pathlib import Path
  2. ROOT = Path(__file__).resolve().parents[2]
  3. def test_data_research_center_pages_routes_and_apis_cover_full_workflow():
  4. routes = (ROOT / "frontend/src/router/routes.js").read_text(encoding="utf-8")
  5. api = (ROOT / "frontend/src/api/dataDevelopment.js").read_text(encoding="utf-8")
  6. pages = {
  7. name: (ROOT / f"frontend/src/views/dataGovernance/development/{name}.vue").read_text(encoding="utf-8")
  8. for name in ("index", "ingestion", "tasks", "review")
  9. }
  10. combined = api + routes + "".join(pages.values())
  11. for route_name in (
  12. "dataResearchCenter",
  13. "dataResearchIngestion",
  14. "dataResearchTasks",
  15. "dataResearchReview",
  16. ):
  17. assert route_name in routes
  18. for api_name in (
  19. "uploadSourceFile",
  20. "getEvidence",
  21. "decideCandidates",
  22. "createDataElement",
  23. "transitionDataElement",
  24. "generateOntologySuggestions",
  25. ):
  26. assert api_name in api
  27. for label in ("SQL", "XLS", "XLSX", "CSV", "DOCX", "PDF", "PNG", "JPG"):
  28. assert label in pages["ingestion"]
  29. for status in ("排队中", "解析中", "待评审", "已发布", "失败", "已取消"):
  30. assert status in pages["tasks"]
  31. assert "证据预览" in pages["review"]
  32. assert "批量决策" in pages["review"]
  33. assert "viewer" in routes and "readOnly" in combined
  34. for secret in ("MINIO_PASSWORD", "NEO4J_PASSWORD", "DEEPSEEK_API_KEY", "databasePassword"):
  35. assert secret not in combined
  36. def test_metadata_page_links_to_new_data_research_center():
  37. metadata = (ROOT / "frontend/src/views/dataGovernance/metadata/index.vue").read_text(encoding="utf-8")
  38. assert "/data-governance/development" in metadata
  39. assert "数据研发中心" in metadata