feat: add group buy secondhand and file storage
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
package com.linhelp.feedback;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class FeedbackServiceTests {
|
||||
@Test
|
||||
void createFeedbackStartsPending() {
|
||||
FeedbackService service = new FeedbackService();
|
||||
FeedbackRequest request = new FeedbackRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setCategory("DELIVERY");
|
||||
request.setContent("配送慢了");
|
||||
request.setContactPhone("13800000000");
|
||||
|
||||
FeedbackResponse response = service.create(100L, request);
|
||||
|
||||
assertThat(response.getUserId()).isEqualTo(100L);
|
||||
assertThat(response.getStatus()).isEqualTo(FeedbackService.STATUS_PENDING);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.linhelp.groupbuy;
|
||||
|
||||
import com.linhelp.common.enums.DeliveryMethod;
|
||||
import com.linhelp.common.enums.GroupBuyOrderStatus;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class GroupBuyServiceTests {
|
||||
@Test
|
||||
void cannotOrderAfterGroupBuyDeadline() {
|
||||
GroupBuyService groupBuyService = new GroupBuyService();
|
||||
GroupBuyOrderService orderService = new GroupBuyOrderService(groupBuyService);
|
||||
GroupBuyResponse groupBuy = groupBuyService.create(groupBuyRequest(LocalDateTime.now().minusMinutes(1)));
|
||||
groupBuyService.start(groupBuy.getId());
|
||||
|
||||
assertThatThrownBy(() -> orderService.create(1L, orderRequest(groupBuy.getId(), DeliveryMethod.IMMEDIATE)))
|
||||
.hasMessageContaining("团购已截单");
|
||||
}
|
||||
|
||||
@Test
|
||||
void groupBuyOrderCanBePreparedForSelfPickup() {
|
||||
GroupBuyService groupBuyService = new GroupBuyService();
|
||||
GroupBuyOrderService orderService = new GroupBuyOrderService(groupBuyService);
|
||||
GroupBuyResponse groupBuy = groupBuyService.create(groupBuyRequest(LocalDateTime.now().plusDays(1)));
|
||||
groupBuyService.start(groupBuy.getId());
|
||||
|
||||
GroupBuyOrderResponse order = orderService.create(1L, orderRequest(groupBuy.getId(), DeliveryMethod.SELF_PICKUP));
|
||||
orderService.confirm(order.getId());
|
||||
orderService.markReady(order.getId());
|
||||
|
||||
assertThat(orderService.detail(order.getId()).getStatus()).isEqualTo(GroupBuyOrderStatus.PENDING_PICKUP);
|
||||
}
|
||||
|
||||
private GroupBuyRequest groupBuyRequest(LocalDateTime endTime) {
|
||||
GroupBuyRequest request = new GroupBuyRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setTitle("今日鸡蛋团购");
|
||||
request.setCoverUrl("https://img.test/egg.jpg");
|
||||
request.setPriceCent(2990);
|
||||
request.setStock(100);
|
||||
request.setStartTime(LocalDateTime.now().minusHours(1));
|
||||
request.setEndTime(endTime);
|
||||
request.setPickupAddress("小区北门");
|
||||
return request;
|
||||
}
|
||||
|
||||
private GroupBuyOrderRequest orderRequest(Long groupBuyId, DeliveryMethod deliveryMethod) {
|
||||
GroupBuyOrderRequest request = new GroupBuyOrderRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setGroupBuyId(groupBuyId);
|
||||
request.setAddressId(1L);
|
||||
request.setQuantity(2);
|
||||
request.setDeliveryMethod(deliveryMethod);
|
||||
return request;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.linhelp.secondhand;
|
||||
|
||||
import com.linhelp.common.enums.SecondGoodsStatus;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class SecondGoodsReviewTests {
|
||||
@Test
|
||||
void newListingStartsPendingAndBecomesVisibleAfterApproval() {
|
||||
SecondGoodsService service = new SecondGoodsService();
|
||||
SecondGoodsResponse listing = service.create(1L, request());
|
||||
|
||||
assertThat(listing.getStatus()).isEqualTo(SecondGoodsStatus.PENDING_REVIEW);
|
||||
assertThat(service.listPublic(1L, null)).isEmpty();
|
||||
|
||||
service.approve(listing.getId());
|
||||
|
||||
assertThat(service.listPublic(1L, null)).extracting(SecondGoodsResponse::getId)
|
||||
.containsExactly(listing.getId());
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectionRequiresReason() {
|
||||
SecondGoodsService service = new SecondGoodsService();
|
||||
SecondGoodsResponse listing = service.create(1L, request());
|
||||
|
||||
assertThatThrownBy(() -> service.reject(listing.getId(), ""))
|
||||
.hasMessageContaining("拒绝原因不能为空");
|
||||
}
|
||||
|
||||
private SecondGoodsRequest request() {
|
||||
SecondGoodsRequest request = new SecondGoodsRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setTitle("九成新儿童车");
|
||||
request.setPriceCent(9900);
|
||||
request.setDescription("小区内自提");
|
||||
request.setCategory("母婴");
|
||||
request.setContactPhone("13800000000");
|
||||
request.setTradeMethod("FACE_TO_FACE");
|
||||
request.setImageUrls(Arrays.asList("https://img.test/bike.jpg"));
|
||||
return request;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.linhelp.storage;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class FileStorageServiceTests {
|
||||
@Test
|
||||
void imageUploadUsesTenantCommunityDatePrefix() {
|
||||
FileStorageService service = new FileStorageService();
|
||||
MockMultipartFile file = new MockMultipartFile("file", "avatar.png", "image/png", new byte[]{1, 2, 3});
|
||||
|
||||
FileUploadResponse response = service.upload(1L, 2L, file);
|
||||
|
||||
assertThat(response.getObjectKey()).startsWith("tenant/1/community/2/");
|
||||
assertThat(response.getObjectKey()).endsWith(".png");
|
||||
assertThat(response.getUrl()).contains(response.getObjectKey());
|
||||
}
|
||||
|
||||
@Test
|
||||
void nonImageUploadIsRejected() {
|
||||
FileStorageService service = new FileStorageService();
|
||||
MockMultipartFile file = new MockMultipartFile("file", "doc.pdf", "application/pdf", new byte[]{1});
|
||||
|
||||
assertThatThrownBy(() -> service.upload(1L, 1L, file))
|
||||
.hasMessageContaining("仅支持图片上传");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user