Files
OpenJarvis/tests/agents/test_openclaw_plugin.py
T
Jon Saad-FalconandClaude Opus 4.6 301e9cd2d4 Implement OpenJarvis v1.0 — all five pillars, SDK, benchmarks, Docker
Complete implementation across six development phases (v0.1 through v1.0):

- Core: Registry system, config, event bus, types (Phase 0)
- Intelligence + Inference: Model routing, Ollama/vLLM/llama.cpp/Cloud engines (Phase 1)
- Memory: SQLite/FAISS/ColBERT/BM25/Hybrid backends, document ingest, context injection (Phase 2)
- Agents: Simple/Orchestrator/Custom/OpenClaw agents, tool system (Phase 3)
- Learning: HeuristicRouter, reward functions, GRPO stub, telemetry aggregation (Phase 4)
- SDK: Jarvis class, OpenClaw protocol/transport, benchmarks, Docker deployment (Phase 5)

520 tests passing, 8 skipped (optional deps). Ruff lint clean.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 00:52:48 +00:00

80 lines
2.3 KiB
Python

"""Tests for the OpenClaw plugin skeleton."""
from __future__ import annotations
from unittest.mock import MagicMock
from openjarvis.agents.openclaw_plugin import (
MemorySearchManager,
ProviderPlugin,
register,
)
class TestRegister:
def test_register_returns_dict(self):
result = register()
assert isinstance(result, dict)
assert result["name"] == "openjarvis"
assert "provider_class" in result
assert "memory_class" in result
class TestProviderPlugin:
def test_has_generate(self):
assert hasattr(ProviderPlugin, "generate")
def test_has_list_models(self):
assert hasattr(ProviderPlugin, "list_models")
def test_generate_with_engine(self):
engine = MagicMock()
engine.generate.return_value = {"content": "test"}
plugin = ProviderPlugin(engine=engine, model="test-model")
result = plugin.generate("Hello")
assert result["content"] == "test"
def test_list_models_with_engine(self):
engine = MagicMock()
engine.list_models.return_value = ["model-1", "model-2"]
plugin = ProviderPlugin(engine=engine)
assert plugin.list_models() == ["model-1", "model-2"]
class TestMemorySearchManager:
def test_has_search(self):
assert hasattr(MemorySearchManager, "search")
def test_has_sync(self):
assert hasattr(MemorySearchManager, "sync")
def test_has_status(self):
assert hasattr(MemorySearchManager, "status")
def test_search_with_backend(self):
backend = MagicMock()
mock_result = MagicMock()
mock_result.content = "found"
mock_result.score = 0.9
mock_result.source = "test.txt"
backend.retrieve.return_value = [mock_result]
mgr = MemorySearchManager(backend=backend)
results = mgr.search("test query")
assert len(results) == 1
assert results[0]["content"] == "found"
def test_search_no_backend(self):
mgr = MemorySearchManager()
results = mgr.search("test")
assert results == []
def test_status_no_backend(self):
mgr = MemorySearchManager()
assert mgr.status()["available"] is False
def test_sync(self):
mgr = MemorySearchManager()
result = mgr.sync()
assert result["status"] == "ok"