优化
This commit is contained in:
+32
@@ -72,6 +72,38 @@ class DispatchDeliveryServiceTest {
|
||||
verify(fees,times(3)).publish(any(),any(),any(),any(),isNull(),any(),eq("OP-A"),anyString());
|
||||
}
|
||||
|
||||
/** PDA装车自动生成完整客户目的地,不猜派送计划、不要求人工费用或原费覆盖。 */
|
||||
@Test void loadingAutomaticallyCreatesDocumentsWithoutInventedInputsOrFees() {
|
||||
var pda=new Actor("PDA-1",ActorMode.PDA,"1001");
|
||||
var fact=service.prepareForDeparture(context,pda,"LOADING-1");
|
||||
assertEquals(2,fact.result().outbounds().size());assertEquals(3,fact.result().deliveries().size());
|
||||
assertEquals(4,fact.result().recordVersion());
|
||||
assertTrue(deliveries.stream().allMatch(d->d.getPlannedDeliveryAt()==null && d.getDeliveryMethod()==null
|
||||
&& d.getPickupMethod()==null && d.getLoadingType()==null));
|
||||
assertTrue(outbounds.stream().allMatch(o->o.getFeeCoverageJson()==null));
|
||||
assertTrue(calls.indexOf("SOURCE")>calls.lastIndexOf("DELIVERY"));
|
||||
verify(fees,never()).validate(any(),any(),any(),any());verify(fees,never()).coverage(any(),any(),any(),any());
|
||||
var inputs=org.mockito.ArgumentCaptor.forClass(ArrangeGroup.class);
|
||||
verify(fees,times(3)).publish(eq(context),any(),inputs.capture(),any(),isNull(),any(),eq("PDA-1"),anyString());
|
||||
assertTrue(inputs.getAllValues().stream().allMatch(i->i.fees().isEmpty() && i.feeCoverage().isEmpty()));
|
||||
clearInvocations(fees,repository);
|
||||
assertEquals(fact,service.prepareForDeparture(context,pda,"LOADING-1"));
|
||||
verifyNoInteractions(fees);verify(repository,never()).create(any(OutboundOrder.class));
|
||||
assertThrows(org.springframework.web.server.ResponseStatusException.class,
|
||||
()->service.prepareForDeparture(context,pda,"DIFFERENT-KEY"));
|
||||
}
|
||||
|
||||
/** 自动生成仍拒绝越仓与孤立子单,不为异常半车补造第二套事实。 */
|
||||
@Test void automaticPreparationRejectsWrongWarehouseAndOrphanDocuments() {
|
||||
assertThrows(org.springframework.web.server.ResponseStatusException.class,
|
||||
()->service.prepareForDeparture(context,new Actor("PDA-1",ActorMode.PDA,"OTHER"),"LOADING-1"));
|
||||
verifyNoInteractions(repository,fees);
|
||||
outbounds.add(new OutboundOrder());
|
||||
assertThrows(org.springframework.web.server.ResponseStatusException.class,
|
||||
()->service.prepareForDeparture(context,actor,"LOADING-1"));
|
||||
verifyNoInteractions(fees);
|
||||
}
|
||||
|
||||
/** 同实托的两申请分别冻结原货源,出库引用逐次归属且真实客户目的地与履约订单不被替换。 */
|
||||
@Test void relabelOriginsStayFrozenBehindOutboundAttributionReferences() throws Exception {
|
||||
var first=new SourceOrigin(10001L,201L,301L,401L,701L,"IN-701","CODE-701",null);
|
||||
|
||||
Reference in New Issue
Block a user