fix: persist return forecast tail references
This commit is contained in:
+24
@@ -1,6 +1,7 @@
|
||||
package com.baiyue.lastleg.returnreceipt.service;
|
||||
|
||||
import com.baiyue.lastleg.mapper.LastlegOrderMapper;
|
||||
import com.baiyue.lastleg.entity.LastlegOrder;
|
||||
import com.baiyue.lastleg.pda.security.PdaWarehouseIdentity;
|
||||
import com.baiyue.lastleg.returnreceipt.dto.PdaReturnReceiptRequests;
|
||||
import com.baiyue.lastleg.returnreceipt.entity.ReturnInventoryCarton;
|
||||
@@ -25,6 +26,7 @@ import org.springframework.test.util.ReflectionTestUtils;
|
||||
import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
@@ -85,6 +87,28 @@ class ReturnReceiptServiceTest {
|
||||
assertEquals(2, result.expectedItems().get(0).receivedQuantity());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createForecastPersistsCompleteTailOrderSourceAndReturnsItsBusinessNumber() {
|
||||
AtomicReference<ReturnOrder> saved = new AtomicReference<>();
|
||||
when(orders.findKey("customer-1", "create-key")).thenReturn(null);
|
||||
when(numbers.next(eq("RETURN"), eq("10"), anyLong())).thenReturn("RT-1");
|
||||
when(numbers.next(eq("RETURN_RELABEL"), eq("10"), anyLong())).thenReturn("RETU-1");
|
||||
when(orders.insert(any(ReturnOrder.class))).thenAnswer(invocation -> { saved.set(invocation.getArgument(0)); return 1; });
|
||||
when(orders.findNo("customer-1", "RT-1")).thenAnswer(invocation -> saved.get());
|
||||
when(orderItems.listOrder(anyLong())).thenReturn(List.of());
|
||||
|
||||
var result = service.create("customer-1", "merchant-1", new com.baiyue.lastleg.returnreceipt.dto.ReturnOrderRequests.Create(
|
||||
"10", "测试仓", "0000000000", "REF-1", false, "测试", "create-key",
|
||||
List.of(new com.baiyue.lastleg.returnreceipt.dto.ReturnOrderRequests.Item("SKU-A", "商品A", 2))));
|
||||
|
||||
ArgumentCaptor<LastlegOrder> tail = ArgumentCaptor.forClass(LastlegOrder.class);
|
||||
verify(lastlegOrders).insert(tail.capture());
|
||||
assertEquals("RT-1", tail.getValue().getSourceInboundId());
|
||||
assertEquals("RETURN_ORDER:RT-1", tail.getValue().getSourceEventId());
|
||||
assertEquals(saved.get().getRequestHash(), tail.getValue().getSourcePayloadHash());
|
||||
assertEquals("RETU-1", result.order().lastlegOrderNo());
|
||||
}
|
||||
|
||||
@Test
|
||||
void skuLookupReturnsOnlyActiveCandidatesFromTheBoundWarehouse() {
|
||||
ReturnOrder order = order("RT-1", "10", ReturnReceiptService.PENDING_RECEIPT, 5, 1);
|
||||
|
||||
Reference in New Issue
Block a user