# -*- coding: utf-8 -*- """数据管理行内打开类:label 对齐模板,不与宿主 CRUD 重复。""" from __future__ import annotations import json import os import unittest def _skill_root() -> str: return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def _load_actions() -> list[dict]: path = os.path.join(_skill_root(), "assets", "actions.json") with open(path, encoding="utf-8") as f: manifest = json.load(f) return list(manifest.get("actions") or []) def _by_id(actions: list[dict], action_id: str) -> dict: for item in actions: if item.get("id") == action_id: return item raise AssertionError(f"missing action {action_id}") class TestRowOpenActions(unittest.TestCase): def test_reveal_and_open_use_template_labels(self) -> None: actions = _load_actions() reveal = _by_id(actions, "reveal-profile") open_browser = _by_id(actions, "open-browser") self.assertEqual(reveal.get("label"), "打开目录") self.assertEqual(open_browser.get("label"), "打开浏览器") self.assertEqual(reveal.get("placements"), ["row"]) self.assertEqual(open_browser.get("placements"), ["row"]) self.assertEqual(reveal.get("interaction"), "direct") self.assertEqual(open_browser.get("interaction"), "direct") self.assertFalse(reveal.get("replaces")) self.assertFalse(open_browser.get("replaces")) def test_create_takes_over_host_add_without_row_duplicate(self) -> None: create = _by_id(_load_actions(), "account-add-web") self.assertEqual(create.get("replaces"), "create") self.assertEqual(create.get("placements") or [], []) self.assertEqual(create.get("label"), "新增账号") if __name__ == "__main__": unittest.main()