Merge remote-tracking branch 'origin/test' into dev
# Conflicts: # scripts/admin-test-env-modules/phase4-tail-order-controls.mjs
This commit is contained in:
+1
-1
@@ -24,7 +24,7 @@ public final class WarehousePalletBatchRequests {
|
||||
@Positive int sequenceNo,
|
||||
@NotBlank @Size(max = 32) String palletType,
|
||||
@Size(max = 128) String fbaWarehouseCode,
|
||||
@NotBlank @Size(max = 128) String palletCode
|
||||
@Size(max = 128) String palletCode
|
||||
) { }
|
||||
|
||||
public record Confirm(
|
||||
|
||||
+2
-2
@@ -268,8 +268,8 @@ public class WarehousePalletBatchService {
|
||||
if (item.fbaWarehouseCode() != null) {
|
||||
requireMax(item.fbaWarehouseCode().trim(), 128, "FBA warehouse code is too long");
|
||||
}
|
||||
String palletCode = required(item.palletCode(), "Pallet code is required");
|
||||
requireMax(palletCode, 128, "Pallet code is too long");
|
||||
String palletCode = trim(item.palletCode());
|
||||
if (palletCode != null) requireMax(palletCode, 128, "Pallet code is too long");
|
||||
if (!businessKeys.add(businessKey)) throw badRequest("Pallet business key must be unique");
|
||||
if (!sequences.add(item.sequenceNo())) throw badRequest("Pallet sequence must be unique");
|
||||
return new WarehousePalletBatchRequests.Item(item.customerId(), businessKey, inboundPlanNo,
|
||||
|
||||
+22
@@ -91,6 +91,28 @@ class WarehousePalletBatchServiceTest {
|
||||
.containsExactly("container:plan-a:1", "container:plan-b:2");
|
||||
}
|
||||
|
||||
@Test
|
||||
void missingSourcePalletCodeUsesWarehouseGeneratedPhysicalCode() {
|
||||
when(batches.insertIgnore(any())).thenReturn(1);
|
||||
when(resources.createPallet(anyLong(), anyLong(), any())).thenReturn(301L);
|
||||
when(resources.pallet(0L, WAREHOUSE, 301L)).thenReturn(pallet(301L, 401L, "PAL-301"));
|
||||
when(locks.reserve(any())).thenAnswer(call -> {
|
||||
WarehouseResourceLockRequests.ReserveRequest value = call.getArgument(0);
|
||||
return lockResponse(value.customerId(), 501L);
|
||||
});
|
||||
var request = new WarehousePalletBatchRequests.EnsureReserved(WAREHOUSE, "container-generated", List.of(
|
||||
new WarehousePalletBatchRequests.Item(CUSTOMER_A, "container:generated:1", "PLAN-G", 1,
|
||||
"STANDARD", null, null)));
|
||||
|
||||
var response = service.ensureReserved(request);
|
||||
|
||||
ArgumentCaptor<PalletRequests.SaveRequest> saves = ArgumentCaptor.forClass(PalletRequests.SaveRequest.class);
|
||||
verify(resources).createPallet(org.mockito.ArgumentMatchers.eq(WarehouseResourceService.PUBLIC_RESOURCE_SCOPE),
|
||||
org.mockito.ArgumentMatchers.eq(WAREHOUSE), saves.capture());
|
||||
assertThat(saves.getValue().palletCode()).isNull();
|
||||
assertThat(response.items()).extracting(value -> value.palletCode()).containsExactly("PAL-301");
|
||||
}
|
||||
|
||||
@Test
|
||||
void concurrentSameRequestReplaysWinningBatchWithoutCreatingResources() {
|
||||
AtomicReference<WarehousePalletBatchEntity> inserted = new AtomicReference<>();
|
||||
|
||||
Reference in New Issue
Block a user