@@ -96,21 +96,25 @@ async def test_list_models_yolo_read_mode(
96
96
assert "transient" in str (call_args [0 ][1 ]) # Domain includes transient filter
97
97
98
98
# Check result structure
99
+ assert "yolo_mode" in result
99
100
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)
100
115
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 :
114
118
assert "operations" not in model
115
119
assert "model" in model
116
120
assert "name" in model
@@ -135,20 +139,25 @@ async def test_list_models_yolo_full_mode(
135
139
result = await handler ._handle_list_models_tool ()
136
140
137
141
# Check result structure
142
+ assert "yolo_mode" in result
138
143
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)
139
158
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 :
152
161
assert "operations" not in model
153
162
assert "model" in model
154
163
assert "name" in model
@@ -214,16 +223,23 @@ async def test_list_models_yolo_error_handling(
214
223
# Call the method
215
224
result = await handler ._handle_list_models_tool ()
216
225
217
- # Check error response
226
+ # Check error response structure
227
+ assert "yolo_mode" in result
218
228
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
221
238
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" ]
227
243
228
244
@pytest .mark .asyncio
229
245
async def test_list_models_yolo_domain_construction (
@@ -272,7 +288,7 @@ async def test_list_models_yolo_includes_common_system_models(
272
288
273
289
# Check that system models are included
274
290
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 ]
276
292
assert "ir.attachment" in model_names
277
293
assert "ir.model" in model_names
278
294
0 commit comments