Skip to main content
Glama

MemOS-MCP

by qinshu1109
test_simple_structure.py5.87 kB
import json import unittest from unittest.mock import MagicMock, patch from memos.chunkers import ChunkerFactory from memos.chunkers.base import Chunk from memos.configs.mem_reader import SimpleStructMemReaderConfig from memos.embedders.factory import EmbedderFactory from memos.llms.factory import LLMFactory from memos.mem_reader.simple_struct import SimpleStructMemReader from memos.memories.textual.item import TextualMemoryItem class TestSimpleStructMemReader(unittest.TestCase): def setUp(self): # Mock config self.config = MagicMock(spec=SimpleStructMemReaderConfig) self.config.llm = MagicMock() self.config.embedder = MagicMock() self.config.chunker = MagicMock() self.config.remove_prompt_example = MagicMock() # Mock dependencies with ( patch.object(LLMFactory, "from_config", return_value=MagicMock()), patch.object(EmbedderFactory, "from_config", return_value=MagicMock()), patch.object(ChunkerFactory, "from_config", return_value=MagicMock()), ): self.reader = SimpleStructMemReader(self.config) # Set up mock LLM and embedder self.reader.llm = MagicMock() self.reader.embedder = MagicMock() self.reader.chunker = MagicMock() def test_init(self): """Test initialization of the reader.""" self.assertIsNotNone(self.reader.config) self.assertIsNotNone(self.reader.llm) self.assertIsNotNone(self.reader.embedder) def test_process_chat_data(self): """Test processing chat data into memory items.""" scene_data_info = [ "user: Hello", "assistant: Hi there", "user: How are you?", ] info = {"user_id": "user1", "session_id": "session1"} # Mock LLM response mock_response = ( '{"memory list": [{"key": "Planned scope adjustment", "memory_type": "UserMemory", ' '"value": "Tom planned to suggest in a meeting on June 27, 2025 at 9:30 AM", ' '"tags": ["planning", "deadline change", "feature prioritization"]}], ' '"summary": "Tom is currently focused on managing a new project with a tight schedule."}' ) self.reader.llm.generate.return_value = mock_response self.reader.parse_json_result = lambda x: json.loads(x) result = self.reader._process_chat_data(scene_data_info, info) self.assertIsInstance(result, list) self.assertIsInstance(result[0], TextualMemoryItem) self.assertEqual( result[0].memory, "Tom planned to suggest in a meeting on June 27, 2025 at 9:30 AM" ) self.assertEqual(result[0].metadata.user_id, "user1") def test_process_doc_data(self): """Test processing document chunks into memory items.""" scene_data_info = {"file": "tests/mem_reader/test.txt", "text": "Parsed document text"} info = {"user_id": "user1", "session_id": "session1"} # Mock LLM response mock_response = '{"summary": "A sample document about testing.", "tags": ["document"]}' self.reader.llm.generate.return_value = mock_response self.reader.chunker.chunk.return_value = [ Chunk(text="Parsed document text", token_count=3, sentences=["Parsed document text"]) ] self.reader.parse_json_result = lambda x: json.loads(x) result = self.reader._process_doc_data(scene_data_info, info) self.assertIsInstance(result, list) self.assertIsInstance(result[0], TextualMemoryItem) self.assertIn("sample document", result[0].memory) def test_get_scene_data_info_with_chat(self): """Test extracting chat info from scene data.""" scene_data = [ [ { "role": "user", "chat_time": "3 May 2025", "content": "I'm feeling a bit down today.", }, { "role": "assistant", "chat_time": "3 May 2025", "content": "I'm sorry to hear that. Do you want to talk about what's been going on?", }, { "role": "user", "chat_time": "3 May 2025", "content": "It's just been a tough couple of days...", }, ], ] result = self.reader.get_scene_data_info(scene_data, type="chat") self.assertIsInstance(result, list) self.assertEqual(len(result), 1) self.assertEqual(result[0][0], "user: [3 May 2025]: I'm feeling a bit down today.") @patch("memos.parsers.factory.ParserFactory") def test_get_scene_data_info_with_doc(self, mock_parser_factory): """Test parsing document files.""" parser_instance = MagicMock() parser_instance.parse.return_value = "Parsed document text.\n" mock_parser_factory.from_config.return_value = parser_instance scene_data = ["tests/mem_reader/test.txt"] result = self.reader.get_scene_data_info(scene_data, type="doc") self.assertIsInstance(result, list) self.assertEqual(result[0]["text"], "Parsed document text\n") def test_parse_json_result_success(self): """Test successful JSON parsing.""" raw_response = '{"summary": "Test summary", "tags": ["test"]}' result = self.reader.parse_json_result(raw_response) self.assertIsInstance(result, dict) self.assertIn("summary", result) def test_parse_json_result_failure(self): """Test failure in JSON parsing.""" raw_response = "Invalid JSON string" result = self.reader.parse_json_result(raw_response) self.assertEqual(result, {}) if __name__ == "__main__": unittest.main()

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