88- GraphQL query integration
99"""
1010
11+ from unittest .mock import patch
12+
1113import pytest
1214from django .contrib .auth import get_user_model
1315from django .core .files .base import ContentFile
14- from django .test import TestCase , override_settings
16+ from django .test import SimpleTestCase , TestCase , override_settings
1517from graphql_relay import to_global_id
1618
1719from config .graphql .schema import schema
@@ -527,24 +529,6 @@ def test_message_search_with_query_text(self):
527529 "len(" in error_msg or "embedder" in error_msg or "vector" in error_msg
528530 )
529531
530- def test_message_search_nonexistent_user (self ):
531- """Test message search with nonexistent user."""
532- store = CoreChatMessageVectorStore (
533- user_id = 99999 , # Non-existent user
534- corpus_id = self .corpus .id ,
535- embedder_path = "test/embedder" ,
536- )
537-
538- query = VectorSearchQuery (
539- query_embedding = [0.1 ] * 384 ,
540- similarity_top_k = 10 ,
541- )
542-
543- results = store .search (query )
544-
545- # Should return empty results, not crash
546- self .assertEqual (len (results ), 0 )
547-
548532 def test_message_search_missing_query_raises_error (self ):
549533 """Test that message search raises ValueError when neither text nor embedding provided."""
550534 store = CoreChatMessageVectorStore (
@@ -563,6 +547,40 @@ def test_message_search_missing_query_raises_error(self):
563547 self .assertIn ("Either query_text or query_embedding" , str (ctx .exception ))
564548
565549
550+ class MessageVectorSearchMissingUserTest (SimpleTestCase ):
551+ """Test the missing-user branch without database or embedder dependencies."""
552+
553+ def test_message_search_nonexistent_user (self ):
554+ """A missing user returns no results without attempting vector search."""
555+ missing_user_id = 99999
556+
557+ with (
558+ patch (
559+ "opencontractserver.llms.vector_stores."
560+ "core_conversation_vector_stores.get_embedder" ,
561+ return_value = (None , "test/embedder" ),
562+ ),
563+ patch ("django.contrib.auth.get_user_model" ) as mock_get_user_model ,
564+ ):
565+ mock_user_model = mock_get_user_model .return_value
566+ mock_user_model .DoesNotExist = User .DoesNotExist
567+ mock_user_model .objects .get .side_effect = User .DoesNotExist
568+
569+ store = CoreChatMessageVectorStore (
570+ user_id = missing_user_id ,
571+ embedder_path = "test/embedder" ,
572+ )
573+ query = VectorSearchQuery (
574+ query_embedding = [0.1 ] * 384 ,
575+ similarity_top_k = 10 ,
576+ )
577+
578+ results = store .search (query )
579+
580+ self .assertEqual (results , [])
581+ mock_user_model .objects .get .assert_called_once_with (id = missing_user_id )
582+
583+
566584class GraphQLConversationSearchTest (TestCase ):
567585 """Test GraphQL search queries."""
568586
0 commit comments