You've already forked FrameTour-BE
refactor(image): 重构水印处理逻辑以提高可维护性
- 移除 PhotoProcessContext 中的水印相关字段 - 新增 WatermarkConfig 类封装水印配置 - 修改 WatermarkStage 通过构造函数注入配置 - 调整 PrinterServiceImpl 中水印配置的传递方式 - 更新单元测试以适应新的配置注入方式 - 统一从配置对象读取水印参数而非上下文 - 优化日志记录与偏移量计算逻辑
This commit is contained in:
@@ -3,6 +3,7 @@ package com.ycwl.basic.image.pipeline.stages;
|
||||
import com.ycwl.basic.image.pipeline.core.PhotoProcessContext;
|
||||
import com.ycwl.basic.image.pipeline.core.StageResult;
|
||||
import com.ycwl.basic.image.pipeline.enums.ImageType;
|
||||
import com.ycwl.basic.image.watermark.enums.ImageWatermarkOperatorEnum;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
@@ -14,14 +15,18 @@ class WatermarkStageTest {
|
||||
|
||||
@Test
|
||||
void testGetName() {
|
||||
WatermarkStage stage = new WatermarkStage();
|
||||
WatermarkConfig config = WatermarkConfig.builder().build();
|
||||
WatermarkStage stage = new WatermarkStage(config);
|
||||
|
||||
assertEquals("WatermarkStage", stage.getName());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testShouldExecute_NormalPhoto() {
|
||||
WatermarkStage stage = new WatermarkStage();
|
||||
WatermarkConfig config = WatermarkConfig.builder()
|
||||
.watermarkType(ImageWatermarkOperatorEnum.PRINTER_DEFAULT)
|
||||
.build();
|
||||
WatermarkStage stage = new WatermarkStage(config);
|
||||
|
||||
PhotoProcessContext context = PhotoProcessContext.builder()
|
||||
.originalUrl("https://example.com/test.jpg")
|
||||
@@ -34,7 +39,10 @@ class WatermarkStageTest {
|
||||
|
||||
@Test
|
||||
void testShouldExecute_Puzzle_ShouldSkip() {
|
||||
WatermarkStage stage = new WatermarkStage();
|
||||
WatermarkConfig config = WatermarkConfig.builder()
|
||||
.watermarkType(ImageWatermarkOperatorEnum.PRINTER_DEFAULT)
|
||||
.build();
|
||||
WatermarkStage stage = new WatermarkStage(config);
|
||||
|
||||
PhotoProcessContext context = PhotoProcessContext.builder()
|
||||
.originalUrl("https://example.com/puzzle.png")
|
||||
@@ -47,7 +55,10 @@ class WatermarkStageTest {
|
||||
|
||||
@Test
|
||||
void testShouldExecute_MobileUpload_ShouldSkip() {
|
||||
WatermarkStage stage = new WatermarkStage();
|
||||
WatermarkConfig config = WatermarkConfig.builder()
|
||||
.watermarkType(ImageWatermarkOperatorEnum.PRINTER_DEFAULT)
|
||||
.build();
|
||||
WatermarkStage stage = new WatermarkStage(config);
|
||||
|
||||
PhotoProcessContext context = PhotoProcessContext.builder()
|
||||
.originalUrl("https://example.com/mobile.jpg")
|
||||
@@ -60,7 +71,9 @@ class WatermarkStageTest {
|
||||
|
||||
@Test
|
||||
void testExecute_NoWatermarkType_ShouldSkip() {
|
||||
WatermarkStage stage = new WatermarkStage();
|
||||
// 创建没有 watermarkType 的配置
|
||||
WatermarkConfig config = WatermarkConfig.builder().build();
|
||||
WatermarkStage stage = new WatermarkStage(config);
|
||||
|
||||
PhotoProcessContext context = PhotoProcessContext.builder()
|
||||
.originalUrl("https://example.com/test.jpg")
|
||||
|
||||
Reference in New Issue
Block a user