格式修改
This commit is contained in:
+19
-6
@@ -6,10 +6,15 @@ import com.baiyue.integration.dto.ocr.WeightOcrBatchRequest;
|
||||
import com.baiyue.integration.dto.ocr.WeightOcrImageResult.Status;
|
||||
import com.baiyue.integration.provider.ocr.BaiduMeterClient;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
import org.springframework.util.unit.DataSize;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.Color;
|
||||
@@ -26,9 +31,14 @@ import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@DisplayName("OCR 重量批量识别功能")
|
||||
@SpringJUnitConfig(classes = {WeightOcrBatchService.class, WeightOcrStoragePolicy.class,
|
||||
ImageCropper.class, WeightCandidateSelector.class, WeightOcrBatchServiceTest.TestConfig.class})
|
||||
class WeightOcrBatchServiceTest {
|
||||
@TempDir
|
||||
Path tempDirectory;
|
||||
@MockBean private IntegrationProperties properties;
|
||||
@MockBean private BaiduMeterClient client;
|
||||
@Resource private WeightOcrBatchService service;
|
||||
|
||||
@Test
|
||||
void completesBatchAndWritesArtifactsWithoutCallingRealProvider() throws Exception {
|
||||
@@ -43,15 +53,10 @@ class WeightOcrBatchServiceTest {
|
||||
}
|
||||
ImageIO.write(image, "png", batchInput.resolve("weight.png").toFile());
|
||||
|
||||
IntegrationProperties properties = properties(inputRoot, outputRoot);
|
||||
BaiduMeterClient client = mock(BaiduMeterClient.class);
|
||||
when(properties.baiduOcr()).thenReturn(properties(inputRoot, outputRoot).baiduOcr());
|
||||
when(client.recognize(any())).thenReturn(new BaiduMeterClient.MeterResponse(
|
||||
"{\"words_result\":[]}",
|
||||
List.of(new OcrCandidate("12.35", 0.98, 10, 10, 80, 30))));
|
||||
ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
|
||||
WeightOcrBatchService service = new WeightOcrBatchService(
|
||||
properties, new WeightOcrStoragePolicy(properties), new ImageCropper(), client,
|
||||
new WeightCandidateSelector(), objectMapper);
|
||||
|
||||
var result = service.recognize(new WeightOcrBatchRequest("batch-a", null, null, null, false));
|
||||
|
||||
@@ -72,4 +77,12 @@ class WeightOcrBatchServiceTest {
|
||||
50, Duration.ZERO, 0);
|
||||
return new IntegrationProperties(baidu, null);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class TestConfig {
|
||||
@Bean
|
||||
ObjectMapper objectMapper() {
|
||||
return new ObjectMapper().findAndRegisterModules();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+11
-4
@@ -7,6 +7,9 @@ import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.io.TempDir;
|
||||
import org.springframework.util.unit.DataSize;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
||||
|
||||
import java.net.URI;
|
||||
import java.nio.file.Files;
|
||||
@@ -15,17 +18,21 @@ import java.time.Duration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@DisplayName("OCR 文件存储策略功能")
|
||||
@SpringJUnitConfig(WeightOcrStoragePolicy.class)
|
||||
class WeightOcrStoragePolicyTest {
|
||||
@TempDir
|
||||
Path tempDirectory;
|
||||
@MockBean private IntegrationProperties properties;
|
||||
@Resource private WeightOcrStoragePolicy policy;
|
||||
|
||||
@Test
|
||||
void resolvesDirectoriesInsideConfiguredRoots() throws Exception {
|
||||
Path input = Files.createDirectories(tempDirectory.resolve("input/batch-a"));
|
||||
Path outputRoot = tempDirectory.resolve("output");
|
||||
WeightOcrStoragePolicy policy = new WeightOcrStoragePolicy(properties(input.getParent(), outputRoot));
|
||||
when(properties.baiduOcr()).thenReturn(config(input.getParent(), outputRoot));
|
||||
|
||||
WeightOcrStoragePolicy.BatchPaths paths = policy.resolve("batch-a", null, "batch-id");
|
||||
|
||||
@@ -38,7 +45,7 @@ class WeightOcrStoragePolicyTest {
|
||||
Path inputRoot = Files.createDirectories(tempDirectory.resolve("input"));
|
||||
Path outputRoot = tempDirectory.resolve("output");
|
||||
Path outside = Files.createDirectories(tempDirectory.resolve("outside"));
|
||||
WeightOcrStoragePolicy policy = new WeightOcrStoragePolicy(properties(inputRoot, outputRoot));
|
||||
when(properties.baiduOcr()).thenReturn(config(inputRoot, outputRoot));
|
||||
|
||||
assertThatThrownBy(() -> policy.resolve(outside.toString(), null, "batch-id"))
|
||||
.isInstanceOfSatisfying(BizException.class,
|
||||
@@ -48,12 +55,12 @@ class WeightOcrStoragePolicyTest {
|
||||
exception -> assertThat(exception.getResultCode()).isEqualTo(ResultCode.FORBIDDEN));
|
||||
}
|
||||
|
||||
private IntegrationProperties properties(Path inputRoot, Path outputRoot) {
|
||||
private IntegrationProperties.BaiduOcr config(Path inputRoot, Path outputRoot) {
|
||||
IntegrationProperties.BaiduOcr baidu = new IntegrationProperties.BaiduOcr(
|
||||
true, "key", "secret", URI.create("https://example.com/token"),
|
||||
URI.create("https://example.com/meter"), Duration.ofSeconds(1), Duration.ofSeconds(1),
|
||||
inputRoot, outputRoot, DataSize.ofMegabytes(3), 40_000_000L,
|
||||
50, Duration.ZERO, 0);
|
||||
return new IntegrationProperties(baidu, null);
|
||||
return baidu;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user