Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_tree.py4.58 kB
import uuid from unittest.mock import MagicMock, patch import pytest from memos.configs.memory import TreeTextMemoryConfig from memos.memories.textual.item import TextualMemoryItem, TreeNodeTextualMemoryMetadata from memos.memories.textual.tree import TreeTextMemory @pytest.fixture def mock_config(): config = TreeTextMemoryConfig( extractor_llm={ "backend": "openai", "config": { "model_name_or_path": "gpt-4o", "api_key": "test_api_key", }, }, dispatcher_llm={ "backend": "openai", "config": { "model_name_or_path": "gpt-4o", "api_key": "test_api_key", }, }, embedder={ "backend": "ollama", "config": { "model_name_or_path": "default", }, }, graph_db={ "backend": "neo4j", "config": { "uri": "bolt://localhost:7687", "user": "neo4j", "password": "test_password", "db_name": "test", }, }, memory_filename="memory.json", ) return config @pytest.fixture def mock_tree_text_memory(mock_config): with ( patch("memos.llms.factory.LLMFactory.from_config"), patch("memos.embedders.factory.EmbedderFactory.from_config"), patch("memos.graph_dbs.factory.GraphStoreFactory.from_config"), patch("memos.memories.textual.tree_text_memory.organize.manager.MemoryManager"), ): instance = TreeTextMemory(mock_config) yield instance def test_add_calls_manager(mock_tree_text_memory): mock_tree_text_memory.memory_manager.add = MagicMock() mock_item = TextualMemoryItem( id=str(uuid.uuid4()), memory="Test memory", metadata=TreeNodeTextualMemoryMetadata(updated_at=None), ) mock_tree_text_memory.add([mock_item]) mock_tree_text_memory.memory_manager.add.assert_called_once() def test_get_working_memory_sorted(mock_tree_text_memory): older = TextualMemoryItem( id=str(uuid.uuid4()), memory="Older", metadata=TreeNodeTextualMemoryMetadata(updated_at="2020-01-01"), ) newer = TextualMemoryItem( id=str(uuid.uuid4()), memory="Newer", metadata=TreeNodeTextualMemoryMetadata(updated_at="2025-01-01"), ) mock_tree_text_memory.graph_store.get_all_memory_items = MagicMock( return_value=[older.model_dump(), newer.model_dump()] ) result = mock_tree_text_memory.get_working_memory() assert result[0].id == newer.id def test_get_memory_found(mock_tree_text_memory): test_id = str(uuid.uuid4()) fake_record = {"id": test_id, "memory": "Test", "metadata": {}} mock_tree_text_memory.graph_store.get_node = MagicMock(return_value=fake_record) memory = mock_tree_text_memory.get(test_id) assert memory.id == test_id def test_get_memory_not_found(mock_tree_text_memory): mock_tree_text_memory.graph_store.get_node = MagicMock(return_value=None) with pytest.raises(ValueError): mock_tree_text_memory.get(str(uuid.uuid4())) def test_delete_all(mock_tree_text_memory): mock_tree_text_memory.graph_store.clear = MagicMock() mock_tree_text_memory.delete_all() mock_tree_text_memory.graph_store.clear.assert_called_once() def test_load_file_not_exists(mock_tree_text_memory, tmp_path): mock_tree_text_memory.config.memory_filename = "memory.json" mock_tree_text_memory.graph_store.import_graph = MagicMock() result = tmp_path / "does_not_exist" mock_tree_text_memory.load(str(result)) # Should log a warning but not raise def test_dump_and_load_success(tmp_path, mock_tree_text_memory): mock_tree_text_memory.graph_store.export_graph = MagicMock( return_value={"nodes": [{"id": "1"}]} ) mock_tree_text_memory.config.memory_filename = "memory.json" mock_tree_text_memory.dump(str(tmp_path)) dumped_file = tmp_path / "memory.json" assert dumped_file.exists() def test_drop_creates_backup_and_cleans(mock_tree_text_memory): mock_tree_text_memory.dump = MagicMock() mock_tree_text_memory._cleanup_old_backups = MagicMock() mock_tree_text_memory.graph_store.drop_database = MagicMock() mock_tree_text_memory.drop(keep_last_n=1) mock_tree_text_memory.dump.assert_called_once() mock_tree_text_memory._cleanup_old_backups.assert_called_once() mock_tree_text_memory.graph_store.drop_database.assert_called_once()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server