This commit is contained in:
2026-08-26 17:23:38 +08:00
parent 795e852944
commit 92d7c0a7b0
3 changed files with 20 additions and 4 deletions
@@ -1,6 +1,7 @@
package com.baiyue.lastleg.inboundplan.pda.controller;
import com.baiyue.common.security.AuthenticatedUser;
import com.baiyue.lastleg.inboundplan.pda.dto.ReceivingContainerRequests;
import com.baiyue.lastleg.inboundplan.pda.dto.ReceivingContainerResponses;
import com.baiyue.lastleg.inboundplan.pda.gateway.UnloadPhotoFileGateway;
import com.baiyue.lastleg.inboundplan.pda.service.ReceivingContainerService;
@@ -96,6 +97,19 @@ class ReceivingContainerControllerTest {
.hasMessageContaining("403");
}
@Test
void fbaCartonResolutionDelegatesWithoutControllerModeRejection() {
ReceivingContainerRequests.CartonResolve request =
new ReceivingContainerRequests.CartonResolve("NYEXX2608260002#4-1");
when(service.resolveCarton("42", request)).thenReturn(new ReceivingContainerResponses.CartonResolved(
"NYEXX2608260002#4-1", "IN-1", "FBA", "900", "Shared LAX", null, null, null,
"ABE3", 1, 40, 0, 40));
controller.resolveCarton(picker(), request);
verify(service).resolveCarton("42", request);
}
private static AuthenticatedUser picker() {
return new AuthenticatedUser(42L, 0L, 0L, 8L, "receiver", "PLATFORM", "PDA",
Set.of(PdaWarehouseIdentity.PICKER_ROLE, ReceivingContainerController.OPERATE_PERMISSION),
@@ -406,13 +406,13 @@ class ReceivingContainerServiceBehaviorTest {
}
@Test
void cartonResolutionSupportsFbaWithoutProjectingSku() {
void fbaCartonResolutionForNyexx2608260002DoesNotApplyReceiptModeGate() {
stubCurrent("FBA", "CONT-A");
when(cartons.selectOne(any())).thenReturn(carton(1L, "FBA-BOX-1"));
when(cartons.selectOne(any())).thenReturn(carton(1L, "NYEXX2608260002#4-1"));
var resolved = service.resolveCarton("7", new ReceivingContainerRequests.CartonResolve("FBA-BOX-1"));
var resolved = service.resolveCarton("7", new ReceivingContainerRequests.CartonResolve("NYEXX2608260002#4-1"));
assertThat(resolved.cartonMark()).isEqualTo("FBA-BOX-1");
assertThat(resolved.cartonMark()).isEqualTo("NYEXX2608260002#4-1");
assertThat(resolved.inboundCode()).isEqualTo("IN-1");
assertThat(resolved.destinationType()).isEqualTo("FBA");
}
@@ -1,6 +1,7 @@
const MODULE = 'phase4-overseas-pda'
const SCENARIO = 'phase4-overseas-pda-container-receiving'
const OPTIONS = { scenario: SCENARIO, deploymentBlocker: true }
const OBSERVATION_OPTIONS = { scenario: SCENARIO, deploymentBlocker: false }
const PHOTO_ROLES = ['LICENSE_PLATE', 'CONTAINER_SEAL', 'DOOR_OPEN']
const PNG = Uint8Array.from(Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=', 'base64'))
@@ -12,6 +13,7 @@ function code(response) { return String(response?.body?.code ?? '') }
function traced(response) { return nonBlank(response?.requestId) && nonBlank(response?.traceId) }
function conflict(response) { return (response?.http === 409 || (response?.http === 200 && ['409', 'A0409'].includes(code(response)))) && traced(response) }
function conflictMessage(response, pattern) { return conflict(response) && pattern.test(String(response?.body?.message || '')) }
function a0409Message(response, pattern) { return response?.http === 200 && code(response) === 'A0409' && traced(response) && pattern.test(String(response?.body?.message || '')) }
function notFound(response) { return (response?.http === 404 || (response?.http === 200 && ['404', 'A0404'].includes(code(response)))) && traced(response) }
function forbidden(response) { return [401, 403].includes(response?.http) || (response?.http === 200 && ['A0401', 'A0403'].includes(code(response))) }
function trace(response) { return `HTTP=${response?.http ?? 'missing'}, code=${response?.body?.code ?? 'missing'}, requestId=${response?.requestId || 'missing'}, traceId=${response?.traceId || 'missing'}` }