muse-agent-example/tests/architecture/test_studio_path_contract.py

66 lines
2.6 KiB
Python

"""Studio 三个 HTTP 入口的物理路径合同。"""
from __future__ import annotations
import pathlib
import unittest
from unittest import mock
ROOT = next(
parent
for parent in (pathlib.Path(__file__).resolve().parent, *pathlib.Path(__file__).resolve().parents)
if (parent / "AGENTS.md").is_file() and (parent / ".git").exists()
)
if str(ROOT) not in __import__("sys").path:
__import__("sys").path.insert(0, str(ROOT))
class StudioPathContractTest(unittest.TestCase):
def test_studio入口都解析到独立仓根并能加载业务脚本(self) -> None:
from muse.authority.studio.read import server
from muse.authority.studio.write.decision import decision_channel
from muse.authority.studio.write.lesson import lesson_confirm
self.assertEqual(server.PROJECT_ROOT, ROOT)
self.assertEqual(
server.WRITE_CHAPTER_ARTIFACTS,
ROOT / "docs" / "write-chapter" / "artifacts",
)
self.assertEqual(decision_channel.PROJECT_ROOT, ROOT)
self.assertTrue(
(ROOT / "muse" / "content" / "work" / "skills" / "sovereignty" / "决定正文候选去留" / "scripts" / "write_canonical.py").is_file()
)
self.assertEqual(lesson_confirm.PROJECT_ROOT, ROOT)
self.assertEqual(
lesson_confirm.EVIDENCE,
ROOT / "muse" / "authority" / "evidence" / "skills" / "记录运行证据" / "scripts",
)
def test写通道页面具备地标和键盘可达正文滚动区(self) -> None:
from muse.authority.studio.write.decision import decision_channel
from muse.authority.studio.write.lesson import lesson_confirm
decision_page = decision_channel._page("测试", "<pre>正文</pre>")
lesson_page = lesson_confirm._page("测试", "<pre>详情</pre>")
self.assertIn("<main>", decision_page)
self.assertIn("<main>", lesson_page)
with mock.patch.object(
decision_channel, "_load_candidate", return_value={
"id": 1, "work_id": 1, "chapter": 1, "run_id": "run",
"attempt": 1, "run_type": "production", "version": "1",
"sha256": "a" * 64, "body": "正文", "state": "passed",
"semantic": "passed", "create_time": "now",
}
):
candidate_page = decision_channel.view_candidate(1)
self.assertIn("tabindex='0'", candidate_page)
self.assertIn(
"--muted:#6b6a65",
(ROOT / "muse" / "authority" / "studio" / "read" / "server.py").read_text(encoding="utf-8"),
)
if __name__ == "__main__":
unittest.main(verbosity=2)