package cn.iocoder.yudao.module.infra.service.codegen.inner; import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenColumnDO; import cn.iocoder.yudao.module.infra.dal.dataobject.codegen.CodegenTableDO; import cn.iocoder.yudao.module.infra.enums.codegen.CodegenFrontTypeEnum; import cn.iocoder.yudao.module.infra.enums.codegen.CodegenTemplateTypeEnum; import com.baomidou.mybatisplus.annotation.DbType; import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; import java.util.Map; /** * {@link CodegenEngine} 的 Vue3 + Vben5 + Element Plus + General 单元测试 * * @author 芋道源码 */ public class CodegenEngineVben5EleGeneralTest extends CodegenEngineAbstractTest { private static final Integer FRONT_TYPE = CodegenFrontTypeEnum.VUE3_VBEN5_EP_GENERAL.getType(); @Test public void testExecute_one() { // 准备参数 CodegenTableDO table = getTable("student") .setFrontType(FRONT_TYPE) .setTemplateType(CodegenTemplateTypeEnum.ONE.getType()); List columns = getColumnList("student"); // 调用 Map result = codegenEngine.execute(DbType.MYSQL, table, columns, null, null); // 断言 assertResult(result, "/vben5_ele_general_one"); } @Test public void testExecute_one_importEnable() { // 开启 import 开关 codegenProperties.setImportEnable(true); codegenEngine.initGlobalBindingMap(); // 准备参数 CodegenTableDO table = getTable("student") .setFrontType(FRONT_TYPE) .setTemplateType(CodegenTemplateTypeEnum.ONE.getType()); List columns = getColumnList("student"); // 调用 Map result = codegenEngine.execute(DbType.MYSQL, table, columns, null, null); // 断言 assertResult(result, "/vben5_ele_general_one_importEnable"); } @Test public void testExecute_tree() { // 准备参数 CodegenTableDO table = getTable("category") .setFrontType(FRONT_TYPE) .setTemplateType(CodegenTemplateTypeEnum.TREE.getType()); List columns = getColumnList("category"); // 调用 Map result = codegenEngine.execute(DbType.MYSQL, table, columns, null, null); // 断言 assertResult(result, "/vben5_ele_general_tree"); } @Test public void testExecute_master_normal() { testExecute_master(CodegenTemplateTypeEnum.MASTER_NORMAL, "/vben5_ele_general_master_normal"); } @Test public void testExecute_master_erp() { testExecute_master(CodegenTemplateTypeEnum.MASTER_ERP, "/vben5_ele_general_master_erp"); } @Test public void testExecute_master_inner() { testExecute_master(CodegenTemplateTypeEnum.MASTER_INNER, "/vben5_ele_general_master_inner"); } private void testExecute_master(CodegenTemplateTypeEnum templateType, String path) { // 准备参数 CodegenTableDO table = getTable("student") .setFrontType(FRONT_TYPE) .setTemplateType(templateType.getType()); List columns = getColumnList("student"); // 准备参数(子表) CodegenTableDO contactTable = getTable("contact") .setTemplateType(CodegenTemplateTypeEnum.SUB.getType()) .setFrontType(FRONT_TYPE) .setSubJoinColumnId(100L).setSubJoinMany(true); List contactColumns = getColumnList("contact"); // 准备参数(班主任) CodegenTableDO teacherTable = getTable("teacher") .setTemplateType(CodegenTemplateTypeEnum.SUB.getType()) .setFrontType(FRONT_TYPE) .setSubJoinColumnId(200L).setSubJoinMany(false); List teacherColumns = getColumnList("teacher"); // 调用 Map result = codegenEngine.execute(DbType.MYSQL, table, columns, Arrays.asList(contactTable, teacherTable), Arrays.asList(contactColumns, teacherColumns)); // 断言 assertResult(result, path); } }