@@ -1036,3 +1036,105 @@ def test_create_referenced_documents_invalid_urls(self) -> None:
10361036 assert result [0 ].doc_title == "not-a-valid-url"
10371037 assert result [1 ].doc_url == AnyUrl ("https://example.com/doc1" )
10381038 assert result [1 ].doc_title == "doc1"
1039+
1040+
1041+ @pytest .mark .asyncio
1042+ async def test_cleanup_after_streaming_generate_topic_summary_default_true (
1043+ mocker : MockerFixture ,
1044+ ) -> None :
1045+ """Test that topic summary is generated by default for new conversations."""
1046+ mock_is_transcripts_enabled = mocker .Mock (return_value = False )
1047+ mock_get_topic_summary = mocker .AsyncMock (return_value = "Generated topic" )
1048+ mock_store_transcript = mocker .Mock ()
1049+ mock_persist_conversation = mocker .Mock ()
1050+ mock_client = mocker .AsyncMock ()
1051+ mock_config = mocker .Mock ()
1052+
1053+ mock_session = mocker .Mock ()
1054+ mock_session .query .return_value .filter_by .return_value .first .return_value = None
1055+ mock_session .__enter__ = mocker .Mock (return_value = mock_session )
1056+ mock_session .__exit__ = mocker .Mock (return_value = None )
1057+ mocker .patch ("utils.endpoints.get_session" , return_value = mock_session )
1058+
1059+ mocker .patch (
1060+ "utils.endpoints.create_referenced_documents_with_metadata" , return_value = []
1061+ )
1062+ mocker .patch ("utils.endpoints.store_conversation_into_cache" )
1063+
1064+ query_request = QueryRequest (query = "test query" )
1065+
1066+ await endpoints .cleanup_after_streaming (
1067+ user_id = "test_user" ,
1068+ conversation_id = "test_conv_id" ,
1069+ model_id = "test_model" ,
1070+ provider_id = "test_provider" ,
1071+ llama_stack_model_id = "test_llama_model" ,
1072+ query_request = query_request ,
1073+ summary = mocker .Mock (llm_response = "test response" , tool_calls = []),
1074+ metadata_map = {},
1075+ started_at = "2024-01-01T00:00:00Z" ,
1076+ client = mock_client ,
1077+ config = mock_config ,
1078+ skip_userid_check = False ,
1079+ get_topic_summary_func = mock_get_topic_summary ,
1080+ is_transcripts_enabled_func = mock_is_transcripts_enabled ,
1081+ store_transcript_func = mock_store_transcript ,
1082+ persist_user_conversation_details_func = mock_persist_conversation ,
1083+ )
1084+
1085+ mock_get_topic_summary .assert_called_once_with (
1086+ "test query" , mock_client , "test_llama_model"
1087+ )
1088+
1089+ mock_persist_conversation .assert_called_once ()
1090+ assert mock_persist_conversation .call_args [1 ]["topic_summary" ] == "Generated topic"
1091+
1092+
1093+ @pytest .mark .asyncio
1094+ async def test_cleanup_after_streaming_generate_topic_summary_explicit_false (
1095+ mocker : MockerFixture ,
1096+ ) -> None :
1097+ """Test that topic summary is NOT generated when explicitly set to False."""
1098+ mock_is_transcripts_enabled = mocker .Mock (return_value = False )
1099+ mock_get_topic_summary = mocker .AsyncMock (return_value = "Generated topic" )
1100+ mock_store_transcript = mocker .Mock ()
1101+ mock_persist_conversation = mocker .Mock ()
1102+ mock_client = mocker .AsyncMock ()
1103+ mock_config = mocker .Mock ()
1104+
1105+ mock_session = mocker .Mock ()
1106+ mock_session .query .return_value .filter_by .return_value .first .return_value = None
1107+ mock_session .__enter__ = mocker .Mock (return_value = mock_session )
1108+ mock_session .__exit__ = mocker .Mock (return_value = None )
1109+ mocker .patch ("utils.endpoints.get_session" , return_value = mock_session )
1110+
1111+ mocker .patch (
1112+ "utils.endpoints.create_referenced_documents_with_metadata" , return_value = []
1113+ )
1114+ mocker .patch ("utils.endpoints.store_conversation_into_cache" )
1115+
1116+ query_request = QueryRequest (query = "test query" , generate_topic_summary = False )
1117+
1118+ await endpoints .cleanup_after_streaming (
1119+ user_id = "test_user" ,
1120+ conversation_id = "test_conv_id" ,
1121+ model_id = "test_model" ,
1122+ provider_id = "test_provider" ,
1123+ llama_stack_model_id = "test_llama_model" ,
1124+ query_request = query_request ,
1125+ summary = mocker .Mock (llm_response = "test response" , tool_calls = []),
1126+ metadata_map = {},
1127+ started_at = "2024-01-01T00:00:00Z" ,
1128+ client = mock_client ,
1129+ config = mock_config ,
1130+ skip_userid_check = False ,
1131+ get_topic_summary_func = mock_get_topic_summary ,
1132+ is_transcripts_enabled_func = mock_is_transcripts_enabled ,
1133+ store_transcript_func = mock_store_transcript ,
1134+ persist_user_conversation_details_func = mock_persist_conversation ,
1135+ )
1136+
1137+ mock_get_topic_summary .assert_not_called ()
1138+
1139+ mock_persist_conversation .assert_called_once ()
1140+ assert mock_persist_conversation .call_args [1 ]["topic_summary" ] is None
0 commit comments