fix(lastleg): snapshot customer name for incoming cargo
This commit is contained in:
+27
@@ -186,10 +186,14 @@ class WarehouseTransferServiceTest {
|
||||
@Mock com.baiyue.lastleg.relabel.service.RelabelApplicationService relabelService;
|
||||
private WarehouseTransferService service;
|
||||
@Mock WarehouseTransferReceiptCoordinator receiptCoordinator;
|
||||
@Mock com.baiyue.lastleg.fleet.customer.FleetCustomerDirectory customerDirectory;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
service = new WarehouseTransferService();
|
||||
ReflectionTestUtils.setField(service, "customerDirectory", customerDirectory);
|
||||
lenient().when(customerDirectory.find("TENANT-A")).thenReturn(
|
||||
new com.baiyue.lastleg.fleet.customer.FleetCustomerDirectory.Customer("TENANT-A", "C-A", "Customer A", null, null));
|
||||
org.springframework.test.util.ReflectionTestUtils.setField(service, "fleetPool", org.mockito.Mockito.mock(com.baiyue.lastleg.fleet.business.FleetPoolOrderBridge.class));
|
||||
org.springframework.test.util.ReflectionTestUtils.setField(service, "fleetPoolQueries", org.mockito.Mockito.mock(com.baiyue.lastleg.fleet.business.FleetPoolOrderQueries.class));
|
||||
ReflectionTestUtils.setField(service, "receiptCoordinator", receiptCoordinator);
|
||||
@@ -386,6 +390,7 @@ class WarehouseTransferServiceTest {
|
||||
ArgumentCaptor<LastlegOrder> tailOrder = ArgumentCaptor.forClass(LastlegOrder.class);
|
||||
verify(orders).insert(tailOrder.capture());
|
||||
assertEquals(WarehouseTransferService.ORDER_TYPE, tailOrder.getValue().getOrderType());
|
||||
assertEquals("Customer A", tailOrder.getValue().getCustomerName());
|
||||
assertEquals(WarehouseTransferService.DRAFT, tailOrder.getValue().getCurrentStatus());
|
||||
assertEquals("WAREHOUSE_TRANSFER:DRAFT;RELABEL:PENDING_BINDING", tailOrder.getValue().getSubOrderStatus());
|
||||
assertTrue(tailOrder.getValue().getOrderNo().matches("WT-[0-9A-Z]{25}"));
|
||||
@@ -534,6 +539,7 @@ class WarehouseTransferServiceTest {
|
||||
verify(transfers).insert(transfer.capture());
|
||||
verify(transferCartons, times(5)).insert(cartons.capture());
|
||||
verify(orders).insert(tailOrder.capture());
|
||||
assertEquals("Customer A", tailOrder.getValue().getCustomerName());
|
||||
verify(sourceOrders, never()).insert(any(WarehouseTransferSourceOrder.class));
|
||||
verify(relabelApplications, never()).insert(any(RelabelApplication.class));
|
||||
|
||||
@@ -547,6 +553,13 @@ class WarehouseTransferServiceTest {
|
||||
.map(WarehouseTransferCarton::getCartonIndex).toList());
|
||||
assertTrue(cartons.getAllValues().stream().allMatch(value -> value.getCartonMark()
|
||||
.matches("WT-[0-9A-Z]{25}#5-[1-5]")));
|
||||
when(transfers.findKey("TENANT-A", request.idempotencyKey())).thenReturn(transfer.getValue());
|
||||
clearInvocations(customerDirectory, orders, inboundOrders);
|
||||
service.create("TENANT-A", "USER-1", request);
|
||||
verifyNoInteractions(customerDirectory, inboundOrders);
|
||||
verify(orders, never()).insert(any(LastlegOrder.class));
|
||||
verify(orders, never()).updateById(any(LastlegOrder.class));
|
||||
assertEquals("Customer A", tailOrder.getValue().getCustomerName());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1089,6 +1102,20 @@ class WarehouseTransferServiceTest {
|
||||
verify(orders, never()).insert(any(LastlegOrder.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void missingOrForeignCustomerNameStopsCreationBeforeAnyBusinessWrites() {
|
||||
for (var customer : List.of(
|
||||
new com.baiyue.lastleg.fleet.customer.FleetCustomerDirectory.Customer("TENANT-A", "C-A", " ", null, null),
|
||||
new com.baiyue.lastleg.fleet.customer.FleetCustomerDirectory.Customer("OTHER", "C-B", "Other customer", null, null))) {
|
||||
when(customerDirectory.find("TENANT-A")).thenReturn(customer);
|
||||
var error = assertThrows(ResponseStatusException.class, () -> service.create("TENANT-A", "USER-1", request(false)));
|
||||
assertEquals(503, error.getStatusCode().value());
|
||||
}
|
||||
verify(orders, never()).insert(any(LastlegOrder.class));
|
||||
verify(inboundOrders, never()).insert(any(LastlegInboundOrder.class));
|
||||
verify(transfers, never()).insert(any(WarehouseTransferOrder.class));
|
||||
}
|
||||
|
||||
private static WarehouseTransferRequests.Create request(boolean needRelabel) {
|
||||
if (!needRelabel) {
|
||||
return new WarehouseTransferRequests.Create(
|
||||
|
||||
Reference in New Issue
Block a user