优化
This commit is contained in:
+51
-1
@@ -14,6 +14,8 @@ import com.baiyue.lastleg.mapper.LastlegOrderMapper;
|
||||
import com.baiyue.lastleg.mapper.LastlegOrderStatusHistoryMapper;
|
||||
import com.baiyue.lastleg.mapper.LastlegOrderFeeMapper;
|
||||
import com.baiyue.lastleg.mapper.LastlegOrderOperationLogMapper;
|
||||
import com.baiyue.lastleg.mapper.ReceivingWarehouseOperationMapper;
|
||||
import com.baiyue.lastleg.inboundplan.pda.gateway.WarehouseResourceGateway;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
@@ -38,6 +40,7 @@ import static org.mockito.ArgumentMatchers.isNull;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyNoInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.Mockito.lenient;
|
||||
|
||||
@@ -53,6 +56,8 @@ class LastlegOrderServiceTest {
|
||||
@Mock FbaWarehouseValidator fbaWarehouses;
|
||||
@Mock InventoryCommandService inventory;
|
||||
@Mock InboundOrderDetainedOutboxService detainedOutbox;
|
||||
@Mock ReceivingWarehouseOperationMapper receivingWarehouseOperations;
|
||||
@Mock WarehouseResourceGateway warehouseResourceGateway;
|
||||
LastlegOrderService service;
|
||||
|
||||
@BeforeEach
|
||||
@@ -71,6 +76,50 @@ class LastlegOrderServiceTest {
|
||||
"US", "CA"));
|
||||
ReflectionTestUtils.setField(service, "inventory", inventory);
|
||||
ReflectionTestUtils.setField(service, "detainedOutbox", detainedOutbox);
|
||||
ReflectionTestUtils.setField(service, "receivingWarehouseOperations", receivingWarehouseOperations);
|
||||
ReflectionTestUtils.setField(service, "warehouseResourceGateway", warehouseResourceGateway);
|
||||
}
|
||||
|
||||
@Test
|
||||
void changesReceivingWarehouseForWholeContainerBeforePdaSession() {
|
||||
LastlegOrder first = order(1L, "100", "PENDING_ASSIGNMENT", null);
|
||||
LastlegOrder second = order(2L, "200", "PENDING_ASSIGNMENT", null);
|
||||
for (LastlegOrder value : List.of(first, second)) {
|
||||
value.setReceivingWarehouseVersion(0); value.setOverseasWarehouseId("193000000000200003");
|
||||
value.setOverseasWarehouseCode("US-LAX-01"); value.setOverseasWarehouseName("洛杉矶仓");
|
||||
}
|
||||
var updated = new ContainerPlanProgressSummary("BOOKING-1", "MSCU6639870", "900",
|
||||
"US-NYC-01", "纽约仓", 1, true, null, 2, 2, 0, 0, 0, 2,
|
||||
null, false, "存在2票尚未生成有效入库计划");
|
||||
when(orders.lockContainerOrders("BOOKING-1")).thenReturn(List.of(first, second));
|
||||
when(warehouseResourceGateway.requireActiveSharedWarehouse(900L)).thenReturn(
|
||||
new WarehouseResourceGateway.WarehouseReference(900L, "US-NYC-01", "纽约仓", "ACTIVE"));
|
||||
when(orders.updateContainerReceivingWarehouse("BOOKING-1", "900", "US-NYC-01", "纽约仓", 0))
|
||||
.thenReturn(2);
|
||||
when(orders.findContainerProgress("BOOKING-1")).thenReturn(updated);
|
||||
|
||||
var result = service.changeReceivingWarehouse("BOOKING-1", "change-1",
|
||||
new LastlegOrderRequests.ChangeReceivingWarehouse(900L, 0, "改派纽约"), "admin");
|
||||
|
||||
assertEquals("US-NYC-01", result.overseasWarehouseCode());
|
||||
verify(orders).updateContainerPlanReceivingWarehouse("BOOKING-1", 900L);
|
||||
verify(receivingWarehouseOperations).insert(any(com.baiyue.lastleg.entity.ReceivingWarehouseOperation.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void permanentlyLocksReceivingWarehouseAfterPdaSessionExists() {
|
||||
LastlegOrder order = order(1L, "100", "PENDING_ASSIGNMENT", null);
|
||||
order.setReceivingWarehouseVersion(0); order.setOverseasWarehouseId("193000000000200003");
|
||||
order.setOverseasWarehouseCode("US-LAX-01"); order.setOverseasWarehouseName("洛杉矶仓");
|
||||
when(orders.lockContainerOrders("BOOKING-1")).thenReturn(List.of(order));
|
||||
when(orders.countReceivingSessions("BOOKING-1")).thenReturn(1L);
|
||||
|
||||
ResponseStatusException error = assertThrows(ResponseStatusException.class, () ->
|
||||
service.changeReceivingWarehouse("BOOKING-1", "change-2",
|
||||
new LastlegOrderRequests.ChangeReceivingWarehouse(900L, 0, null), "admin"));
|
||||
|
||||
assertEquals(409, error.getStatusCode().value());
|
||||
verifyNoInteractions(warehouseResourceGateway);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -283,7 +332,8 @@ class LastlegOrderServiceTest {
|
||||
}
|
||||
|
||||
private static ContainerPlanProgressSummary summary(boolean ready, long pending, String reason) {
|
||||
return new ContainerPlanProgressSummary("BOOKING-1", "MSCU6639870", 15, 15, 0,
|
||||
return new ContainerPlanProgressSummary("BOOKING-1", "MSCU6639870", "193000000000200003",
|
||||
"US-LAX-01", "洛杉矶仓", 0, true, null, 15, 15, 0,
|
||||
15 - pending, 15 - pending, pending, LocalDateTime.of(2026, 10, 3, 9, 0), ready, reason);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user