64 lines
2.8 KiB
Java
64 lines
2.8 KiB
Java
package com.baiyue.file.service;
|
|
|
|
import com.baiyue.file.client.WeightOcrClient;
|
|
import com.baiyue.file.entity.FileObjectEntity;
|
|
import com.baiyue.file.mapper.FileObjectMapper;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.springframework.http.MediaType;
|
|
import org.springframework.mock.web.MockMultipartFile;
|
|
|
|
import java.nio.file.Path;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.Mockito.doAnswer;
|
|
import static org.mockito.Mockito.mock;
|
|
import static org.mockito.Mockito.verifyNoInteractions;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
class MeasurementImageServiceEvidenceTest {
|
|
@Test
|
|
void 尺寸测量证据图片落库但不调用重量Ocr() {
|
|
MeasurementImageStorage storage = mock(MeasurementImageStorage.class);
|
|
FileObjectMapper files = mock(FileObjectMapper.class);
|
|
WeightOcrClient ocr = mock(WeightOcrClient.class);
|
|
MeasurementImageService service = new MeasurementImageService(storage, files, ocr, "internal-token");
|
|
var image = new MockMultipartFile("file", "measure.png", MediaType.IMAGE_PNG_VALUE,
|
|
new byte[]{1, 2, 3});
|
|
when(storage.store(11L, 21L, image)).thenReturn(new MeasurementImageStorage.Stored(
|
|
"measurements/11/21/a.png", Path.of("a.png"), MediaType.IMAGE_PNG_VALUE,
|
|
3L, "hash", "measure.png"));
|
|
doAnswer(invocation -> {
|
|
FileObjectEntity object = invocation.getArgument(0);
|
|
object.setId(41L);
|
|
return 1;
|
|
}).when(files).insert(any(FileObjectEntity.class));
|
|
|
|
var result = service.uploadMeasurementEvidence(11L, 21L, 31L, image);
|
|
|
|
assertThat(result.fileId()).isEqualTo(41L);
|
|
assertThat(result.recognitionStatus()).isEqualTo("NOT_REQUIRED");
|
|
verifyNoInteractions(ocr);
|
|
}
|
|
|
|
@Test
|
|
void 尺寸测量证据图片不能通过重试入口触发重量Ocr() {
|
|
MeasurementImageStorage storage = mock(MeasurementImageStorage.class);
|
|
FileObjectMapper files = mock(FileObjectMapper.class);
|
|
WeightOcrClient ocr = mock(WeightOcrClient.class);
|
|
MeasurementImageService service = new MeasurementImageService(storage, files, ocr, "internal-token");
|
|
FileObjectEntity object = new FileObjectEntity();
|
|
object.setId(41L);
|
|
object.setTenantId(11L);
|
|
object.setBusinessType("INBOUND_MEASUREMENT_IMAGE");
|
|
object.setBusinessId("21");
|
|
when(files.selectOne(any())).thenReturn(object);
|
|
|
|
assertThatThrownBy(() -> service.retryRecognition(11L, 21L, 41L))
|
|
.isInstanceOf(com.baiyue.common.core.exception.BizException.class)
|
|
.hasMessageContaining("不执行重量OCR");
|
|
verifyNoInteractions(ocr);
|
|
}
|
|
}
|