@@ -228,3 +228,46 @@ def test_find_mongo_error(self, mock_mongo_adapter):
228
228
result = repo .find ("conversations" , {})
229
229
assert result == []
230
230
mock_mongo_adapter .find .assert_called_once ()
231
+
232
+ @pytest .mark .asyncio
233
+ async def test_retrieve_mongo_only_returns_formatted_memory (
234
+ self , mock_mongo_adapter
235
+ ):
236
+ """Test retrieval from MongoDB only, returns formatted memory string."""
237
+ # Setup: no Zep, only MongoDB
238
+ repo = MemoryRepository (mongo_adapter = mock_mongo_adapter )
239
+ # Mock MongoDB find to return a doc with user and assistant messages
240
+ mock_mongo_adapter .find .return_value = [
241
+ {"user_message" : "Hello" , "assistant_message" : "Hi there" }
242
+ ]
243
+ result = await repo .retrieve ("user123" )
244
+ assert "\n User: Hello\n Assistant: Hi there" in result
245
+
246
+ @pytest .mark .asyncio
247
+ async def test_retrieve_mongo_only_handles_no_results (self , mock_mongo_adapter ):
248
+ """Test retrieval from MongoDB returns empty string if no docs."""
249
+ repo = MemoryRepository (mongo_adapter = mock_mongo_adapter )
250
+ mock_mongo_adapter .find .return_value = []
251
+ result = await repo .retrieve ("user123" )
252
+ assert result == ""
253
+
254
+ @pytest .mark .asyncio
255
+ async def test_retrieve_mongo_only_handles_missing_fields (self , mock_mongo_adapter ):
256
+ """Test retrieval from MongoDB skips docs missing required fields."""
257
+ repo = MemoryRepository (mongo_adapter = mock_mongo_adapter )
258
+ # Missing assistant_message
259
+ mock_mongo_adapter .find .return_value = [{"user_message" : "Hello" }]
260
+ result = await repo .retrieve ("user123" )
261
+ assert result == ""
262
+
263
+ @pytest .mark .asyncio
264
+ async def test_retrieve_mongo_error_logged_and_returns_empty (
265
+ self , mock_mongo_adapter
266
+ ):
267
+ """Test retrieval logs error and returns empty string on exception."""
268
+ repo = MemoryRepository (mongo_adapter = mock_mongo_adapter )
269
+ mock_mongo_adapter .find .side_effect = Exception ("Find error" )
270
+ with patch ("solana_agent.repositories.memory.logger" ) as mock_logger :
271
+ result = await repo .retrieve ("user123" )
272
+ assert result == ""
273
+ mock_logger .error .assert_called ()
0 commit comments