@@ -96,21 +96,25 @@ async def test_list_models_yolo_read_mode(
9696 assert "transient" in str (call_args [0 ][1 ]) # Domain includes transient filter
9797
9898 # Check result structure
99+ assert "yolo_mode" in result
99100 assert "models" in result
101+ assert "total" in result
102+
103+ # Check YOLO mode metadata
104+ yolo_meta = result ["yolo_mode" ]
105+ assert yolo_meta ["enabled" ] is True
106+ assert yolo_meta ["level" ] == "read"
107+ assert "READ-ONLY" in yolo_meta ["description" ]
108+ assert "🚨" in yolo_meta ["warning" ]
109+ assert yolo_meta ["operations" ]["read" ] is True
110+ assert yolo_meta ["operations" ]["write" ] is False
111+ assert yolo_meta ["operations" ]["create" ] is False
112+ assert yolo_meta ["operations" ]["unlink" ] is False
113+
114+ # Check actual models are clean (no operations field)
100115 models = result ["models" ]
101- assert len (models ) > 0
102-
103- # Check for YOLO warning as first model
104- warning_model = models [0 ]
105- assert "YOLO MODE" in warning_model ["model" ]
106- assert "READ-ONLY" in warning_model ["name" ]
107- assert warning_model ["operations" ]["read" ] is True
108- assert warning_model ["operations" ]["write" ] is False
109- assert warning_model ["operations" ]["create" ] is False
110- assert warning_model ["operations" ]["unlink" ] is False
111-
112- # Check actual models don't have operations field (only in warning model)
113- for model in models [1 :]:
116+ assert len (models ) == 3 # Should match mock data
117+ for model in models :
114118 assert "operations" not in model
115119 assert "model" in model
116120 assert "name" in model
@@ -135,20 +139,25 @@ async def test_list_models_yolo_full_mode(
135139 result = await handler ._handle_list_models_tool ()
136140
137141 # Check result structure
142+ assert "yolo_mode" in result
138143 assert "models" in result
144+ assert "total" in result
145+
146+ # Check YOLO mode metadata
147+ yolo_meta = result ["yolo_mode" ]
148+ assert yolo_meta ["enabled" ] is True
149+ assert yolo_meta ["level" ] == "true"
150+ assert "FULL ACCESS" in yolo_meta ["description" ]
151+ assert "🚨" in yolo_meta ["warning" ]
152+ assert yolo_meta ["operations" ]["read" ] is True
153+ assert yolo_meta ["operations" ]["write" ] is True
154+ assert yolo_meta ["operations" ]["create" ] is True
155+ assert yolo_meta ["operations" ]["unlink" ] is True
156+
157+ # Check actual models are clean (no operations field)
139158 models = result ["models" ]
140-
141- # Check for YOLO warning as first model
142- warning_model = models [0 ]
143- assert "YOLO MODE" in warning_model ["model" ]
144- assert "FULL ACCESS" in warning_model ["name" ]
145- assert warning_model ["operations" ]["read" ] is True
146- assert warning_model ["operations" ]["write" ] is True
147- assert warning_model ["operations" ]["create" ] is True
148- assert warning_model ["operations" ]["unlink" ] is True
149-
150- # Check actual models don't have operations field (only in warning model)
151- for model in models [1 :]:
159+ assert len (models ) == 2 # Should match mock data
160+ for model in models :
152161 assert "operations" not in model
153162 assert "model" in model
154163 assert "name" in model
@@ -214,16 +223,23 @@ async def test_list_models_yolo_error_handling(
214223 # Call the method
215224 result = await handler ._handle_list_models_tool ()
216225
217- # Check error response
226+ # Check error response structure
227+ assert "yolo_mode" in result
218228 assert "models" in result
219- models = result ["models" ]
220- assert len (models ) == 1
229+ assert "error" in result
230+
231+ # Check YOLO mode metadata in error case
232+ yolo_meta = result ["yolo_mode" ]
233+ assert yolo_meta ["enabled" ] is True
234+ assert yolo_meta ["level" ] == "read"
235+ assert "Error querying models" in yolo_meta ["warning" ]
236+ assert yolo_meta ["operations" ]["read" ] is False
237+ assert yolo_meta ["operations" ]["write" ] is False
221238
222- error_model = models [0 ]
223- assert "ERROR" in error_model ["model" ]
224- assert "Failed to query models" in error_model ["name" ]
225- assert error_model ["operations" ]["read" ] is False
226- assert error_model ["operations" ]["write" ] is False
239+ # Models should be empty on error
240+ assert result ["models" ] == []
241+ assert result ["total" ] == 0
242+ assert "Database connection failed" in result ["error" ]
227243
228244 @pytest .mark .asyncio
229245 async def test_list_models_yolo_domain_construction (
@@ -272,7 +288,7 @@ async def test_list_models_yolo_includes_common_system_models(
272288
273289 # Check that system models are included
274290 models = result ["models" ]
275- model_names = [m ["model" ] for m in models [ 1 :]] # Skip warning model
291+ model_names = [m ["model" ] for m in models ]
276292 assert "ir.attachment" in model_names
277293 assert "ir.model" in model_names
278294
0 commit comments