From 27e58d36d08ee456e68ec86f2f081486f30d9a7e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 20 Nov 2025 23:10:27 +0800 Subject: [PATCH] =?UTF-8?q?test(puzzle):=20=E6=9B=B4=E6=96=B0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E7=94=A8=E4=BE=8B=E4=BB=A5=E9=80=82=E9=85=8D=E6=96=B0?= =?UTF-8?q?=E7=9A=84=E6=89=A7=E8=A1=8C=E7=BB=93=E6=9E=9C=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除已弃用的 DeviceCountRangeConditionStrategy 策略注册 - 修改 PuzzleElementFillEngine 执行方法调用方式,使用 getDynamicData 获取动态数据 - 在 PuzzleGenerateServiceImplTest 中引入 FillResult 类型并更新 mock 返回值结构 - 统一调整所有相关测试断言逻辑以匹配新返回的数据格式 --- .../fill/PuzzleElementFillEngineTest.java | 22 +++++++++---------- .../condition/ConditionEvaluatorTest.java | 1 - .../impl/PuzzleGenerateServiceImplTest.java | 3 ++- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/test/java/com/ycwl/basic/puzzle/fill/PuzzleElementFillEngineTest.java b/src/test/java/com/ycwl/basic/puzzle/fill/PuzzleElementFillEngineTest.java index 21f07a95..fddefbb1 100644 --- a/src/test/java/com/ycwl/basic/puzzle/fill/PuzzleElementFillEngineTest.java +++ b/src/test/java/com/ycwl/basic/puzzle/fill/PuzzleElementFillEngineTest.java @@ -70,7 +70,7 @@ class PuzzleElementFillEngineTest { .thenReturn(new ArrayList<>()); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertTrue(result.isEmpty()); @@ -116,7 +116,7 @@ class PuzzleElementFillEngineTest { .thenReturn("https://oss.example.com/img4.jpg"); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertEquals(4, result.size()); @@ -133,7 +133,7 @@ class PuzzleElementFillEngineTest { @Test @DisplayName("缺少faceId时直接返回空结果") void shouldReturnEmptyWhenRequiredIdsMissing() { - Map result = engine.execute(1L, null, 1L); + Map result = engine.execute(1L, null, 1L).getDynamicData(); assertTrue(result.isEmpty()); verifyNoInteractions(ruleMapper, itemMapper, sourceMapper, conditionEvaluator, dataSourceResolver); } @@ -165,7 +165,7 @@ class PuzzleElementFillEngineTest { .thenReturn("https://oss.example.com/valid.png"); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); assertEquals(1, result.size()); assertEquals("https://oss.example.com/valid.png", result.get("avatar")); @@ -207,7 +207,7 @@ class PuzzleElementFillEngineTest { .thenReturn("https://oss.example.com/img.jpg"); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertEquals(1, result.size()); @@ -245,7 +245,7 @@ class PuzzleElementFillEngineTest { when(conditionEvaluator.evaluate(any(), any())).thenReturn(false); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertTrue(result.isEmpty()); @@ -281,7 +281,7 @@ class PuzzleElementFillEngineTest { .thenReturn(null); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertEquals(1, result.size()); @@ -316,7 +316,7 @@ class PuzzleElementFillEngineTest { .thenReturn("https://oss.example.com/default.jpg"); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertEquals(1, result.size()); @@ -343,7 +343,7 @@ class PuzzleElementFillEngineTest { when(itemMapper.listByRuleId(1L)).thenReturn(new ArrayList<>()); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertTrue(result.isEmpty()); @@ -361,7 +361,7 @@ class PuzzleElementFillEngineTest { .thenThrow(new RuntimeException("Database error")); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertTrue(result.isEmpty()); @@ -407,7 +407,7 @@ class PuzzleElementFillEngineTest { .thenReturn("https://oss.example.com/device300.jpg"); // When - Map result = engine.execute(templateId, faceId, scenicId); + Map result = engine.execute(templateId, faceId, scenicId).getDynamicData(); // Then assertEquals(2, result.size()); diff --git a/src/test/java/com/ycwl/basic/puzzle/fill/condition/ConditionEvaluatorTest.java b/src/test/java/com/ycwl/basic/puzzle/fill/condition/ConditionEvaluatorTest.java index b13ee643..d5fe8ca7 100644 --- a/src/test/java/com/ycwl/basic/puzzle/fill/condition/ConditionEvaluatorTest.java +++ b/src/test/java/com/ycwl/basic/puzzle/fill/condition/ConditionEvaluatorTest.java @@ -27,7 +27,6 @@ class ConditionEvaluatorTest { // 注册所有策略 List strategies = Arrays.asList( new DeviceCountConditionStrategy(), - new DeviceCountRangeConditionStrategy(), new DeviceIdMatchConditionStrategy(), new AlwaysConditionStrategy() ); diff --git a/src/test/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImplTest.java b/src/test/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImplTest.java index 7784dc3e..a9048f9d 100644 --- a/src/test/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImplTest.java +++ b/src/test/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImplTest.java @@ -5,6 +5,7 @@ import com.ycwl.basic.puzzle.dto.PuzzleGenerateResponse; import com.ycwl.basic.puzzle.entity.PuzzleElementEntity; import com.ycwl.basic.puzzle.entity.PuzzleGenerationRecordEntity; import com.ycwl.basic.puzzle.entity.PuzzleTemplateEntity; +import com.ycwl.basic.puzzle.fill.FillResult; import com.ycwl.basic.puzzle.fill.PuzzleElementFillEngine; import com.ycwl.basic.puzzle.mapper.PuzzleElementMapper; import com.ycwl.basic.puzzle.mapper.PuzzleGenerationRecordMapper; @@ -75,7 +76,7 @@ class PuzzleGenerateServiceImplTest { when(templateMapper.getByCode("ticket")).thenReturn(template); when(elementMapper.getByTemplateId(template.getId())).thenReturn(List.of(element)); when(fillEngine.execute(eq(template.getId()), eq(88L), anyLong())) - .thenReturn(Map.of("faceImage", "https://images.test/a.png")); + .thenReturn(FillResult.matched("test-rule", Map.of("faceImage", "https://images.test/a.png"), 1)); when(imageRenderer.render(eq(template), anyList(), anyMap())) .thenReturn(new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB)); doAnswer(invocation -> {