Files
Cognitive_Agent/tests/unit/test_capability_registry.py
T
2026-07-30 08:45:38 +08:00

58 lines
2.6 KiB
Python
Executable File

from __future__ import annotations
import unittest
from cognitive_agent.application.capability_registry import CapabilityRegistry
from cognitive_agent.application.seat_service import REPOSITORY_ROOT
from cognitive_agent.infrastructure.llm.openai_responses import build_intent_schema
class CapabilityRegistryTests(unittest.TestCase):
def test_loads_domain_owned_capabilities_and_execution_availability(self) -> None:
snapshot = CapabilityRegistry(REPOSITORY_ROOT, {"seat"}).snapshot()
domains = {item["domain"]: item for item in snapshot["domains"]}
self.assertEqual(domains["seat"]["availability"], "executable")
self.assertEqual(domains["climate"]["availability"], "catalog_only")
seat_capabilities = {item["name"] for item in domains["seat"]["capabilities"]}
self.assertIn("seat.set_backrest_recline", seat_capabilities)
self.assertIn("seat.set_legrest_extension", seat_capabilities)
self.assertIn("seat.save_posture_preset", seat_capabilities)
self.assertIn("seat.apply_posture_preset", seat_capabilities)
self.assertNotIn("seat.set_height", seat_capabilities)
self.assertIn(
"prefer_executable_when_equally_suitable",
snapshot["execution_policy"]["capability_selection"],
)
self.assertFalse(snapshot["execution_policy"]["named_preset_required"])
self.assertEqual(
snapshot["execution_policy"]["planning_environment"],
"dry_run_candidate_synthesis",
)
self.assertIn(
"vehicle",
next(
item
for item in domains["climate"]["capabilities"]
if item["name"] == "climate.set_fan_level"
)["target_scopes"],
)
def test_structured_output_schema_is_derived_from_registry(self) -> None:
snapshot = CapabilityRegistry(REPOSITORY_ROOT, {"seat"}).snapshot()
schema = build_intent_schema(snapshot)
properties = schema["properties"]
self.assertIn("climate", properties["detected_domains"]["items"]["enum"])
request = properties["requests"]["items"]["properties"]
self.assertIn("climate.set_fan_level", request["capability"]["enum"])
self.assertIn("seat.set_cushion_tilt", request["capability"]["enum"])
self.assertIn("seat.save_posture_preset", request["capability"]["enum"])
self.assertIn("save", request["operation"]["enum"])
self.assertIn("apply", request["operation"]["enum"])
self.assertIn("vehicle", request["target_scope"]["enum"])
if __name__ == "__main__":
unittest.main()