fix(firstleg): make scanned shipment id optional
This commit is contained in:
+2
-1
@@ -57,7 +57,8 @@ class OpenApiInboundMeasurementControllerContractTest {
|
||||
.contains("Nonce")
|
||||
.contains("inboundDetailId")
|
||||
.contains("multipart/form-data")
|
||||
.contains("required: [boxCode, shipment_id, length, width, height, machineNo, picture]")
|
||||
.contains("required: [boxCode, length, width, height, machineNo, picture]")
|
||||
.doesNotContain("required: [boxCode, shipment_id")
|
||||
.contains("shipment_id:")
|
||||
.contains("不改变入库单状态");
|
||||
}
|
||||
|
||||
+9
-8
@@ -22,7 +22,6 @@ import org.springframework.test.util.ReflectionTestUtils;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -33,7 +32,7 @@ import static org.mockito.Mockito.when;
|
||||
|
||||
class MojiaMeasurementOpenApiServiceTest {
|
||||
@Test
|
||||
void shipmentIdIsRequiredAndCamelCaseAliasIsAccepted() throws Exception {
|
||||
void shipmentIdIsOptionalAndCamelCaseAliasIsAccepted() throws Exception {
|
||||
ObjectMapper mapper = new ObjectMapper().findAndRegisterModules();
|
||||
var validator = Validation.buildDefaultValidatorFactory().getValidator();
|
||||
|
||||
@@ -41,12 +40,13 @@ class MojiaMeasurementOpenApiServiceTest {
|
||||
json().replace("\"shipment_id\"", "\"shipmentId\""), UploadRequest.class);
|
||||
UploadRequest missing = mapper.readValue(
|
||||
json().replace("\"shipment_id\":\"FBA19L5KMY2CU000002\",", ""), UploadRequest.class);
|
||||
UploadRequest blank = mapper.readValue(
|
||||
json().replace("FBA19L5KMY2CU000002", ""), UploadRequest.class);
|
||||
|
||||
assertThat(camelCase.shipmentId()).isEqualTo("FBA19L5KMY2CU000002");
|
||||
assertThat(validator.validate(camelCase)).isEmpty();
|
||||
assertThat(validator.validate(missing).stream()
|
||||
.map(violation -> violation.getPropertyPath().toString()).collect(java.util.stream.Collectors.toSet()))
|
||||
.isEqualTo(Set.of("shipmentId"));
|
||||
assertThat(validator.validate(missing)).isEmpty();
|
||||
assertThat(validator.validate(blank)).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -90,15 +90,16 @@ class MojiaMeasurementOpenApiServiceTest {
|
||||
images, receipts);
|
||||
ReflectionTestUtils.setField(service, "internalToken", "internal-token");
|
||||
MeasurementRequestHeaders headers = new MeasurementRequestHeaders("mojia", null, null, null, null);
|
||||
String requestJson = json().replace("\"shipment_id\":\"FBA19L5KMY2CU000002\",", "");
|
||||
when(authenticator.authenticate("POST", MojiaMeasurementOpenApiService.CALLBACK_PATH,
|
||||
headers, json(), false)).thenReturn(new AuthenticatedMeasurementApp("mojia", 10001L, 90001L, Map.of()));
|
||||
headers, requestJson, false)).thenReturn(new AuthenticatedMeasurementApp("mojia", 10001L, 90001L, Map.of()));
|
||||
when(cartons.upsert(eq(10001L), eq(90001L), any()))
|
||||
.thenThrow(new BizException(ResultCode.NOT_FOUND, "箱号不存在或不属于当前客户"));
|
||||
when(images.uploadReceipt(eq("internal-token"), eq(90001L), eq(10001L), any(Long.TYPE), any()))
|
||||
.thenReturn(ApiResponse.success(new MeasurementImageClient.UploadResult(
|
||||
3L, "mojia.jpg", "image/jpeg", 4L, "NOT_REQUIRED", null, null, null, null)));
|
||||
|
||||
UploadResponse result = service.receive(headers, json());
|
||||
UploadResponse result = service.receive(headers, requestJson);
|
||||
|
||||
assertThat(result.accepted()).isTrue();
|
||||
assertThat(result.matched()).isFalse();
|
||||
@@ -108,7 +109,7 @@ class MojiaMeasurementOpenApiServiceTest {
|
||||
ArgumentCaptor.forClass(MojiaMeasurementReceiptEntity.class);
|
||||
verify(receipts).insert(receipt.capture());
|
||||
assertThat(receipt.getValue().getBoxCode()).isEqualTo("RK-001#4-1");
|
||||
assertThat(receipt.getValue().getScannedShipmentId()).isEqualTo("FBA19L5KMY2CU000002");
|
||||
assertThat(receipt.getValue().getScannedShipmentId()).isNull();
|
||||
assertThat(receipt.getValue().getLengthCm()).isEqualByComparingTo("60.1");
|
||||
assertThat(receipt.getValue().getImageFileId()).isEqualTo(3L);
|
||||
assertThat(receipt.getValue().getStatus()).isEqualTo("UNMATCHED");
|
||||
|
||||
Reference in New Issue
Block a user