feat: manage group buy order readiness
This commit is contained in:
@@ -77,6 +77,18 @@ public class GroupBuyController {
|
||||
return ApiResponse.ok(orderService.listByGroupBuy(id));
|
||||
}
|
||||
|
||||
@PutMapping("/api/admin/group-buy-orders/{id}/confirm")
|
||||
@RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN", "MERCHANT"})
|
||||
public ApiResponse<GroupBuyOrderResponse> confirmOrder(@PathVariable Long id) {
|
||||
return ApiResponse.ok(orderService.confirm(id));
|
||||
}
|
||||
|
||||
@PutMapping("/api/admin/group-buy-orders/{id}/ready")
|
||||
@RequireRole({"PLATFORM_ADMIN", "COMMUNITY_ADMIN", "MERCHANT"})
|
||||
public ApiResponse<GroupBuyOrderResponse> markOrderReady(@PathVariable Long id) {
|
||||
return ApiResponse.ok(orderService.markReady(id));
|
||||
}
|
||||
|
||||
@GetMapping("/api/mini/group-buys")
|
||||
public ApiResponse<List<GroupBuyResponse>> listMini() {
|
||||
CurrentUser user = authService.currentUser();
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.linhelp.groupbuy;
|
||||
|
||||
import com.linhelp.common.enums.DeliveryMethod;
|
||||
import com.linhelp.common.enums.GroupBuyOrderStatus;
|
||||
import com.linhelp.common.security.AuthService;
|
||||
import com.linhelp.common.security.CurrentUser;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class GroupBuyControllerTests {
|
||||
@Test
|
||||
void adminCanConfirmAndMarkGroupBuyOrderReady() {
|
||||
GroupBuyService groupBuyService = new GroupBuyService();
|
||||
GroupBuyOrderService orderService = new GroupBuyOrderService(groupBuyService);
|
||||
GroupBuyController controller = new GroupBuyController(groupBuyService, orderService, new StubAuthService());
|
||||
GroupBuyResponse groupBuy = groupBuyService.create(groupBuyRequest());
|
||||
groupBuyService.start(groupBuy.getId());
|
||||
GroupBuyOrderResponse order = orderService.create(1000L, orderRequest(groupBuy.getId()));
|
||||
|
||||
GroupBuyOrderResponse confirmed = controller.confirmOrder(order.getId()).getData();
|
||||
GroupBuyOrderResponse ready = controller.markOrderReady(order.getId()).getData();
|
||||
|
||||
assertThat(confirmed.getStatus()).isEqualTo(GroupBuyOrderStatus.CONFIRMED);
|
||||
assertThat(ready.getStatus()).isEqualTo(GroupBuyOrderStatus.PENDING_DELIVERY);
|
||||
}
|
||||
|
||||
private GroupBuyRequest groupBuyRequest() {
|
||||
GroupBuyRequest request = new GroupBuyRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setTitle("Today eggs");
|
||||
request.setPriceCent(2990);
|
||||
request.setStock(100);
|
||||
request.setStartTime(LocalDateTime.now().minusHours(1));
|
||||
request.setEndTime(LocalDateTime.now().plusDays(1));
|
||||
request.setPickupAddress("North gate");
|
||||
return request;
|
||||
}
|
||||
|
||||
private GroupBuyOrderRequest orderRequest(Long groupBuyId) {
|
||||
GroupBuyOrderRequest request = new GroupBuyOrderRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setGroupBuyId(groupBuyId);
|
||||
request.setAddressId(1L);
|
||||
request.setQuantity(2);
|
||||
request.setDeliveryMethod(DeliveryMethod.IMMEDIATE);
|
||||
return request;
|
||||
}
|
||||
|
||||
private static class StubAuthService extends AuthService {
|
||||
@Override
|
||||
public CurrentUser currentUser() {
|
||||
return new CurrentUser(1L, 1L, 1L, "COMMUNITY_ADMIN");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user