|
@@ -31,7 +31,7 @@ public class CodegenEngineTest extends BaseMockitoUnitTest {
|
|
|
|
|
|
@Spy
|
|
|
private CodegenProperties codegenProperties = new CodegenProperties()
|
|
|
- .setBasePackage("cn.iocoder.yudao.module");
|
|
|
+ .setBasePackage("cn.iocoder.yudao");
|
|
|
|
|
|
@BeforeEach
|
|
|
public void setUp() {
|
|
@@ -45,7 +45,7 @@ public class CodegenEngineTest extends BaseMockitoUnitTest {
|
|
|
.setTableName("system_user").setTableComment("用户表")
|
|
|
.setModuleName("system").setBusinessName("user").setClassName("SystemUser")
|
|
|
.setClassComment("用户").setAuthor("芋道源码")
|
|
|
- .setTemplateType(CodegenTemplateTypeEnum.CRUD.getType())
|
|
|
+ .setTemplateType(CodegenTemplateTypeEnum.ONE.getType())
|
|
|
.setFrontType(CodegenFrontTypeEnum.VUE3.getType())
|
|
|
.setParentMenuId(10L);
|
|
|
CodegenColumnDO idColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name())
|
|
@@ -125,32 +125,32 @@ public class CodegenEngineTest extends BaseMockitoUnitTest {
|
|
|
for (String vo : new String[]{"SystemUserBaseVO", "SystemUserCreateReqVO", "SystemUserUpdateReqVO", "SystemUserRespVO",
|
|
|
"SystemUserPageReqVO", "SystemUserExportReqVO", "SystemUserExcelVO"}) {
|
|
|
assertPathContentEquals("vue3_crud/java/" + vo,
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/controller/admin/user/vo/" + vo + ".java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/" + vo + ".java");
|
|
|
}
|
|
|
// 断言 controller 类
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserController",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/controller/admin/user/SystemUserController.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/SystemUserController.java");
|
|
|
// 断言 service 类
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserService",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserService.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/SystemUserService.java");
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserServiceImpl",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserServiceImpl.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/SystemUserServiceImpl.java");
|
|
|
// 断言 convert 类
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserConvert",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/convert/user/SystemUserConvert.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/user/SystemUserConvert.java");
|
|
|
// 断言 enums 类
|
|
|
assertPathContentEquals("vue3_crud/java/ErrorCodeConstants",
|
|
|
- result, "yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/module/system/enums/ErrorCodeConstants_手动操作.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants_手动操作.java");
|
|
|
// 断言 dal 类
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserDO",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/dal/dataobject/user/SystemUserDO.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/SystemUserDO.java");
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserMapper",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/dal/mysql/user/SystemUserMapper.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/SystemUserMapper.java");
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserMapper_xml",
|
|
|
result, "yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/SystemUserMapper.xml");
|
|
|
// 断言 test 类
|
|
|
assertPathContentEquals("vue3_crud/java/SystemUserServiceImplTest",
|
|
|
- result, "yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserServiceImplTest.java");
|
|
|
+ result, "yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/SystemUserServiceImplTest.java");
|
|
|
// 断言 sql 语句
|
|
|
assertPathContentEquals("vue3_crud/sql/h2",
|
|
|
result, "sql/h2.sql");
|
|
@@ -170,73 +170,116 @@ public class CodegenEngineTest extends BaseMockitoUnitTest {
|
|
|
// 准备请求参数
|
|
|
// 主表
|
|
|
CodegenTableDO table = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene())
|
|
|
- .setTableName("system_user").setTableComment("用户表")
|
|
|
- .setModuleName("system").setBusinessName("user").setClassName("SystemUser")
|
|
|
- .setClassComment("用户").setAuthor("芋道源码")
|
|
|
- .setTemplateType(CodegenTemplateTypeEnum.MASTER_SUB.getType()).setSubColumnId(100L)
|
|
|
- .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
|
|
|
- .setParentMenuId(10L);
|
|
|
+ .setTableName("infra_demo_student").setTableComment("学生表")
|
|
|
+ .setModuleName("infra").setBusinessName("demo02").setClassName("InfraDemoStudent")
|
|
|
+ .setClassComment("学生").setAuthor("芋道源码")
|
|
|
+ .setTemplateType(CodegenTemplateTypeEnum.MASTER.getType())
|
|
|
+ .setFrontType(CodegenFrontTypeEnum.VUE3.getType());
|
|
|
CodegenColumnDO idColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name())
|
|
|
.setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true)
|
|
|
.setOrdinalPosition(1).setJavaType("Long").setJavaField("id").setExample("1024")
|
|
|
.setCreateOperation(false).setUpdateOperation(true).setListOperation(false)
|
|
|
.setListOperationResult(true);
|
|
|
+
|
|
|
List<CodegenColumnDO> columns = Collections.singletonList(idColumn);
|
|
|
- // 子表
|
|
|
- CodegenTableDO subTable = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene())
|
|
|
- .setTableName("system_user_contact").setTableComment("用户联系人表")
|
|
|
- .setModuleName("system").setBusinessName("user").setClassName("SystemUserContact")
|
|
|
- .setClassComment("用户联系人").setAuthor("芋道源码")
|
|
|
- .setTemplateType(CodegenTemplateTypeEnum.CRUD.getType())
|
|
|
- .setFrontType(CodegenFrontTypeEnum.VUE3.getType());
|
|
|
- CodegenColumnDO subIdColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name())
|
|
|
+ // 子表(联系人)
|
|
|
+ CodegenTableDO contactTable = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene())
|
|
|
+ .setTableName("infra_demo_student_contact").setTableComment("学生联系人表")
|
|
|
+ .setModuleName("infra").setBusinessName("demo02").setClassName("InfraDemoStudentContact")
|
|
|
+ .setClassComment("学生联系人").setAuthor("芋道源码")
|
|
|
+ .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
|
|
|
+ .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
|
|
|
+ .setSubJoinColumnId(100L).setSubJoinMany(true);
|
|
|
+ CodegenColumnDO contactIdColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name())
|
|
|
.setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true)
|
|
|
.setOrdinalPosition(1).setJavaType("Long").setJavaField("id").setExample("1024")
|
|
|
.setCreateOperation(false).setUpdateOperation(true).setListOperation(false)
|
|
|
.setListOperationResult(true);
|
|
|
- CodegenColumnDO userIdColumn = new CodegenColumnDO().setColumnName("user_id").setDataType(JdbcType.BIGINT.name())
|
|
|
- .setColumnComment("用户编号").setNullable(false).setPrimaryKey(false)
|
|
|
- .setOrdinalPosition(2).setJavaType("Long").setJavaField("userId").setExample("2048")
|
|
|
+ CodegenColumnDO contactStudentIdColumn = new CodegenColumnDO().setColumnName("student_id").setDataType(JdbcType.BIGINT.name())
|
|
|
+ .setColumnComment("学生编号").setNullable(false).setPrimaryKey(false)
|
|
|
+ .setOrdinalPosition(2).setJavaType("Long").setJavaField("studentId").setExample("2048")
|
|
|
.setCreateOperation(false).setUpdateOperation(true).setListOperation(false)
|
|
|
.setListOperationResult(true)
|
|
|
.setId(100L);
|
|
|
- List<CodegenColumnDO> subColumns = Arrays.asList(subIdColumn, userIdColumn);
|
|
|
+ CodegenColumnDO contactNameColumn = new CodegenColumnDO().setColumnName("name").setDataType(JdbcType.VARCHAR.name())
|
|
|
+ .setColumnComment("名字").setNullable(false).setPrimaryKey(false)
|
|
|
+ .setOrdinalPosition(3).setJavaType("String").setJavaField("name").setExample("芋头")
|
|
|
+ .setCreateOperation(true).setUpdateOperation(true).setListOperation(true)
|
|
|
+ .setListOperationCondition(CodegenColumnListConditionEnum.LIKE.getCondition()).setListOperationResult(true)
|
|
|
+ .setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType());
|
|
|
+ List<CodegenColumnDO> contactColumns = Arrays.asList(contactIdColumn, contactStudentIdColumn, contactNameColumn);
|
|
|
+ // 子表(地址)
|
|
|
+ CodegenTableDO addressTable = new CodegenTableDO().setScene(CodegenSceneEnum.ADMIN.getScene())
|
|
|
+ .setTableName("infra_demo_student_address").setTableComment("学生地址表")
|
|
|
+ .setModuleName("infra").setBusinessName("demo02").setClassName("InfraDemoStudentAddress")
|
|
|
+ .setClassComment("学生地址").setAuthor("芋道源码")
|
|
|
+ .setTemplateType(CodegenTemplateTypeEnum.SUB.getType())
|
|
|
+ .setFrontType(CodegenFrontTypeEnum.VUE3.getType())
|
|
|
+ .setSubJoinColumnId(200L).setSubJoinMany(false);
|
|
|
+ CodegenColumnDO addressIdColumn = new CodegenColumnDO().setColumnName("id").setDataType(JdbcType.BIGINT.name())
|
|
|
+ .setColumnComment("编号").setNullable(false).setPrimaryKey(true).setAutoIncrement(true)
|
|
|
+ .setOrdinalPosition(1).setJavaType("Long").setJavaField("id").setExample("1024")
|
|
|
+ .setCreateOperation(false).setUpdateOperation(true).setListOperation(false)
|
|
|
+ .setListOperationResult(true);
|
|
|
+ CodegenColumnDO addressStudentColumn = new CodegenColumnDO().setColumnName("student_id").setDataType(JdbcType.BIGINT.name())
|
|
|
+ .setColumnComment("学生编号").setNullable(false).setPrimaryKey(false)
|
|
|
+ .setOrdinalPosition(2).setJavaType("Long").setJavaField("studentId").setExample("2048")
|
|
|
+ .setCreateOperation(false).setUpdateOperation(true).setListOperation(false)
|
|
|
+ .setListOperationResult(true)
|
|
|
+ .setId(200L);
|
|
|
+ CodegenColumnDO addressDetailColumn = new CodegenColumnDO().setColumnName("detail").setDataType(JdbcType.VARCHAR.name())
|
|
|
+ .setColumnComment("明细").setNullable(false).setPrimaryKey(false)
|
|
|
+ .setOrdinalPosition(3).setJavaType("String").setJavaField("detail").setExample("码头路 88 号")
|
|
|
+ .setCreateOperation(true).setUpdateOperation(true).setListOperation(true)
|
|
|
+ .setListOperationCondition(CodegenColumnListConditionEnum.LIKE.getCondition()).setListOperationResult(true)
|
|
|
+ .setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType());
|
|
|
+ List<CodegenColumnDO> addressColumns = Arrays.asList(addressIdColumn, addressStudentColumn, addressDetailColumn);
|
|
|
|
|
|
// 调用
|
|
|
- Map<String, String> result = codegenEngine.execute(table, columns, subTable, subColumns);
|
|
|
+ Map<String, String> result = codegenEngine.execute(table, columns,
|
|
|
+ Arrays.asList(contactTable, addressTable), Arrays.asList(contactColumns, addressColumns));
|
|
|
|
|
|
// 断言
|
|
|
- assertEquals(23, result.size());
|
|
|
+ assertEquals(25, result.size());
|
|
|
+
|
|
|
+ for (Map.Entry<String, String> entry : result.entrySet()) {
|
|
|
+ System.out.println(entry.getKey());
|
|
|
+ System.out.println(entry.getValue());
|
|
|
+ System.out.println("");
|
|
|
+ System.out.println("");
|
|
|
+ System.out.println("");
|
|
|
+ }
|
|
|
+
|
|
|
// // 断言 vo 类
|
|
|
// for (String vo : new String[]{"SystemUserBaseVO", "SystemUserCreateReqVO", "SystemUserUpdateReqVO", "SystemUserRespVO",
|
|
|
// "SystemUserPageReqVO", "SystemUserExportReqVO", "SystemUserExcelVO"}) {
|
|
|
// assertPathContentEquals("vue3_crud/java/" + vo,
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/controller/admin/user/vo/" + vo + ".java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/vo/" + vo + ".java");
|
|
|
// }
|
|
|
// // 断言 controller 类
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserController",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/controller/admin/user/SystemUserController.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/SystemUserController.java");
|
|
|
// // 断言 service 类
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserService",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserService.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/SystemUserService.java");
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserServiceImpl",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserServiceImpl.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/SystemUserServiceImpl.java");
|
|
|
// // 断言 convert 类
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserConvert",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/convert/user/SystemUserConvert.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/user/SystemUserConvert.java");
|
|
|
// // 断言 enums 类
|
|
|
// assertPathContentEquals("vue3_crud/java/ErrorCodeConstants",
|
|
|
-// result, "yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/module/system/enums/ErrorCodeConstants_手动操作.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants_手动操作.java");
|
|
|
// // 断言 dal 类
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserDO",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/dal/dataobject/user/SystemUserDO.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/user/SystemUserDO.java");
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserMapper",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/module/system/dal/mysql/user/SystemUserMapper.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/user/SystemUserMapper.java");
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserMapper_xml",
|
|
|
// result, "yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/SystemUserMapper.xml");
|
|
|
// // 断言 test 类
|
|
|
// assertPathContentEquals("vue3_crud/java/SystemUserServiceImplTest",
|
|
|
-// result, "yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/module/system/service/user/SystemUserServiceImplTest.java");
|
|
|
+// result, "yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/user/SystemUserServiceImplTest.java");
|
|
|
// // 断言 sql 语句
|
|
|
// assertPathContentEquals("vue3_crud/sql/h2",
|
|
|
// result, "sql/h2.sql");
|