This commit is contained in:
2026-08-07 20:07:30 +08:00
parent c698290106
commit c4b0972dc9
31 changed files with 1089 additions and 204 deletions
@@ -60,6 +60,43 @@ class OrderApplicationServiceStateTest {
&& order.getInboundCode() == null));
}
@Test
void creatingDraftPreservesProductImageDimensionsAndRemark() {
OrderRepository repository = mock(OrderRepository.class);
OrderMasterDataGuard masterData = mock(OrderMasterDataGuard.class);
var cargo = new OrderRequests.Cargo(
"测试蓝牙音箱", "8518210000", "CARTON", 2,
new BigDecimal("24.000"), new BigDecimal("0.1200"),
new BigDecimal("50.00"), new BigDecimal("40.00"), new BigDecimal("30.00"),
new BigDecimal("300.00"), "USD", false, "自动化联调测试,请勿实际出货",
"CODEX-E2E-01", "012345678905", "Bluetooth Speaker", "8518210000", 10, 20,
new BigDecimal("22.000"), new BigDecimal("15.00"), "塑料 / Plastic",
"音频播放 / Audio playback", "CC-E2E-01", "NO LOGO",
new BigDecimal("18.00"), new BigDecimal("8.00"), new BigDecimal("7.00"),
"FBA-E2E-01", "CODEX-E2E-01", 2085686000000000001L);
OrderRequests.SaveRequest source = request();
OrderRequests.SaveRequest request = new OrderRequests.SaveRequest(
source.customerId(), source.customerName(), source.transportMode(), source.tradeTerm(),
source.destinationCountryCode(), source.destinationWarehouseId(), source.destinationWarehouseName(),
source.expectedShipDate(), source.customerRemark(), source.sender(), source.receiver(), List.of(cargo),
source.pickupMethod(), source.receivingWarehouseId(), source.receivingWarehouseName(),
source.channelCode(), source.channelName(), source.carrierId(), source.carrierName(), source.taxMode(),
source.pricingTaxMode(), source.containerMode(), source.customsInspection(), source.destinationType(),
source.amazonWarehouseCode(), source.shipmentId(), source.referenceId());
when(masterData.validate(10001L, request)).thenReturn(snapshots());
when(repository.completeIdempotency(anyLong(), any(), anyLong())).thenReturn(1);
service(repository, mock(OrderEligibilityGuard.class), masterData)
.createDraft(10001L, 2L, request, "preserve-product-fields");
verify(repository).insertCargo(argThat(saved ->
Long.valueOf(2085686000000000001L).equals(saved.getProductImageFileId())
&& new BigDecimal("18.00").equals(saved.getProductLengthCm())
&& new BigDecimal("8.00").equals(saved.getProductWidthCm())
&& new BigDecimal("7.00").equals(saved.getProductHeightCm())
&& "自动化联调测试,请勿实际出货".equals(saved.getCargoRemark())));
}
@Test
void creatingDraftValidatesCurrentPriceBookChannelBeforePersistence() {
OrderRepository repository = mock(OrderRepository.class);