mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-29 18:40:38 +00:00
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>
80 lines
2.3 KiB
Python
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"
|