优化提交
This commit is contained in:
+28
-7
@@ -85,6 +85,22 @@ class PdaPalletOperationServiceTest {
|
||||
verifyNoInteractions(mapper);
|
||||
}
|
||||
|
||||
@Test void createsPrintableRelabelPalletForConfirmedApplication() {
|
||||
RelabelApplication application = new RelabelApplication(); application.setRelabelNo("RL-1");
|
||||
application.setStatus("READY_FOR_OUTBOUND"); application.setOverseasWarehouseId("88");
|
||||
when(relabelApplications.findAnyByRelabelNo("RL-1")).thenReturn(application);
|
||||
when(physical.ensureRelabelPallet(88L, "RL-1:new-pallet-1")).thenReturn(
|
||||
new PalletPhysicalGateway.PalletReference(30L, "PAL-NEW-1", 88L, 1030L, "IDLE", null, 0));
|
||||
|
||||
var result = service.createRelabelPallet(identity(),
|
||||
new PalletOperationRequests.NewRelabelPallet("RL-1", "new-pallet-1"));
|
||||
|
||||
assertEquals("PAL-NEW-1", result.palletCode());
|
||||
assertEquals(0, result.palletVersion());
|
||||
assertTrue(result.printableHtml().contains("托盘标签"));
|
||||
assertTrue(result.printableHtml().contains("RL-1"));
|
||||
}
|
||||
|
||||
@Test void localConcurrencyFailureCompensatesEveryAppliedPhysicalTransitionInReverseSafeForm() {
|
||||
var source = new PalletPhysicalGateway.PalletReference(20L, "SOURCE", 88L, 1020L,
|
||||
"OCCUPIED", null, 1);
|
||||
@@ -168,17 +184,14 @@ class PdaPalletOperationServiceTest {
|
||||
verifyNoInteractions(physical);
|
||||
}
|
||||
|
||||
@Test void relabelDisassembleMovesOnlySelectedHeldCarton() {
|
||||
var sourcePallet = new PalletPhysicalGateway.PalletReference(20L, "SOURCE", 88L, 1020L,
|
||||
@Test void relabelDisassembleMovesOnlySelectedHeldCartonWithoutRequiringLocations() {
|
||||
var sourcePallet = new PalletPhysicalGateway.PalletReference(20L, "SOURCE", 88L, null,
|
||||
"OCCUPIED", null, 1);
|
||||
var targetPallet = new PalletPhysicalGateway.PalletReference(10L, "TARGET", 88L, 1010L,
|
||||
var targetPallet = new PalletPhysicalGateway.PalletReference(10L, "TARGET", 88L, null,
|
||||
"IDLE", null, 2);
|
||||
when(physical.resolve("SOURCE")).thenReturn(sourcePallet);
|
||||
when(physical.resolve("TARGET")).thenReturn(targetPallet);
|
||||
when(physical.resolveLocation(eq(88L), anyLong())).thenAnswer(invocation ->
|
||||
new PalletPhysicalGateway.LocationReference(invocation.getArgument(1), "LOC-" + invocation.getArgument(1),
|
||||
"STORAGE", "ACTIVE"));
|
||||
when(physical.apply(eq(88L), any(), anyString(), anyLong(), anyString(), any()))
|
||||
when(physical.apply(eq(88L), any(), anyString(), isNull(), anyString(), any()))
|
||||
.thenAnswer(invocation -> transition(invocation.getArgument(1), invocation.getArgument(2)));
|
||||
|
||||
RelabelApplication application = new RelabelApplication(); application.setId(600L);
|
||||
@@ -219,10 +232,18 @@ class PdaPalletOperationServiceTest {
|
||||
assertEquals(1L, source.getHoldPackages());
|
||||
assertEquals(0L, source.getAvailablePackages());
|
||||
assertNotNull(target.get()); assertEquals(1L, target.get().getHoldPackages());
|
||||
assertNull(target.get().getWarehouseLocationId());
|
||||
assertNull(target.get().getWarehouseLocationCode());
|
||||
verify(physical, never()).resolveLocation(anyLong(), anyLong());
|
||||
verify(relabelPalletMutations).moveSelectedItems(eq(application), anyMap(), argThat(targets ->
|
||||
targets.size() == 1 && targets.get(100L) == target.get()));
|
||||
verify(balances, never()).updateById(any(InventoryBalance.class));
|
||||
assertEquals("RELABEL_PALLET_DISASSEMBLE", operation.get().getOperationType());
|
||||
ArgumentCaptor<InventoryLedger> ledger = ArgumentCaptor.forClass(InventoryLedger.class);
|
||||
verify(ledgers, times(2)).insert(ledger.capture());
|
||||
assertTrue(ledger.getAllValues().stream().allMatch(value -> "换标拆托:split".equals(value.getRemark())));
|
||||
assertTrue(ledger.getAllValues().stream().anyMatch(value -> value.getDeltaPackages() == -1));
|
||||
assertTrue(ledger.getAllValues().stream().anyMatch(value -> value.getDeltaPackages() == 1));
|
||||
}
|
||||
|
||||
@Test void relabelDisassembleReplayDoesNotRevalidateChangedInventoryOrPallets() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user