费用提交

This commit is contained in:
2026-10-26 15:35:14 +08:00
parent 17cf05c4e1
commit 3f8a0df433
4 changed files with 35 additions and 5 deletions
@@ -195,6 +195,7 @@ class OverseasProcurementServiceTest {
@Test void exportReviewPersistsDirectionAndCannotReplayWithChangedDirection() {
var order = order(OverseasProcurementService.PENDING_REVIEW,0,0);
order.setProcurementDirection(ProcurementDirection.EXPORT);
when(orders.lockNo("100","HC1")).thenReturn(order);
when(orders.findNo("100","HC1")).thenReturn(order);
when(histories.listOrder("100",1L)).thenReturn(List.of());
@@ -221,7 +222,7 @@ class OverseasProcurementServiceTest {
@Test void pendingReviewCannotReverseDirectionOfAnAlreadyRecordedPurchase() {
var order = order(OverseasProcurementService.PENDING_REVIEW,0,0);
when(orders.lockNo("100","HC1")).thenReturn(order);
when(directionRepository.hasStarted(1L)).thenReturn(true);
assertThrows(ResponseStatusException.class, () -> service.review("100","HC1","7",
new OverseasProcurementRequests.Review(0L,"APPROVE","export-after-purchase","checked",10L,ProcurementDirection.EXPORT)));
verify(warehouseDirectory,never()).required(10L,ProcurementDirection.EXPORT);
@@ -239,4 +240,30 @@ class OverseasProcurementServiceTest {
assertEquals("US, California, test destination",detail.receivingAddress());
assertEquals(OverseasProcurementService.PENDING_REVIEW,detail.summary().status());
}
@Test void rejectionRequiresSpecificNonblankReasonWithoutAWarehouse() {
var order = order(OverseasProcurementService.PENDING_REVIEW,0,0);
when(orders.lockNo("100","HC1")).thenReturn(order);
for (String reason : new String[]{null,""," "}) {
var error = assertThrows(ResponseStatusException.class, () -> service.review("100","HC1","7",
new OverseasProcurementRequests.Review(0L,"REJECT","reject-empty",reason,null)));
assertEquals("请填写拒绝原因",error.getReason());
}
assertEquals(OverseasProcurementService.PENDING_REVIEW,order.getStatus());
when(orders.findNo("100","HC1")).thenReturn(order);
when(histories.listOrder("100",1L)).thenReturn(List.of());
var result=service.review("100","HC1","7",new OverseasProcurementRequests.Review(0L,"REJECT","reject-reason","供应商无法供货",null));
assertEquals(OverseasProcurementService.REJECTED,result.summary().status());
assertEquals("供应商无法供货",result.reviewRemark());
verify(warehouseDirectory,never()).required(10L);
}
@Test void reviewCannotChangeDirectionEvenBeforePurchase() {
var order = order(OverseasProcurementService.PENDING_REVIEW,0,0);
order.setProcurementDirection(ProcurementDirection.EXPORT);
when(orders.lockNo("100","HC1")).thenReturn(order);
var error=assertThrows(ResponseStatusException.class, () -> service.review("100","HC1","7",
new OverseasProcurementRequests.Review(0L,"APPROVE","change-direction","checked",10L,ProcurementDirection.IMPORT)));
assertEquals("审核不能修改采购方向,请按客户下单方向选择采购仓",error.getReason());
assertEquals(ProcurementDirection.EXPORT,order.getProcurementDirection());
}
}