@@ -2848,13 +2848,48 @@ async def admin_edit_resource(
2848
2848
>>> original_update_resource = resource_service.update_resource
2849
2849
>>> resource_service.update_resource = AsyncMock()
2850
2850
>>>
2851
+ >>> # Test successful update
2851
2852
>>> async def test_admin_edit_resource():
2852
2853
... response = await admin_edit_resource("test://resource1", mock_request, mock_db, mock_user)
2853
2854
... return isinstance(response, JSONResponse) and response.status_code == 200 and response.body == b'{"message":"Resource update successfully!","success":true}'
2854
2855
>>>
2855
- >>> import asyncio; asyncio.run(test_admin_edit_resource())
2856
+ >>> asyncio.run(test_admin_edit_resource())
2856
2857
True
2857
2858
>>>
2859
+ >>> # Test validation error
2860
+ >>> from pydantic import ValidationError
2861
+ >>> validation_error = ValidationError.from_exception_data("Resource validation error", [
2862
+ ... {"loc": ("name",), "msg": "Field required", "type": "missing"}
2863
+ ... ])
2864
+ >>> resource_service.update_resource = AsyncMock(side_effect=validation_error)
2865
+ >>> async def test_admin_edit_resource_validation():
2866
+ ... response = await admin_edit_resource("test://resource1", mock_request, mock_db, mock_user)
2867
+ ... return isinstance(response, JSONResponse) and response.status_code == 422
2868
+ >>>
2869
+ >>> asyncio.run(test_admin_edit_resource_validation())
2870
+ True
2871
+ >>>
2872
+ >>> # Test integrity error (e.g., duplicate resource)
2873
+ >>> from sqlalchemy.exc import IntegrityError
2874
+ >>> integrity_error = IntegrityError("Duplicate entry", None, None)
2875
+ >>> resource_service.update_resource = AsyncMock(side_effect=integrity_error)
2876
+ >>> async def test_admin_edit_resource_integrity():
2877
+ ... response = await admin_edit_resource("test://resource1", mock_request, mock_db, mock_user)
2878
+ ... return isinstance(response, JSONResponse) and response.status_code == 409
2879
+ >>>
2880
+ >>> asyncio.run(test_admin_edit_resource_integrity())
2881
+ True
2882
+ >>>
2883
+ >>> # Test unknown error
2884
+ >>> resource_service.update_resource = AsyncMock(side_effect=Exception("Unknown error"))
2885
+ >>> async def test_admin_edit_resource_unknown():
2886
+ ... response = await admin_edit_resource("test://resource1", mock_request, mock_db, mock_user)
2887
+ ... return isinstance(response, JSONResponse) and response.status_code == 500 and b'Unknown error' in response.body
2888
+ >>>
2889
+ >>> asyncio.run(test_admin_edit_resource_unknown())
2890
+ True
2891
+ >>>
2892
+ >>> # Reset mock
2858
2893
>>> resource_service.update_resource = original_update_resource
2859
2894
"""
2860
2895
logger .debug (f"User { user } is editing resource URI { uri } " )
0 commit comments