Files
memory-gateway/plugins/memory-gateway-agent/tests/test_hermes_register_tools.py

64 lines
1.8 KiB
Python

from __future__ import annotations
import importlib.util
import sys
import types
from pathlib import Path
class FakeHermesContext:
def __init__(self) -> None:
self.registered_tools = []
self.registered_hooks = []
def register_tool(self, name, toolset, schema, handler, **kwargs):
self.registered_tools.append((name, toolset, schema, handler, kwargs))
def register_hook(self, hook_name, callback):
self.registered_hooks.append((hook_name, callback))
def load_plugin_module():
plugin_dir = Path(__file__).resolve().parents[1]
if "hermes_plugins" not in sys.modules:
parent = types.ModuleType("hermes_plugins")
parent.__path__ = []
sys.modules["hermes_plugins"] = parent
spec = importlib.util.spec_from_file_location(
"hermes_plugins.memory_gateway_agent_test",
plugin_dir / "__init__.py",
submodule_search_locations=[str(plugin_dir)],
)
module = importlib.util.module_from_spec(spec)
module.__package__ = "hermes_plugins.memory_gateway_agent_test"
module.__path__ = [str(plugin_dir)]
sys.modules["hermes_plugins.memory_gateway_agent_test"] = module
assert spec.loader is not None
spec.loader.exec_module(module)
return module
def test_register_registers_five_tools():
module = load_plugin_module()
ctx = FakeHermesContext()
module.register(ctx)
assert [item[0] for item in ctx.registered_tools] == [
"memory_search",
"memory_append_episode",
"memory_commit_session",
"memory_upsert",
"memory_feedback",
]
assert all(item[1] == "memory_gateway" for item in ctx.registered_tools)
def test_registered_handlers_are_callable():
module = load_plugin_module()
ctx = FakeHermesContext()
module.register(ctx)
assert all(callable(item[3]) for item in ctx.registered_tools)