|
| 1 | +import uuid |
| 2 | + |
1 | 3 | import django |
2 | 4 | import pytest |
3 | 5 |
|
4 | | -from ninja_extra import api_controller, route |
| 6 | +from ninja_extra import api_controller, http_delete, http_get, route, status |
5 | 7 | from ninja_extra.controllers import AsyncRouteFunction, RouteFunction |
6 | 8 | from ninja_extra.helper import get_route_function |
7 | 9 | from ninja_extra.operation import AsyncOperation, Operation |
@@ -113,3 +115,29 @@ async def test_async_route_operation_execution_should_log_execution(self): |
113 | 115 | client = TestAsyncClient(self.SomeTestController) |
114 | 116 | with pytest.raises(CustomException): |
115 | 117 | await client.get("/example_exception") |
| 118 | + |
| 119 | + |
| 120 | +def test_controller_operation_order(): |
| 121 | + @api_controller("/my/api/users", tags=["User"]) |
| 122 | + class UserAPIController: |
| 123 | + @http_get("/me") |
| 124 | + def get_current_user(self, request): |
| 125 | + return {"debug": "ok", "message": "Current user"} |
| 126 | + |
| 127 | + @http_get("/{user_id}") |
| 128 | + def get_user(self, request, user_id: uuid.UUID): |
| 129 | + return {"debug": "ok", "message": "User"} |
| 130 | + |
| 131 | + @http_delete("/{user_id}", response={status.HTTP_204_NO_CONTENT: None}) |
| 132 | + def delete_user_from_clinic(self, request, user_id: uuid.UUID): |
| 133 | + return {"debug": "ok", "message": "User deleted"} |
| 134 | + |
| 135 | + client = TestClient(UserAPIController) |
| 136 | + response = client.get("/me") |
| 137 | + assert response.json() == {"debug": "ok", "message": "Current user"} |
| 138 | + |
| 139 | + response = client.get(f"/{uuid.uuid4()}") |
| 140 | + assert response.json() == {"debug": "ok", "message": "User"} |
| 141 | + |
| 142 | + response = client.delete(f"/{uuid.uuid4()}") |
| 143 | + assert response.content == b"" |
0 commit comments