Files

71 lines
2.3 KiB
Python

"""Tests del AgentRegistry."""
import shutil
from datetime import UTC, datetime
from pathlib import Path
from agentforge_core.domain.agent import AgentDefinition, LLMConfig
from agentforge_core.registry.repository import FileSystemAgentRegistry
FIXTURES = Path(__file__).parent.parent / "fixtures" / "agents"
def test_get_agent_carga_version_activa() -> None:
r = FileSystemAgentRegistry(FIXTURES)
a = r.get_agent("test_agent")
assert a.name == "test_agent"
assert a.version == "v1"
def test_list_versions_devuelve_metadata() -> None:
r = FileSystemAgentRegistry(FIXTURES)
metas = r.list_versions("test_agent")
assert len(metas) == 1
assert metas[0].id == "v1"
def test_upsert_crea_nueva_version_y_actualiza_index(tmp_path: Path) -> None:
# Copiamos el fixture a tmp para no contaminar el repo
shutil.copytree(FIXTURES / "test_agent", tmp_path / "test_agent")
r = FileSystemAgentRegistry(tmp_path)
new_def = AgentDefinition(
name="test_agent",
version="v2",
owner="Juan",
purpose="añade lógica",
state="active",
guardrails=["test_policy"],
llm=LLMConfig(temperature=0.3),
system_prompt="Eres un agente actualizado.",
output_schema={"type": "object"},
updated_at=datetime.now(UTC),
)
meta = r.upsert_version("test_agent", new_def, message="bump temp", author="Juan")
assert meta.id == "v2"
assert (tmp_path / "test_agent" / "versions" / "v2.yaml").exists()
# active_version debe haber cambiado
a = r.get_agent("test_agent")
assert a.version == "v2"
def test_diff_versions_retorna_unified_diff(tmp_path: Path) -> None:
shutil.copytree(FIXTURES / "test_agent", tmp_path / "test_agent")
r = FileSystemAgentRegistry(tmp_path)
new_def = AgentDefinition(
name="test_agent",
version="v2",
owner="Juan",
purpose="distinto",
state="active",
guardrails=["test_policy"],
llm=LLMConfig(),
system_prompt="otro prompt",
output_schema={"type": "object"},
updated_at=datetime.now(UTC),
)
r.upsert_version("test_agent", new_def, message="change", author="Juan")
diff = r.diff_versions("test_agent", "v1", "v2")
assert "purpose" in diff.unified_diff
assert diff.from_version == "v1"
assert diff.to_version == "v2"