You've already forked FrameTour-BE
refactor(puzzle): 重构元素DTO及新增元素基类
- 将ElementCreateRequest和PuzzleElementDTO中的elementType从Integer改为String - 删除所有类型特定字段,新增config和configMap支持JSON配置 - 新增BaseElement抽象基类定义元素通用行为 - 添加ElementConfig接口和具体实现类ImageConfig、TextConfig - 创建ElementFactory工厂类和ElementRegistrar注册器 - 新增ElementType枚举和ElementValidationException异常类 - 实现ImageElement和TextElement具体元素类 - 添加Position位置信息封装类
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package com.ycwl.basic.puzzle.integration;
|
||||
|
||||
import com.ycwl.basic.puzzle.element.base.BaseElement;
|
||||
import com.ycwl.basic.puzzle.element.base.ElementFactory;
|
||||
import com.ycwl.basic.puzzle.element.enums.ElementType;
|
||||
import com.ycwl.basic.puzzle.element.impl.ImageElement;
|
||||
import com.ycwl.basic.puzzle.element.impl.TextElement;
|
||||
import com.ycwl.basic.puzzle.entity.PuzzleElementEntity;
|
||||
import com.ycwl.basic.puzzle.test.PuzzleTestDataBuilder;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Element 调试测试
|
||||
* 用于验证 Element 创建和配置是否正确
|
||||
*/
|
||||
class ElementDebugTest {
|
||||
|
||||
@BeforeAll
|
||||
static void registerElements() {
|
||||
ElementFactory.register(ElementType.TEXT, TextElement.class);
|
||||
ElementFactory.register(ElementType.IMAGE, ImageElement.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCreateTextElement() {
|
||||
System.out.println("=== 测试创建 TEXT 元素 ===");
|
||||
|
||||
PuzzleElementEntity entity = PuzzleTestDataBuilder.createTextElement(
|
||||
1L, "testText", 100, 200, 300, 50, 10,
|
||||
"测试文字", 24, "#333333"
|
||||
);
|
||||
|
||||
System.out.println("Entity elementType: " + entity.getElementType());
|
||||
System.out.println("Entity config: " + entity.getConfig());
|
||||
|
||||
try {
|
||||
BaseElement element = ElementFactory.create(entity);
|
||||
System.out.println("✅ Element 创建成功");
|
||||
System.out.println("Element type: " + element.getElementType());
|
||||
System.out.println("Element key: " + element.getElementKey());
|
||||
assertNotNull(element);
|
||||
} catch (Exception e) {
|
||||
System.err.println("❌ Element 创建失败: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
fail("Element 创建失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCreateImageElement() {
|
||||
System.out.println("\n=== 测试创建 IMAGE 元素 ===");
|
||||
|
||||
PuzzleElementEntity entity = PuzzleTestDataBuilder.createImageElement(
|
||||
1L, "testImage", 50, 100, 100, 100, 5,
|
||||
"https://example.com/test.jpg"
|
||||
);
|
||||
|
||||
System.out.println("Entity elementType: " + entity.getElementType());
|
||||
System.out.println("Entity config: " + entity.getConfig());
|
||||
|
||||
try {
|
||||
BaseElement element = ElementFactory.create(entity);
|
||||
System.out.println("✅ Element 创建成功");
|
||||
System.out.println("Element type: " + element.getElementType());
|
||||
System.out.println("Element key: " + element.getElementKey());
|
||||
assertNotNull(element);
|
||||
} catch (Exception e) {
|
||||
System.err.println("❌ Element 创建失败: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
fail("Element 创建失败");
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testRealScenarioElements() {
|
||||
System.out.println("\n=== 测试现实场景元素创建 ===");
|
||||
|
||||
var elements = PuzzleTestDataBuilder.createRealScenarioElements(1L);
|
||||
System.out.println("元素数量: " + elements.size());
|
||||
|
||||
int successCount = 0;
|
||||
for (PuzzleElementEntity entity : elements) {
|
||||
System.out.println("\n--- 测试元素: " + entity.getElementKey() + " ---");
|
||||
System.out.println("Type: " + entity.getElementType());
|
||||
System.out.println("Config: " + entity.getConfig());
|
||||
|
||||
try {
|
||||
BaseElement element = ElementFactory.create(entity);
|
||||
System.out.println("✅ 创建成功");
|
||||
successCount++;
|
||||
} catch (Exception e) {
|
||||
System.err.println("❌ 创建失败: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("\n总结: " + successCount + "/" + elements.size() + " 个元素创建成功");
|
||||
assertEquals(elements.size(), successCount, "所有元素都应该创建成功");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user