feat: add express pickup orders
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package com.linhelp.express;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class ExpressFeeCalculatorTests {
|
||||
@Test
|
||||
void firstPackageCostsThreeYuan() {
|
||||
assertThat(ExpressFeeCalculator.calculateCent(1)).isEqualTo(300);
|
||||
}
|
||||
|
||||
@Test
|
||||
void extraPackagesCostOneYuanEach() {
|
||||
assertThat(ExpressFeeCalculator.calculateCent(3)).isEqualTo(500);
|
||||
}
|
||||
|
||||
@Test
|
||||
void packageCountMustBePositive() {
|
||||
assertThatThrownBy(() -> ExpressFeeCalculator.calculateCent(0))
|
||||
.hasMessageContaining("件数必须大于0");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package com.linhelp.express;
|
||||
|
||||
import com.linhelp.common.enums.ExpressOrderStatus;
|
||||
import com.linhelp.user.AddressRequest;
|
||||
import com.linhelp.user.AddressResponse;
|
||||
import com.linhelp.user.UserAddressService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
class ExpressOrderServiceTests {
|
||||
@Test
|
||||
void confirmedExpressOrderMovesToPendingPickup() {
|
||||
UserAddressService addressService = new UserAddressService();
|
||||
AddressResponse address = addressService.create(1L, addressRequest());
|
||||
ExpressOrderService expressOrderService = new ExpressOrderService(addressService);
|
||||
|
||||
ExpressOrderRequest request = expressRequest(address.getId());
|
||||
request.setPackageCount(3);
|
||||
ExpressOrderResponse order = expressOrderService.create(1L, request);
|
||||
|
||||
assertThat(order.getFeeCent()).isEqualTo(500);
|
||||
|
||||
expressOrderService.confirm(order.getId());
|
||||
|
||||
assertThat(expressOrderService.detail(order.getId()).getStatus()).isEqualTo(ExpressOrderStatus.PENDING_PICKUP);
|
||||
}
|
||||
|
||||
@Test
|
||||
void addressMustBelongToCurrentUser() {
|
||||
UserAddressService addressService = new UserAddressService();
|
||||
AddressResponse otherUserAddress = addressService.create(2L, addressRequest());
|
||||
ExpressOrderService expressOrderService = new ExpressOrderService(addressService);
|
||||
|
||||
assertThatThrownBy(() -> expressOrderService.create(1L, expressRequest(otherUserAddress.getId())))
|
||||
.hasMessageContaining("地址不存在");
|
||||
}
|
||||
|
||||
@Test
|
||||
void feeAdjustmentWritesLog() {
|
||||
UserAddressService addressService = new UserAddressService();
|
||||
AddressResponse address = addressService.create(1L, addressRequest());
|
||||
ExpressOrderService expressOrderService = new ExpressOrderService(addressService);
|
||||
ExpressOrderResponse order = expressOrderService.create(1L, expressRequest(address.getId()));
|
||||
|
||||
expressOrderService.adjustFee(order.getId(), 800, "大件加价");
|
||||
|
||||
ExpressOrderResponse detail = expressOrderService.detail(order.getId());
|
||||
assertThat(detail.getFeeCent()).isEqualTo(800);
|
||||
assertThat(detail.getLogs()).extracting(ExpressOrderLogResponse::getContent)
|
||||
.anyMatch(content -> content.contains("大件加价"));
|
||||
}
|
||||
|
||||
private ExpressOrderRequest expressRequest(Long addressId) {
|
||||
ExpressOrderRequest request = new ExpressOrderRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setExpressCompany("顺丰");
|
||||
request.setPickupCode("A-1234");
|
||||
request.setPickupAddress("北门快递站");
|
||||
request.setReceiverPhone("13800000000");
|
||||
request.setAddressId(addressId);
|
||||
request.setPackageCount(1);
|
||||
return request;
|
||||
}
|
||||
|
||||
private AddressRequest addressRequest() {
|
||||
AddressRequest request = new AddressRequest();
|
||||
request.setTenantId(1L);
|
||||
request.setCommunityId(1L);
|
||||
request.setContactName("张三");
|
||||
request.setPhone("13800000000");
|
||||
request.setBuilding("1栋");
|
||||
request.setRoom("101");
|
||||
request.setDetail("门口");
|
||||
return request;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user