@@ -91,15 +91,24 @@ def test_call_llm_for_system_prompt(self, mock_get_model_name, mock_openai, mock
9191 @patch ('backend.services.prompt_service.generate_system_prompt' )
9292 @patch ('backend.services.prompt_service.query_tools_by_ids' )
9393 @patch ('backend.services.prompt_service.search_agent_info_by_agent_id' )
94+ @patch ('backend.services.prompt_service.query_all_agent_info_by_tenant_id' )
9495 @patch ('backend.services.prompt_service.update_agent' )
95- def test_generate_and_save_system_prompt_impl (self , mock_update_agent , mock_search_agent_info ,
96- mock_query_tools , mock_generate_system_prompt ):
96+ def test_generate_and_save_system_prompt_impl (
97+ self ,
98+ mock_update_agent ,
99+ mock_query_all_agents ,
100+ mock_search_agent_info ,
101+ mock_query_tools ,
102+ mock_generate_system_prompt ,
103+ ):
97104 # Setup
98105 mock_tool1 = {"name" : "tool1" , "description" : "Tool 1 desc" ,
99106 "inputs" : "input1" , "output_type" : "output1" }
100107 mock_tool2 = {"name" : "tool2" , "description" : "Tool 2 desc" ,
101108 "inputs" : "input2" , "output_type" : "output2" }
102109 mock_query_tools .return_value = [mock_tool1 , mock_tool2 ]
110+ # No existing agents so that duplicate detection path is not triggered
111+ mock_query_all_agents .return_value = []
103112
104113 mock_agent1 = {"name" : "agent1" , "description" : "Agent 1 desc" }
105114 mock_agent2 = {"name" : "agent2" , "description" : "Agent 2 desc" }
@@ -161,8 +170,18 @@ def mock_generator(*args, **kwargs):
161170 self .assertEqual (agent_info .business_description , "Test task" )
162171
163172 @patch ('backend.services.prompt_service.generate_system_prompt' )
173+ @patch ('backend.services.prompt_service.query_all_agent_info_by_tenant_id' )
174+ @patch ('backend.services.prompt_service.get_enabled_sub_agent_description_for_generate_prompt' )
175+ @patch ('backend.services.prompt_service.get_enabled_tool_description_for_generate_prompt' )
164176 @patch ('backend.services.prompt_service.update_agent' )
165- def test_generate_and_save_system_prompt_impl_create_mode (self , mock_update_agent , mock_generate_system_prompt ):
177+ def test_generate_and_save_system_prompt_impl_create_mode (
178+ self ,
179+ mock_update_agent ,
180+ mock_get_enabled_tools ,
181+ mock_get_enabled_sub_agents ,
182+ mock_query_all_agents ,
183+ mock_generate_system_prompt ,
184+ ):
166185 """Test generate_and_save_system_prompt_impl in create mode (agent_id=0)"""
167186 # Setup - Mock the generator to return the expected data structure
168187 def mock_generator (* args , ** kwargs ):
@@ -177,6 +196,13 @@ def mock_generator(*args, **kwargs):
177196 yield {"type" : "few_shots" , "content" : "Final few shots prompt" , "is_complete" : True }
178197
179198 mock_generate_system_prompt .side_effect = mock_generator
199+ # Simulate no existing agents (no duplicates)
200+ mock_query_all_agents .return_value = []
201+ # Simulate back-end enabled tools / sub-agents when IDs are empty
202+ enabled_tools = [{"name" : "db_tool" , "description" : "DB tool" }]
203+ enabled_sub_agents = [{"name" : "db_agent" , "description" : "DB agent" }]
204+ mock_get_enabled_tools .return_value = enabled_tools
205+ mock_get_enabled_sub_agents .return_value = enabled_sub_agents
180206
181207 # Execute - test as a generator with agent_id=0 (create mode) and empty tool/sub-agent IDs
182208 result_gen = generate_and_save_system_prompt_impl (
@@ -194,11 +220,11 @@ def mock_generator(*args, **kwargs):
194220 # Assert
195221 self .assertGreater (len (result ), 0 )
196222
197- # Should call generate_system_prompt with empty lists for tools and sub-agents
223+ # Should call generate_system_prompt with back-end enabled tools and sub-agents
198224 mock_generate_system_prompt .assert_called_once_with (
199- [] , # Empty sub_agent_info_list
225+ enabled_sub_agents , # sub_agent_info_list from helper
200226 "Test task" ,
201- [] , # Empty tool_info_list
227+ enabled_tools , # tool_info_list from helper
202228 "tenant456" ,
203229 self .test_model_id ,
204230 "zh"
0 commit comments