@@ -29,9 +29,6 @@ def mock_esa_client_none_in_main():
29
29
yield mock_client_none
30
30
31
31
32
- # --- Tests for user_get_info ---
33
-
34
-
35
32
def test_user_get_info_success (mock_esa_client_in_main ):
36
33
"""Test user_get_info MCP tool successfully returns user data."""
37
34
# Arrange
@@ -63,9 +60,6 @@ def test_user_get_info_client_raises_exception(mock_esa_client_in_main):
63
60
user_get_info ()
64
61
65
62
66
- # --- Tests for posts_get_list ---
67
-
68
-
69
63
def test_posts_get_list_success_no_params (mock_esa_client_in_main ):
70
64
"""Test posts_get_list MCP tool successfully returns data with no params."""
71
65
# Arrange
@@ -114,9 +108,6 @@ def test_posts_get_list_client_raises_exception(mock_esa_client_in_main):
114
108
posts_get_list (q = "tool_test" )
115
109
116
110
117
- # --- Tests for posts_get_detail ---
118
-
119
-
120
111
def test_posts_get_detail_success (mock_esa_client_in_main ):
121
112
"""Test posts_get_detail MCP tool successfully returns data for a post."""
122
113
# Arrange
@@ -150,9 +141,6 @@ def test_posts_get_detail_client_raises_exception(mock_esa_client_in_main):
150
141
posts_get_detail (post_number = post_number )
151
142
152
143
153
- # --- Tests for posts_create ---
154
-
155
-
156
144
def test_posts_create_success (mock_esa_client_in_main ):
157
145
"""Test posts_create successfully calls esa_client.create_post and returns data."""
158
146
# Arrange
@@ -164,15 +152,15 @@ def test_posts_create_success(mock_esa_client_in_main):
164
152
message = "Test commit message"
165
153
166
154
expected_payload_to_esa_client = {
167
- "post" : {
168
- "name" : name ,
169
- "body_md" : body_md ,
170
- "tags" : tags ,
171
- "category" : category ,
172
- "wip" : wip ,
173
- "message" : message ,
174
- }
155
+ "name" : name ,
156
+ "body_md" : body_md ,
157
+ "tags" : tags ,
158
+ "category" : category ,
159
+ "wip" : wip ,
160
+ "message" : message ,
175
161
}
162
+ filtered_payload = {k : v for k , v in expected_payload_to_esa_client .items () if v is not None }
163
+
176
164
expected_response_from_tool = {
177
165
"url" : "https://example.esa.io/posts/123" ,
178
166
"name" : name ,
@@ -191,27 +179,23 @@ def test_posts_create_success(mock_esa_client_in_main):
191
179
192
180
# Assert
193
181
assert result == expected_response_from_tool
194
- mock_esa_client_in_main .create_post .assert_called_once_with (payload = expected_payload_to_esa_client )
182
+ mock_esa_client_in_main .create_post .assert_called_once_with (payload = filtered_payload )
195
183
196
184
197
185
def test_posts_create_success_minimal_params (mock_esa_client_in_main ):
198
186
"""Test posts_create with minimal parameters (name, body_md)."""
199
187
# Arrange
200
188
name = "Minimal Test Post"
201
189
body_md = "Minimal body."
202
- # Default values for wip=True, tags=[], category=None, message=None
203
190
expected_payload_to_esa_client = {
204
- "post" : {
205
- "name" : name ,
206
- "body_md" : body_md ,
207
- "tags" : [], # main.py sets tags or []
208
- "wip" : True , # main.py default for wip is True
209
- # category and message will be None, and thus removed by the dict comprehension
210
- }
191
+ "name" : name ,
192
+ "body_md" : body_md ,
193
+ "tags" : [],
194
+ "category" : "" ,
195
+ "wip" : True ,
196
+ "message" : "" ,
211
197
}
212
- # Adjust for category and message being None and thus excluded from payload by the tool
213
- filtered_payload = {k : v for k , v in expected_payload_to_esa_client ["post" ].items () if v is not None }
214
- expected_payload_to_esa_client_after_filtering = {"post" : filtered_payload }
198
+ filtered_payload = {k : v for k , v in expected_payload_to_esa_client .items () if v is not None }
215
199
216
200
expected_response_from_tool = {
217
201
"url" : "https://example.esa.io/posts/124" ,
@@ -224,7 +208,7 @@ def test_posts_create_success_minimal_params(mock_esa_client_in_main):
224
208
225
209
# Assert
226
210
assert result == expected_response_from_tool
227
- mock_esa_client_in_main .create_post .assert_called_once_with (payload = expected_payload_to_esa_client_after_filtering )
211
+ mock_esa_client_in_main .create_post .assert_called_once_with (payload = filtered_payload )
228
212
229
213
230
214
def test_posts_create_client_not_initialized (mock_esa_client_none_in_main ):
@@ -244,9 +228,6 @@ def test_posts_create_client_raises_exception(mock_esa_client_in_main):
244
228
posts_create (name = "Test" , body_md = "Test" )
245
229
246
230
247
- # --- Tests for posts_update ---
248
-
249
-
250
231
def test_posts_update_success (mock_esa_client_in_main ):
251
232
"""Test posts_update successfully calls esa_client.update_post with all params."""
252
233
# Arrange
@@ -259,15 +240,15 @@ def test_posts_update_success(mock_esa_client_in_main):
259
240
message = "Update commit message"
260
241
261
242
expected_payload_to_esa_client = {
262
- "post" : {
263
- "name" : name ,
264
- "body_md" : body_md ,
265
- "tags" : tags ,
266
- "category" : category ,
267
- "wip" : wip ,
268
- "message" : message ,
269
- }
243
+ "name" : name ,
244
+ "body_md" : body_md ,
245
+ "tags" : tags ,
246
+ "category" : category ,
247
+ "wip" : wip ,
248
+ "message" : message ,
270
249
}
250
+ filtered_payload = {k : v for k , v in expected_payload_to_esa_client .items () if v is not None }
251
+
271
252
expected_response_from_tool = {
272
253
"url" : f"https://example.esa.io/posts/{ post_number } " ,
273
254
"name" : name ,
@@ -288,7 +269,7 @@ def test_posts_update_success(mock_esa_client_in_main):
288
269
# Assert
289
270
assert result == expected_response_from_tool
290
271
mock_esa_client_in_main .update_post .assert_called_once_with (
291
- post_number = post_number , payload = expected_payload_to_esa_client
272
+ post_number = post_number , payload = filtered_payload
292
273
)
293
274
294
275
@@ -297,13 +278,10 @@ def test_posts_update_success_partial_params(mock_esa_client_in_main):
297
278
# Arrange
298
279
post_number = 456
299
280
name = "Partially Updated Title"
300
- # Only name is provided for update, other fields are None
301
-
302
281
expected_payload_to_esa_client = {
303
- "post" : {
304
- "name" : name ,
305
- }
282
+ "name" : name ,
306
283
}
284
+ filtered_payload = {k : v for k , v in expected_payload_to_esa_client .items () if v is not None }
307
285
expected_response_from_tool = {
308
286
"url" : f"https://example.esa.io/posts/{ post_number } " ,
309
287
"name" : name ,
@@ -316,7 +294,7 @@ def test_posts_update_success_partial_params(mock_esa_client_in_main):
316
294
# Assert
317
295
assert result == expected_response_from_tool
318
296
mock_esa_client_in_main .update_post .assert_called_once_with (
319
- post_number = post_number , payload = expected_payload_to_esa_client
297
+ post_number = post_number , payload = filtered_payload
320
298
)
321
299
322
300
@@ -353,9 +331,6 @@ def test_posts_update_client_raises_exception(mock_esa_client_in_main):
353
331
posts_update (post_number = post_number , name = "Test Update Fail" )
354
332
355
333
356
- # --- Tests for posts_delete ---
357
-
358
-
359
334
def test_posts_delete_success (mock_esa_client_in_main ):
360
335
"""Test posts_delete successfully calls esa_client.delete_post and returns empty dict."""
361
336
# Arrange
0 commit comments