|
|
ebab892e93
|
feat: add PATCH /api/admin/orders/{id} for manual tracking entry
- UpdateTrackingRequest DTO: optional trackingId string (nullable —
allows clearing a tracking ID entered incorrectly)
- OrderService.updateTracking(orderId, trackingId): finds order,
sets trackingId via setter, saves entity — @PreUpdate fires to
update the updated_at timestamp automatically
- AdminController.PATCH /api/admin/orders/{id}: admin-only endpoint,
validates request body with @Valid, returns updated AdminOrderResponse
via the existing toAdminResponse() mapper
- AdminControllerTest: 5 new tests —
shouldReturn403WhenPatchingTrackingWithoutAuth,
shouldReturn403WhenPatchingTrackingAsNonAdmin,
shouldUpdateTrackingSuccessfully (verifies response id and trackingId),
shouldClearTrackingWhenNull (removes trackingId),
shouldReturn404WhenOrderNotFoundForTracking
|
2026-05-15 19:58:33 +02:00 |
|
|
|
5df7c97977
|
test: add AdminControllerTest with 10 role-enforcement and validation cases
- GET /api/admin/orders:
- shouldReturn403WhenNotAuthenticated
- shouldReturn403ForNonAdminUser (roles = USER)
- shouldReturnAllOrdersForAdmin (roles = ADMIN, checks all response fields
including email, plate, letterText, status)
- shouldReturnEmptyArrayWhenNoOrders
- PATCH /api/admin/orders/{id}/status:
- shouldReturn403WhenPatchingStatusWithoutAuth
- shouldReturn403WhenPatchingStatusAsNonAdmin
- shouldUpdateOrderStatusSuccessfully (verifies response id matches
path variable, status reflects update)
- shouldReturn400WhenStatusIsInvalid (invalid_status rejected by
@Pattern validator)
- shouldReturn400WhenStatusIsBlank
- shouldReturn404WhenOrderNotFound
- Helper createOrder(UUID orderId, String plate, String email,
OrderStatus) builds domain objects with User relationship for
realistic response mapping
|
2026-05-15 12:15:06 +02:00 |
|