Browse Source

修改日志配置

lijie 3 years ago
parent
commit
c0e41c7e5b
32 changed files with 2886 additions and 520 deletions
  1. 1 1
      dmp-admin/src/main/resources/application.yml
  2. 3 3
      dmp-admin/src/main/resources/logback-spring.xml
  3. 20 20
      dmp-org/src/main/java/com/persagy/dmp/org/service/InitService.java
  4. 2 2
      dmp-org/src/main/resources/bootstrap.yml
  5. 7 6
      dmp-org/src/main/resources/logback-spring.xml
  6. 2 2
      dmp-rwd-datautils/src/main/resources/application-dev.yml
  7. 2 2
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncid.java
  8. 1 1
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ExcelUtils.java
  9. 2 2
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportClass.java
  10. 2 2
      dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/knowladge/Test1.java
  11. 0 1
      dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/AdminRoleService.java
  12. 1 1
      dmp-rwd-edit/src/main/resources/application.yml
  13. 3 3
      dmp-rwd-edit/src/main/resources/logback-spring.xml
  14. 0 118
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/ClassDefTest.java
  15. 0 132
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/FuncidDefTest.java
  16. 0 77
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RefTypeInfoTest.java
  17. 0 69
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RefTypeTest.java
  18. 0 77
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RwdeditVersionTest.java
  19. 547 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/AdminRoleServiceTest.java
  20. 322 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/AdminUserServiceTest.java
  21. 416 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordServiceTest.java
  22. 52 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/ClassDefServiceTest.java
  23. 39 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/DtDataServiceTest.java
  24. 425 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordServiceTest.java
  25. 61 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/FuncidDefServiceTest.java
  26. 142 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosServiceTest.java
  27. 348 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeServiceTest.java
  28. 277 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditVersionServiceTest.java
  29. 174 0
      dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/UserServiceTest.java
  30. 5 0
      dmp-rwd/pom.xml
  31. 4 1
      dmp-rwd/src/main/resources/bootstrap-dev.yml
  32. 28 0
      pom.xml

+ 1 - 1
dmp-admin/src/main/resources/application.yml

@@ -13,7 +13,7 @@ spring:
     name: dmp-admin
   profiles:
     active:
-    - dev,log-dev
+    - dev
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     url: jdbc:mysql://192.168.64.15:9934/dmp_admin?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8&useSSL=false

+ 3 - 3
dmp-admin/src/main/resources/logback-spring.xml

@@ -30,7 +30,7 @@
     <logger name="com.netflix" level="WARN"/>
     <logger name="org.apache.http" level="INFO"/>
 
-    <springProfile name="log-dev">
+    <springProfile name="dev">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
         <root level="info">
@@ -38,7 +38,7 @@
         </root>
     </springProfile>
 
-    <springProfile name="log-test">
+    <springProfile name="test">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
         <root level="info">
@@ -46,7 +46,7 @@
         </root>
     </springProfile>
 
-    <springProfile name="log-prod">
+    <springProfile name="prod">
         <root level="info">
             <appender-ref ref="file"/>
         </root>

+ 20 - 20
dmp-org/src/main/java/com/persagy/dmp/org/service/InitService.java

@@ -119,8 +119,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='公司'";
@@ -163,8 +163,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门'";
@@ -187,8 +187,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门分类'";
@@ -213,8 +213,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位'";
@@ -236,8 +236,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位分类'";
@@ -259,8 +259,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='岗位分类与应用功能关系'";
@@ -280,8 +280,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='项目'";
@@ -314,8 +314,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL,\n" +
                 "  `person_id` varchar(80) DEFAULT NULL,\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
@@ -337,8 +337,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集团与应用关系'";
@@ -359,8 +359,8 @@ public class InitService {
                 "  `status` int(11) NOT NULL COMMENT '状态',\n" +
                 "  `create_user` varchar(80) DEFAULT NULL COMMENT '创建用户',\n" +
                 "  `update_user` varchar(80) DEFAULT NULL COMMENT '更新用户',\n" +
-                "  `create_time` timestamp default current_timestamp comment '创建时间', \n" +
-                "  `update_time` timestamp default current_timestamp on update current_timestamp comment '更新时间', \n" +
+                "  `create_time` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', \n" +
+                "  `update_time` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', \n" +
                 "  `remark` varchar(500) DEFAULT NULL COMMENT '备注',\n" +
                 "  PRIMARY KEY (`id`) USING BTREE\n" +
                 ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='集团与功能关系'";

+ 2 - 2
dmp-org/src/main/resources/bootstrap.yml

@@ -2,10 +2,10 @@ spring:
   application:
     name: dmp-org
   profiles:
-    active: log-test
+    active: dev
   cloud:
     config:
-      profile: dev
+      profile: dev2
       uri: http://192.168.64.18:9932
 persagy:
   log:

+ 7 - 6
dmp-org/src/main/resources/logback-spring.xml

@@ -27,26 +27,27 @@
 
     <logger name="org.hibernate" level="INFO"/>
     <logger name="org.springframework" level="INFO"/>
-    <logger name="com.netflix" level="WARN"/>
+    <logger name="com.netflix" level="INFO"/>
     <logger name="org.apache.http" level="INFO"/>
 
-    <springProfile name="log-dev">
+    <springProfile name="dev">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
-        <root level="info">
+        <root level="INFO">
             <appender-ref ref="stdout"/>
         </root>
     </springProfile>
 
-    <springProfile name="log-test">
+    <springProfile name="test">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
-        <root level="info">
+        <root level="INFO">
             <appender-ref ref="file"/>
+            <appender-ref ref="stdout"/>
         </root>
     </springProfile>
 
-    <springProfile name="log-prod">
+    <springProfile name="prod">
         <root level="info">
             <appender-ref ref="file"/>
         </root>

+ 2 - 2
dmp-rwd-datautils/src/main/resources/application-dev.yml

@@ -3,8 +3,8 @@ persagy:
     rwd:
       server: http://39.102.54.110:8082
     rwdedit:
-      server: http://39.102.54.110:8088
-#      server: http://localhost:8082
+      #server: http://39.102.54.110:8088
+      server: http://localhost:8838
 #spring:
 #  datasource:
 #    url: jdbc:mysql://39.102.54.110:9005/dmp_test?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8&useSSL=false

+ 2 - 2
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/datautils/ImportFuncid.java

@@ -45,9 +45,9 @@ import java.util.UUID;
 @RunWith(SpringRunner.class)
 public class ImportFuncid {
 
-    private String basepath = "C:\\Users\\24341\\Downloads\\数据字典附表(20210503)";
+    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
 
-    private String outPath = "C:/Users/24341/Downloads/20210512/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
+    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/funcid-" + DateUtils.format(new Date()) + ".dml.sql";
 
     @Autowired
     private HttpUtils httpUtils;

+ 1 - 1
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ExcelUtils.java

@@ -58,7 +58,7 @@ public class ExcelUtils {
     }
 
 
-    private String basepath = "C:\\Users\\24341\\Downloads\\数据字典附表(20210412)";
+    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
 
     @Test
     public void test1() throws Exception {

+ 2 - 2
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/dic/ImportClass.java

@@ -24,9 +24,9 @@ import java.util.*;
 @Slf4j
 public class ImportClass {
 
-    private String basepath = "C:\\Users\\24341\\Downloads\\数据字典附表(20210503)";
+    private String basepath = "D:\\资料\\工作资料\\原型图\\数据中台\\数据字典数据";
 
-    private String outPath = "C:/Users/24341/Downloads/20210511/class-" + DateUtils.format(new Date()) + ".dml.sql";
+    private String outPath = "D:/资料/工作资料/原型图/数据中台/out/class-" + DateUtils.format(new Date()) + ".dml.sql";
 
     @Test
     public void importClassData() throws Exception {

+ 2 - 2
dmp-rwd-datautils/src/test/java/com/persagy/dmp/rwd/knowladge/Test1.java

@@ -41,8 +41,8 @@ public class Test1 {
 
 	@Test
 	public void test1() throws Exception {
-		String file = basepath + "/4.2-行业推荐模型/4.2.1-推荐空间业态分类.xlsx";
-		String sheetname = "3空间功能类型";
+		String file = basepath + "/附表17-推荐空间业态分类表.xlsx";
+		String sheetname = "空间功能类型";
 
 		FileInputStream inputStream = new FileInputStream(file);
 		Workbook workbook = new XSSFWorkbook(inputStream);

+ 0 - 1
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/AdminRoleService.java

@@ -112,7 +112,6 @@ public class AdminRoleService {
                 if (permission.getSign() == null) {
                     continue;
                 }
-
                 AdminPermission entity;
                 Optional<AdminPermission> optp = permissionRepository.findOne(QAdminPermission.adminPermission.sign.eq(permission.getSign()));
                 if (!optp.isPresent()) {

+ 1 - 1
dmp-rwd-edit/src/main/resources/application.yml

@@ -13,7 +13,7 @@ spring:
     name: dmp-rwdedit
   profiles:
     active:
-      - dev,log-dev
+      - dev
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
     url: jdbc:mysql://192.168.64.15:9934/dmp_rwdedit?useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai

+ 3 - 3
dmp-rwd-edit/src/main/resources/logback-spring.xml

@@ -30,7 +30,7 @@
     <logger name="com.netflix" level="WARN"/>
     <logger name="org.apache.http" level="INFO"/>
 
-    <springProfile name="log-dev">
+    <springProfile name="dev">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
         <root level="info">
@@ -38,7 +38,7 @@
         </root>
     </springProfile>
 
-    <springProfile name="log-test">
+    <springProfile name="test">
         <logger name="org.hibernate.SQL" level="DEBUG"/>
         <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>
         <root level="info">
@@ -46,7 +46,7 @@
         </root>
     </springProfile>
 
-    <springProfile name="log-prod">
+    <springProfile name="prod">
         <root level="info">
             <appender-ref ref="file"/>
         </root>

+ 0 - 118
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/ClassDefTest.java

@@ -1,118 +0,0 @@
-package com.persagy.dmp.rwd.edit;
-
-import com.persagy.common.criteria.JacksonCriteria;
-import com.persagy.common.json.JacksonMapper;
-import com.persagy.common.web.ListResponse;
-import com.persagy.common.web.MapResponse;
-import com.persagy.common.web.PagedResponse;
-import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
-import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
-import com.persagy.dmp.rwd.edit.service.ClassDefChangeRecordService;
-import com.persagy.dmp.rwd.edit.service.ClassDefService;
-import com.persagy.dmp.rwd.enums.ObjType;
-import com.persagy.dmp.rwd.model.ClassDefModel;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class ClassDefTest {
-
-    @Autowired
-    private ClassDefService classDefService;
-
-    @Autowired
-    private ClassDefChangeRecordService classDefChangeRecordService;
-
-    /**
-     * 查询类型数据
-     */
-    @Test
-    public void queryClass() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("parentCode").isNull(true);
-        criteria.add("type", "common");
-        ListResponse<ClassDefModel> response = classDefService.queryClass(criteria);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 查询类型变更记录
-     */
-    @Test
-    public void query() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("type", "common");
-        PagedResponse<ClassDefChangeRecord> query = classDefChangeRecordService.query(criteria);
-        System.err.println(JacksonMapper.toFormatJson(query));
-    }
-
-    /**
-     * 创建类型变更记录
-     */
-    @Test
-    public void create() {
-        ClassDefChangeRecord param = new ClassDefChangeRecord();
-        param.setCode("eq01");
-        param.setName("eq01");
-        param.setGroupCode("0");
-        param.setObjType(ObjType.component);
-        param.setAliasCode("eq01");
-        param.setAliasName("eq01");
-        param.setType("common");
-        param.setProjectId("0");
-        param.setMajorCode("AC");
-        param.setSystemCode("ACVT");
-        param.setEquipmentCode("ACVTSF");
-        param.setParentCode("component");
-        param.setOperationType(EnumOperationType.create);
-        MapResponse response = classDefChangeRecordService.create(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 修改类型变更记录
-     */
-    @Test
-    public void update() {
-        ClassDefChangeRecord param = new ClassDefChangeRecord();
-        param.setId(2);
-        param.setCode("eq01");
-        param.setAliasCode("eq01");
-        param.setAliasName("eq02");
-        MapResponse response = classDefChangeRecordService.update(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 类型变更记录添加版本
-     */
-    @Test
-    public void addVersion() {
-        String version = "1.0.0";
-        List<Integer> idList = new ArrayList<>();
-        idList.add(2);
-        MapResponse response = classDefChangeRecordService.addVersion(version, idList);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 删除类型变更记录
-     */
-    @Test
-    public void delete() {
-        ClassDefChangeRecord param = new ClassDefChangeRecord();
-        param.setId(2);
-        MapResponse response = classDefChangeRecordService.delete(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-}

+ 0 - 132
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/FuncidDefTest.java

@@ -1,132 +0,0 @@
-package com.persagy.dmp.rwd.edit;
-
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.persagy.common.criteria.JacksonCriteria;
-import com.persagy.common.json.JacksonMapper;
-import com.persagy.common.web.ListResponse;
-import com.persagy.common.web.MapResponse;
-import com.persagy.common.web.PagedResponse;
-import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
-import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
-import com.persagy.dmp.rwd.edit.service.FuncidDefChangeRecordService;
-import com.persagy.dmp.rwd.edit.service.FuncidDefService;
-import com.persagy.dmp.rwd.enums.FuncidCategory;
-import com.persagy.dmp.rwd.enums.FuncidDataType;
-import com.persagy.dmp.rwd.model.FuncidDefModel;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Slf4j
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class FuncidDefTest {
-
-    @Autowired
-    private FuncidDefService funcidDefService;
-
-    @Autowired
-    private FuncidDefChangeRecordService funcidDefChangeRecordService;
-
-    /**
-     * 查询信息点数据
-     */
-    @Test
-    public void queryFuncid() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("classCode", "FFSC");
-        criteria.add("type", "common");
-        ListResponse<FuncidDefModel> response = funcidDefService.queryFuncid(criteria);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 查询信息点变更记录
-     */
-    @Test
-    public void query() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("type", "common");
-        PagedResponse<FuncidDefChangeRecord> query = funcidDefChangeRecordService.query(criteria);
-        System.err.println(JacksonMapper.toFormatJson(query));
-    }
-
-    /**
-     * 创建信息点变更记录
-     */
-    @Test
-    public void create() {
-        FuncidDefChangeRecord param = new FuncidDefChangeRecord();
-        param.setCode("funcid01");
-        param.setGroupCode("0");
-        param.setProjectId("0");
-        param.setName("funcid01");
-        param.setAliasCode("funcid01");
-        param.setAliasName("funcid01");
-        param.setClassCode("ACCH");
-        param.setCategory(FuncidCategory.STATIC);
-        param.setType("common");
-        param.setFirstTag("1");
-        param.setSecondTag("2");
-        param.setPriority("S");
-        param.setInputMode("A2");
-        param.setUnit("m");
-        param.setDataType(FuncidDataType.INTEGER);
-        param.setIsMultiple(false);
-        param.setIsRegion(false);
-        ArrayNode dataSource = JacksonMapper.toObject("[{$gt:10, $lt:50}]", ArrayNode.class);
-        param.setDataSource(dataSource);
-        param.setNote("备注");
-        param.setSubFlag(false);
-        param.setWeakPoint(false);
-        param.setOperationType(EnumOperationType.create);
-        MapResponse response = funcidDefChangeRecordService.create(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 修改信息点变更记录
-     */
-    @Test
-    public void update() {
-        FuncidDefChangeRecord param = new FuncidDefChangeRecord();
-        param.setId(24);
-        param.setCode("funcid01");
-        param.setFirstTag("111");
-        param.setSecondTag("222");
-        param.setAliasCode("funcid01");
-        param.setAliasName("funcid01");
-        param.setNote("备注");
-        MapResponse response = funcidDefChangeRecordService.update(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 信息点变更记录添加版本
-     */
-    @Test
-    public void addVersion() {
-        String version = "1.0.1";
-        List<Integer> idList = new ArrayList<>();
-        idList.add(24);
-        MapResponse response = funcidDefChangeRecordService.addVersion(version, idList);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 删除信息点变更记录
-     */
-    @Test
-    public void delete() {
-        FuncidDefChangeRecord param = new FuncidDefChangeRecord();
-        param.setId(24);
-        MapResponse response = funcidDefChangeRecordService.delete(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-}

+ 0 - 77
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RefTypeInfoTest.java

@@ -1,77 +0,0 @@
-package com.persagy.dmp.rwd.edit;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.persagy.common.criteria.JacksonCriteria;
-import com.persagy.common.json.JacksonMapper;
-import com.persagy.common.web.MapResponse;
-import com.persagy.common.web.PagedResponse;
-import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
-import com.persagy.dmp.rwd.edit.service.RwdeditRefTypeInfosService;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@Slf4j
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class RefTypeInfoTest {
-
-    @Autowired
-    private RwdeditRefTypeInfosService rwdeditRefTypeInfosService;
-
-    /**
-     * 查询引用类型详情
-     */
-    @Test
-    public void query() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        criteria.add("parentCode").isNull(true);
-        PagedResponse<RwdeditRefTypeInfos> query = rwdeditRefTypeInfosService.query(criteria);
-        System.err.println(JacksonMapper.toFormatJson(query));
-    }
-
-    /**
-     * 创建引用类型详情
-     */
-    @Test
-    public void create() {
-        RwdeditRefTypeInfos param = new RwdeditRefTypeInfos();
-        param.setRefKey("ref01");
-        param.setCode("info01");
-        param.setName("info01");
-        param.setParentCode("info01");
-        ObjectNode object = JacksonMapper.toObject("{test:test}", ObjectNode.class);
-        param.setDataSource(object);
-        MapResponse response = rwdeditRefTypeInfosService.create(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 修改引用类型详情
-     */
-    @Test
-    public void update() {
-        RwdeditRefTypeInfos param = new RwdeditRefTypeInfos();
-        param.setRefKey("ref01");
-        param.setCode("info01");
-        param.setName("info02");
-        MapResponse response = rwdeditRefTypeInfosService.update(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 删除引用类型详情
-     */
-    @Test
-    public void delete() {
-        RwdeditRefTypeInfos param = new RwdeditRefTypeInfos();
-        param.setRefKey("ref01");
-        param.setCode("info01");
-        MapResponse response = rwdeditRefTypeInfosService.delete(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-}

+ 0 - 69
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RefTypeTest.java

@@ -1,69 +0,0 @@
-package com.persagy.dmp.rwd.edit;
-
-import com.persagy.common.criteria.JacksonCriteria;
-import com.persagy.common.json.JacksonMapper;
-import com.persagy.common.web.MapResponse;
-import com.persagy.common.web.PagedResponse;
-import com.persagy.dmp.rwd.edit.model.RwdeditRefTypeModel;
-import com.persagy.dmp.rwd.edit.service.RwdeditRefTypeService;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@Slf4j
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class RefTypeTest {
-
-    @Autowired
-    private RwdeditRefTypeService rwdeditRefTypeService;
-
-    /**
-     * 查询引用类型
-     */
-    @Test
-    public void query() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        PagedResponse<RwdeditRefTypeModel> query = rwdeditRefTypeService.query(criteria);
-        System.err.println(JacksonMapper.toFormatJson(query));
-    }
-
-    /**
-     * 创建引用类型
-     */
-    @Test
-    public void create() {
-        RwdeditRefTypeModel param = new RwdeditRefTypeModel();
-        param.setRefKey("ref01");
-        param.setName("ref01");
-        MapResponse response = rwdeditRefTypeService.create(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 修改引用类型
-     */
-    @Test
-    public void update() {
-        RwdeditRefTypeModel param = new RwdeditRefTypeModel();
-        param.setRefKey("ref01");
-        param.setName("ref01");
-        MapResponse response = rwdeditRefTypeService.update(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 删除引用类型
-     */
-    @Test
-    public void delete() {
-        RwdeditRefTypeModel param = new RwdeditRefTypeModel();
-        param.setRefKey("ref01");
-        MapResponse response = rwdeditRefTypeService.delete(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-}

+ 0 - 77
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/RwdeditVersionTest.java

@@ -1,77 +0,0 @@
-package com.persagy.dmp.rwd.edit;
-
-import com.persagy.common.criteria.JacksonCriteria;
-import com.persagy.common.json.JacksonMapper;
-import com.persagy.common.web.MapResponse;
-import com.persagy.common.web.PagedResponse;
-import com.persagy.dmp.rwd.edit.entity.RwdeditVersion;
-import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
-import com.persagy.dmp.rwd.edit.service.RwdeditVersionService;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringRunner;
-
-@Slf4j
-@SpringBootTest
-@RunWith(SpringRunner.class)
-public class RwdeditVersionTest {
-
-    @Autowired
-    private RwdeditVersionService rwdeditVersionService;
-
-    /**
-     * 查询版本信息
-     */
-    @Test
-    public void query() {
-        JacksonCriteria criteria = JacksonCriteria.newInstance();
-        PagedResponse<RwdeditVersion> query = rwdeditVersionService.query(criteria);
-        System.err.println(JacksonMapper.toFormatJson(query));
-    }
-
-    /**
-     * 创建版本信息
-     */
-    @Test
-    public void create() {
-        RwdeditVersion param = new RwdeditVersion();
-        param.setVersion("1.0.1");
-        MapResponse response = rwdeditVersionService.create(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 修改版本信息
-     */
-    @Test
-    public void update() {
-        RwdeditVersion param = new RwdeditVersion();
-        param.setVersion("1.0.1");
-        param.setState(EnumVersionState.INIT);
-        MapResponse response = rwdeditVersionService.update(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 删除版本信息
-     */
-    @Test
-    public void delete() {
-        RwdeditVersion param = new RwdeditVersion();
-        param.setVersion("1.0.1");
-        MapResponse response = rwdeditVersionService.delete(param);
-        System.err.println(JacksonMapper.toFormatJson(response));
-    }
-
-    /**
-     * 下载版本信息
-     */
-    @Test
-    public void download() {
-        System.err.println("*************");
-    }
-
-}

+ 547 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/AdminRoleServiceTest.java

@@ -0,0 +1,547 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.BaseResponse;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.AdminPermission;
+import com.persagy.dmp.rwd.edit.entity.AdminRole;
+import com.persagy.dmp.rwd.edit.entity.QAdminPermission;
+import com.persagy.dmp.rwd.edit.entity.QAdminRole;
+import com.persagy.dmp.rwd.edit.repository.AdminPermissionRepository;
+import com.persagy.dmp.rwd.edit.repository.AdminRoleRepository;
+import com.querydsl.core.BooleanBuilder;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import org.junit.Assert;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.*;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+//@RunWith(MockitoJUnitRunner.Silent.class)
+class AdminRoleServiceTest {
+
+    @Mock
+    private AdminRoleRepository mockAdminRoleRepository;
+    @Mock
+    private AdminPermissionRepository mockPermissionRepository;
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+
+    @InjectMocks
+    private AdminRoleService adminRoleServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QAdminRole("adminRole")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class)))
+                .thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<AdminRole> result = adminRoleServiceUnderTest.query(criteria);
+
+        // Verify the results
+        for (AdminRole datum : result.getData()) {
+            Assert.assertNotNull("角色名称为空",datum.getName());
+        }
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Collections.singletonList(adminPermission));
+        BooleanExpression booleanExpression = new QAdminRole("adminRole").name.eq("name");
+        when(mockAdminRoleRepository.count(booleanExpression)).thenReturn(0L);
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole = new AdminRole();
+        adminRole.setId(0);
+        adminRole.setName("name");
+        adminRole.setRemark("remark");
+        adminRole.setStatus(0);
+        adminRole.setCreateUser(0);
+        adminRole.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setUpdateUser(0);
+        adminRole.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission1 = new AdminPermission();
+        adminPermission1.setId(0);
+        adminPermission1.setSign("sign");
+        adminPermission1.setName("name");
+        adminPermission1.setRemark("remark");
+        adminPermission1.setStatus(0);
+        adminPermission1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setPermissions(Collections.singletonList(adminPermission1));
+        // when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole);
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole);
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.create(param);
+
+        // Verify the results
+        //Assert.assertEquals("测试名称为空失败","name is required",result.getMessage());
+        Assert.assertEquals("处理结果成功", BaseResponse.SUCCESS,result.getResult());
+    }
+    @Test
+    void testCreate_nameisNull() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        //param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Collections.singletonList(adminPermission));
+        //BooleanExpression booleanExpression = new QAdminRole("adminRole").name.eq("abc");
+        //when(mockAdminRoleRepository.count(booleanExpression)).thenReturn(0L);
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.create(param);
+        // Verify the results
+        Assert.assertEquals("测试名称为空失败","name is required",result.getMessage());
+        //Assert.assertNotNull("主键为空",result.getString("id"));
+    }
+    @Test
+    void testCreate_nameExist() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Collections.singletonList(adminPermission));
+        BooleanExpression booleanExpression = new QAdminRole("adminRole").name.eq("name");
+        when(mockAdminRoleRepository.count(booleanExpression)).thenReturn(1L);
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.create(param);
+
+        // Verify the results
+        Assert.assertEquals("测试名称为空失败","name is exists",result.getMessage());
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(new ArrayList<>(Collections.singletonList(adminPermission)));
+
+        // Configure AdminRoleRepository.findById(...).
+        final AdminRole adminRole1 = new AdminRole();
+        adminRole1.setId(0);
+        adminRole1.setName("name");
+        adminRole1.setRemark("remark");
+        adminRole1.setStatus(0);
+        adminRole1.setCreateUser(0);
+        adminRole1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setUpdateUser(0);
+        adminRole1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission1 = new AdminPermission();
+        adminPermission1.setId(0);
+        adminPermission1.setSign("sign");
+        adminPermission1.setName("name");
+        adminPermission1.setRemark("remark");
+        adminPermission1.setStatus(0);
+        adminPermission1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setPermissions(new ArrayList<>(Collections.singletonList(adminPermission1)));
+        final Optional<AdminRole> adminRole = Optional.of(adminRole1);
+        when(mockAdminRoleRepository.findById(0)).thenReturn(adminRole);
+
+        // Configure AdminPermissionRepository.findOne(...).
+        final AdminPermission adminPermission3 = new AdminPermission();
+        adminPermission3.setId(0);
+        adminPermission3.setSign("sign");
+        adminPermission3.setName("name");
+        adminPermission3.setRemark("remark");
+        adminPermission3.setStatus(0);
+        adminPermission3.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission3.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final Optional<AdminPermission> adminPermission2 = Optional.of(adminPermission3);
+        BooleanExpression booleanExpression = new QAdminPermission("adminPermission").sign.eq("sign");
+        when(mockPermissionRepository.findOne(booleanExpression)).thenReturn(adminPermission2);
+
+        // Configure AdminPermissionRepository.save(...).
+        final AdminPermission adminPermission4 = new AdminPermission();
+        adminPermission4.setId(0);
+        adminPermission4.setSign("sign");
+        adminPermission4.setName("name");
+        adminPermission4.setRemark("remark");
+        adminPermission4.setStatus(0);
+        adminPermission4.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission4.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        when(mockPermissionRepository.save(any(AdminPermission.class))).thenReturn(adminPermission4);
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole2 = new AdminRole();
+        adminRole2.setId(0);
+        adminRole2.setName("name");
+        adminRole2.setRemark("remark");
+        adminRole2.setStatus(0);
+        adminRole2.setCreateUser(0);
+        adminRole2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setUpdateUser(0);
+        adminRole2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission5 = new AdminPermission();
+        adminPermission5.setId(0);
+        adminPermission5.setSign("sign");
+        adminPermission5.setName("name");
+        adminPermission5.setRemark("remark");
+        adminPermission5.setStatus(0);
+        adminPermission5.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission5.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setPermissions(new ArrayList<>(Collections.singletonList(adminPermission5)));
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole2);
+
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_AdminRoleRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Arrays.asList(adminPermission));
+
+        when(mockAdminRoleRepository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure AdminPermissionRepository.findOne(...).
+        final AdminPermission adminPermission2 = new AdminPermission();
+        adminPermission2.setId(0);
+        adminPermission2.setSign("sign");
+        adminPermission2.setName("name");
+        adminPermission2.setRemark("remark");
+        adminPermission2.setStatus(0);
+        adminPermission2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final Optional<AdminPermission> adminPermission1 = Optional.of(adminPermission2);
+        when(mockPermissionRepository.findOne(new BooleanBuilder())).thenReturn(adminPermission1);
+
+        // Configure AdminPermissionRepository.save(...).
+        final AdminPermission adminPermission3 = new AdminPermission();
+        adminPermission3.setId(0);
+        adminPermission3.setSign("sign");
+        adminPermission3.setName("name");
+        adminPermission3.setRemark("remark");
+        adminPermission3.setStatus(0);
+        adminPermission3.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission3.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        when(mockPermissionRepository.save(any(AdminPermission.class))).thenReturn(adminPermission3);
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole = new AdminRole();
+        adminRole.setId(0);
+        adminRole.setName("name");
+        adminRole.setRemark("remark");
+        adminRole.setStatus(0);
+        adminRole.setCreateUser(0);
+        adminRole.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setUpdateUser(0);
+        adminRole.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission4 = new AdminPermission();
+        adminPermission4.setId(0);
+        adminPermission4.setSign("sign");
+        adminPermission4.setName("name");
+        adminPermission4.setRemark("remark");
+        adminPermission4.setStatus(0);
+        adminPermission4.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission4.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setPermissions(Arrays.asList(adminPermission4));
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole);
+
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_AdminPermissionRepositoryFindOneReturnsAbsent() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Arrays.asList(adminPermission));
+
+        // Configure AdminRoleRepository.findById(...).
+        final AdminRole adminRole1 = new AdminRole();
+        adminRole1.setId(0);
+        adminRole1.setName("name");
+        adminRole1.setRemark("remark");
+        adminRole1.setStatus(0);
+        adminRole1.setCreateUser(0);
+        adminRole1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setUpdateUser(0);
+        adminRole1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission1 = new AdminPermission();
+        adminPermission1.setId(0);
+        adminPermission1.setSign("sign");
+        adminPermission1.setName("name");
+        adminPermission1.setRemark("remark");
+        adminPermission1.setStatus(0);
+        adminPermission1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setPermissions(Arrays.asList(adminPermission1));
+        final Optional<AdminRole> adminRole = Optional.of(adminRole1);
+        when(mockAdminRoleRepository.findById(0)).thenReturn(adminRole);
+
+        when(mockPermissionRepository.findOne(new BooleanBuilder())).thenReturn(Optional.empty());
+
+        // Configure AdminPermissionRepository.save(...).
+        final AdminPermission adminPermission2 = new AdminPermission();
+        adminPermission2.setId(0);
+        adminPermission2.setSign("sign");
+        adminPermission2.setName("name");
+        adminPermission2.setRemark("remark");
+        adminPermission2.setStatus(0);
+        adminPermission2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        when(mockPermissionRepository.save(any(AdminPermission.class))).thenReturn(adminPermission2);
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole2 = new AdminRole();
+        adminRole2.setId(0);
+        adminRole2.setName("name");
+        adminRole2.setRemark("remark");
+        adminRole2.setStatus(0);
+        adminRole2.setCreateUser(0);
+        adminRole2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setUpdateUser(0);
+        adminRole2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission3 = new AdminPermission();
+        adminPermission3.setId(0);
+        adminPermission3.setSign("sign");
+        adminPermission3.setName("name");
+        adminPermission3.setRemark("remark");
+        adminPermission3.setStatus(0);
+        adminPermission3.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission3.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setPermissions(Arrays.asList(adminPermission3));
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole2);
+
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Arrays.asList(adminPermission));
+
+        // Configure AdminRoleRepository.findById(...).
+        final AdminRole adminRole1 = new AdminRole();
+        adminRole1.setId(0);
+        adminRole1.setName("name");
+        adminRole1.setRemark("remark");
+        adminRole1.setStatus(0);
+        adminRole1.setCreateUser(0);
+        adminRole1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setUpdateUser(0);
+        adminRole1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission1 = new AdminPermission();
+        adminPermission1.setId(0);
+        adminPermission1.setSign("sign");
+        adminPermission1.setName("name");
+        adminPermission1.setRemark("remark");
+        adminPermission1.setStatus(0);
+        adminPermission1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole1.setPermissions(Arrays.asList(adminPermission1));
+        final Optional<AdminRole> adminRole = Optional.of(adminRole1);
+        when(mockAdminRoleRepository.findById(0)).thenReturn(adminRole);
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole2 = new AdminRole();
+        adminRole2.setId(0);
+        adminRole2.setName("name");
+        adminRole2.setRemark("remark");
+        adminRole2.setStatus(0);
+        adminRole2.setCreateUser(0);
+        adminRole2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setUpdateUser(0);
+        adminRole2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission2 = new AdminPermission();
+        adminPermission2.setId(0);
+        adminPermission2.setSign("sign");
+        adminPermission2.setName("name");
+        adminPermission2.setRemark("remark");
+        adminPermission2.setStatus(0);
+        adminPermission2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole2.setPermissions(Arrays.asList(adminPermission2));
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole2);
+
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.delete(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete_AdminRoleRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final AdminRole param = new AdminRole();
+        param.setId(0);
+        param.setName("name");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission = new AdminPermission();
+        adminPermission.setId(0);
+        adminPermission.setSign("sign");
+        adminPermission.setName("name");
+        adminPermission.setRemark("remark");
+        adminPermission.setStatus(0);
+        adminPermission.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setPermissions(Arrays.asList(adminPermission));
+
+        when(mockAdminRoleRepository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure AdminRoleRepository.save(...).
+        final AdminRole adminRole = new AdminRole();
+        adminRole.setId(0);
+        adminRole.setName("name");
+        adminRole.setRemark("remark");
+        adminRole.setStatus(0);
+        adminRole.setCreateUser(0);
+        adminRole.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setUpdateUser(0);
+        adminRole.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        final AdminPermission adminPermission1 = new AdminPermission();
+        adminPermission1.setId(0);
+        adminPermission1.setSign("sign");
+        adminPermission1.setName("name");
+        adminPermission1.setRemark("remark");
+        adminPermission1.setStatus(0);
+        adminPermission1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminPermission1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminRole.setPermissions(Arrays.asList(adminPermission1));
+        when(mockAdminRoleRepository.save(any(AdminRole.class))).thenReturn(adminRole);
+
+        // Run the test
+        final MapResponse result = adminRoleServiceUnderTest.delete(param);
+
+        // Verify the results
+    }
+}

+ 322 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/AdminUserServiceTest.java

@@ -0,0 +1,322 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.AdminUser;
+import com.persagy.dmp.rwd.edit.entity.QAdminUser;
+import com.persagy.dmp.rwd.edit.repository.AdminUserRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.*;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AdminUserServiceTest {
+
+    @Mock
+    private AdminUserRepository mockAdminUserRepository;
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+
+    @InjectMocks
+    private AdminUserService adminUserServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QAdminUser("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<AdminUser> result = adminUserServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final AdminUser param = new AdminUser();
+        param.setId(0);
+        param.setUsername("username");
+        param.setPassword("password");
+        param.setRealname("realname");
+        param.setPhone("phone");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+
+        when(mockAdminUserRepository.count()).thenReturn(0L);
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser = new AdminUser();
+        adminUser.setId(0);
+        adminUser.setUsername("username");
+        adminUser.setPassword("password");
+        adminUser.setRealname("realname");
+        adminUser.setPhone("phone");
+        adminUser.setRemark("remark");
+        adminUser.setStatus(0);
+        adminUser.setCreateUser(0);
+        adminUser.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.create(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final AdminUser param = new AdminUser();
+        param.setId(0);
+        param.setUsername("username");
+        param.setPassword("password");
+        param.setRealname("realname");
+        param.setPhone("phone");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+
+        // Configure AdminUserRepository.findById(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockAdminUserRepository.findById(0)).thenReturn(adminUser);
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser2 = new AdminUser();
+        adminUser2.setId(0);
+        adminUser2.setUsername("username");
+        adminUser2.setPassword("password");
+        adminUser2.setRealname("realname");
+        adminUser2.setPhone("phone");
+        adminUser2.setRemark("remark");
+        adminUser2.setStatus(0);
+        adminUser2.setCreateUser(0);
+        adminUser2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser2.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser2);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_AdminUserRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final AdminUser param = new AdminUser();
+        param.setId(0);
+        param.setUsername("username");
+        param.setPassword("password");
+        param.setRealname("realname");
+        param.setPhone("phone");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+
+        when(mockAdminUserRepository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser = new AdminUser();
+        adminUser.setId(0);
+        adminUser.setUsername("username");
+        adminUser.setPassword("password");
+        adminUser.setRealname("realname");
+        adminUser.setPhone("phone");
+        adminUser.setRemark("remark");
+        adminUser.setStatus(0);
+        adminUser.setCreateUser(0);
+        adminUser.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final AdminUser param = new AdminUser();
+        param.setId(0);
+        param.setUsername("username");
+        param.setPassword("password");
+        param.setRealname("realname");
+        param.setPhone("phone");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+
+        // Configure AdminUserRepository.findById(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockAdminUserRepository.findById(0)).thenReturn(adminUser);
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser2 = new AdminUser();
+        adminUser2.setId(0);
+        adminUser2.setUsername("username");
+        adminUser2.setPassword("password");
+        adminUser2.setRealname("realname");
+        adminUser2.setPhone("phone");
+        adminUser2.setRemark("remark");
+        adminUser2.setStatus(0);
+        adminUser2.setCreateUser(0);
+        adminUser2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser2.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser2);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.delete(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete_AdminUserRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final AdminUser param = new AdminUser();
+        param.setId(0);
+        param.setUsername("username");
+        param.setPassword("password");
+        param.setRealname("realname");
+        param.setPhone("phone");
+        param.setRemark("remark");
+        param.setStatus(0);
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+
+        when(mockAdminUserRepository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser = new AdminUser();
+        adminUser.setId(0);
+        adminUser.setUsername("username");
+        adminUser.setPassword("password");
+        adminUser.setRealname("realname");
+        adminUser.setPhone("phone");
+        adminUser.setRemark("remark");
+        adminUser.setStatus(0);
+        adminUser.setCreateUser(0);
+        adminUser.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.delete(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testChgpwd() {
+        // Setup
+        final Map<String, String> param = new HashMap<>();
+
+        // Configure AdminUserRepository.findById(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockAdminUserRepository.findById(0)).thenReturn(adminUser);
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser2 = new AdminUser();
+        adminUser2.setId(0);
+        adminUser2.setUsername("username");
+        adminUser2.setPassword("password");
+        adminUser2.setRealname("realname");
+        adminUser2.setPhone("phone");
+        adminUser2.setRemark("remark");
+        adminUser2.setStatus(0);
+        adminUser2.setCreateUser(0);
+        adminUser2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser2.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser2);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.chgpwd(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testChgpwd_AdminUserRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final Map<String, String> param = new HashMap<>();
+        when(mockAdminUserRepository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure AdminUserRepository.save(...).
+        final AdminUser adminUser = new AdminUser();
+        adminUser.setId(0);
+        adminUser.setUsername("username");
+        adminUser.setPassword("password");
+        adminUser.setRealname("realname");
+        adminUser.setPhone("phone");
+        adminUser.setRemark("remark");
+        adminUser.setStatus(0);
+        adminUser.setCreateUser(0);
+        adminUser.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser.setUpdateUser(0);
+        when(mockAdminUserRepository.save(any(AdminUser.class))).thenReturn(adminUser);
+
+        // Run the test
+        final MapResponse result = adminUserServiceUnderTest.chgpwd(param);
+
+        // Verify the results
+    }
+}

+ 416 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/ClassDefChangeRecordServiceTest.java

@@ -0,0 +1,416 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.ClassDef;
+import com.persagy.dmp.rwd.edit.entity.ClassDefChangeRecord;
+import com.persagy.dmp.rwd.edit.entity.QClassDefChangeRecord;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
+import com.persagy.dmp.rwd.edit.repository.ClassDefChangeRecordRepository;
+import com.persagy.dmp.rwd.edit.repository.ClassDefRepository;
+import com.persagy.dmp.rwd.enums.ObjType;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.*;
+
+class ClassDefChangeRecordServiceTest {
+
+    private ClassDefChangeRecordService classDefChangeRecordServiceUnderTest;
+
+    @BeforeEach
+    void setUp() {
+        classDefChangeRecordServiceUnderTest = new ClassDefChangeRecordService();
+        classDefChangeRecordServiceUnderTest.repository = mock(ClassDefChangeRecordRepository.class);
+        classDefChangeRecordServiceUnderTest.classDefService = mock(ClassDefService.class);
+        classDefChangeRecordServiceUnderTest.criteriaUtils = mock(CriteriaUtils.class);
+        classDefChangeRecordServiceUnderTest.classDefRepository = mock(ClassDefRepository.class);
+    }
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(classDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QClassDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<ClassDefChangeRecord> result = classDefChangeRecordServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure ClassDefChangeRecordRepository.findAll(...).
+        final ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+        classDefChangeRecord.setId(0);
+        classDefChangeRecord.setCode("code");
+        classDefChangeRecord.setGroupCode("groupCode");
+        classDefChangeRecord.setObjType(ObjType.project);
+        classDefChangeRecord.setName("name");
+        classDefChangeRecord.setAliasCode("aliasCode");
+        classDefChangeRecord.setAliasName("aliasName");
+        classDefChangeRecord.setType("type");
+        classDefChangeRecord.setProjectId("projectId");
+        classDefChangeRecord.setMajorCode("majorCode");
+        final List<ClassDefChangeRecord> classDefChangeRecords = Arrays.asList(classDefChangeRecord);
+        when(classDefChangeRecordServiceUnderTest.repository.findAll()).thenReturn(classDefChangeRecords);
+
+        // Configure ClassDefChangeRecordRepository.save(...).
+        final ClassDefChangeRecord classDefChangeRecord1 = new ClassDefChangeRecord();
+        classDefChangeRecord1.setId(0);
+        classDefChangeRecord1.setCode("code");
+        classDefChangeRecord1.setGroupCode("groupCode");
+        classDefChangeRecord1.setObjType(ObjType.project);
+        classDefChangeRecord1.setName("name");
+        classDefChangeRecord1.setAliasCode("aliasCode");
+        classDefChangeRecord1.setAliasName("aliasName");
+        classDefChangeRecord1.setType("type");
+        classDefChangeRecord1.setProjectId("projectId");
+        classDefChangeRecord1.setMajorCode("majorCode");
+        when(classDefChangeRecordServiceUnderTest.repository.save(any(ClassDefChangeRecord.class))).thenReturn(classDefChangeRecord1);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.create(param);
+
+        // Verify the results
+        verify(classDefChangeRecordServiceUnderTest.repository).deleteAll(Arrays.asList(new ClassDefChangeRecord()));
+    }
+
+    @Test
+    void testCreate_ClassDefChangeRecordRepositoryFindAllReturnsNoItems() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(classDefChangeRecordServiceUnderTest.repository.findAll()).thenReturn(Collections.emptyList());
+
+        // Configure ClassDefChangeRecordRepository.save(...).
+        final ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+        classDefChangeRecord.setId(0);
+        classDefChangeRecord.setCode("code");
+        classDefChangeRecord.setGroupCode("groupCode");
+        classDefChangeRecord.setObjType(ObjType.project);
+        classDefChangeRecord.setName("name");
+        classDefChangeRecord.setAliasCode("aliasCode");
+        classDefChangeRecord.setAliasName("aliasName");
+        classDefChangeRecord.setType("type");
+        classDefChangeRecord.setProjectId("projectId");
+        classDefChangeRecord.setMajorCode("majorCode");
+        when(classDefChangeRecordServiceUnderTest.repository.save(any(ClassDefChangeRecord.class))).thenReturn(classDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.create(param);
+
+        // Verify the results
+        verify(classDefChangeRecordServiceUnderTest.repository).deleteAll(Arrays.asList(new ClassDefChangeRecord()));
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        // Configure ClassDefChangeRecordRepository.findById(...).
+        final ClassDefChangeRecord classDefChangeRecord1 = new ClassDefChangeRecord();
+        classDefChangeRecord1.setId(0);
+        classDefChangeRecord1.setCode("code");
+        classDefChangeRecord1.setGroupCode("groupCode");
+        classDefChangeRecord1.setObjType(ObjType.project);
+        classDefChangeRecord1.setName("name");
+        classDefChangeRecord1.setAliasCode("aliasCode");
+        classDefChangeRecord1.setAliasName("aliasName");
+        classDefChangeRecord1.setType("type");
+        classDefChangeRecord1.setProjectId("projectId");
+        classDefChangeRecord1.setMajorCode("majorCode");
+        final Optional<ClassDefChangeRecord> classDefChangeRecord = Optional.of(classDefChangeRecord1);
+        when(classDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(classDefChangeRecord);
+
+        // Configure ClassDefChangeRecordRepository.save(...).
+        final ClassDefChangeRecord classDefChangeRecord2 = new ClassDefChangeRecord();
+        classDefChangeRecord2.setId(0);
+        classDefChangeRecord2.setCode("code");
+        classDefChangeRecord2.setGroupCode("groupCode");
+        classDefChangeRecord2.setObjType(ObjType.project);
+        classDefChangeRecord2.setName("name");
+        classDefChangeRecord2.setAliasCode("aliasCode");
+        classDefChangeRecord2.setAliasName("aliasName");
+        classDefChangeRecord2.setType("type");
+        classDefChangeRecord2.setProjectId("projectId");
+        classDefChangeRecord2.setMajorCode("majorCode");
+        when(classDefChangeRecordServiceUnderTest.repository.save(any(ClassDefChangeRecord.class))).thenReturn(classDefChangeRecord2);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_ClassDefChangeRecordRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        when(classDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure ClassDefChangeRecordRepository.save(...).
+        final ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+        classDefChangeRecord.setId(0);
+        classDefChangeRecord.setCode("code");
+        classDefChangeRecord.setGroupCode("groupCode");
+        classDefChangeRecord.setObjType(ObjType.project);
+        classDefChangeRecord.setName("name");
+        classDefChangeRecord.setAliasCode("aliasCode");
+        classDefChangeRecord.setAliasName("aliasName");
+        classDefChangeRecord.setType("type");
+        classDefChangeRecord.setProjectId("projectId");
+        classDefChangeRecord.setMajorCode("majorCode");
+        when(classDefChangeRecordServiceUnderTest.repository.save(any(ClassDefChangeRecord.class))).thenReturn(classDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testAddVersion() {
+        // Setup
+        when(classDefChangeRecordServiceUnderTest.repository.addVersion("version", Arrays.asList(0))).thenReturn(0);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.addVersion("version", Arrays.asList(0));
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        // Configure ClassDefChangeRecordRepository.findById(...).
+        final ClassDefChangeRecord classDefChangeRecord1 = new ClassDefChangeRecord();
+        classDefChangeRecord1.setId(0);
+        classDefChangeRecord1.setCode("code");
+        classDefChangeRecord1.setGroupCode("groupCode");
+        classDefChangeRecord1.setObjType(ObjType.project);
+        classDefChangeRecord1.setName("name");
+        classDefChangeRecord1.setAliasCode("aliasCode");
+        classDefChangeRecord1.setAliasName("aliasName");
+        classDefChangeRecord1.setType("type");
+        classDefChangeRecord1.setProjectId("projectId");
+        classDefChangeRecord1.setMajorCode("majorCode");
+        final Optional<ClassDefChangeRecord> classDefChangeRecord = Optional.of(classDefChangeRecord1);
+        when(classDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(classDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(classDefChangeRecordServiceUnderTest.repository).delete(any(ClassDefChangeRecord.class));
+    }
+
+    @Test
+    void testDelete_ClassDefChangeRecordRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final ClassDefChangeRecord param = new ClassDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setObjType(ObjType.project);
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setType("type");
+        param.setProjectId("projectId");
+        param.setMajorCode("majorCode");
+
+        when(classDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(Optional.empty());
+
+        // Run the test
+        final MapResponse result = classDefChangeRecordServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(classDefChangeRecordServiceUnderTest.repository).delete(any(ClassDefChangeRecord.class));
+    }
+
+    @Test
+    void testGetSqlList() {
+        // Setup
+        when(classDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QClassDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Run the test
+        final List<String> result = classDefChangeRecordServiceUnderTest.getSqlList("version", false);
+
+        // Verify the results
+        assertThat(result).isEqualTo(Arrays.asList("value"));
+    }
+
+    @Test
+    void testUpdateStateByVersion() {
+        // Setup
+        when(classDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QClassDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure ClassDefRepository.saveAll(...).
+        final ClassDef classDef = new ClassDef();
+        classDef.setId("id");
+        classDef.setGroupCode("groupCode");
+        classDef.setCode("code");
+        classDef.setObjType(ObjType.project);
+        classDef.setName("name");
+        classDef.setAliasCode("aliasCode");
+        classDef.setAliasName("aliasName");
+        classDef.setType("type");
+        classDef.setProjectId("projectId");
+        classDef.setMajorCode("majorCode");
+        final List<ClassDef> classDefs = Arrays.asList(classDef);
+        when(classDefChangeRecordServiceUnderTest.classDefRepository.saveAll(Arrays.asList(new ClassDef()))).thenReturn(classDefs);
+
+        // Configure ClassDefChangeRecordRepository.saveAll(...).
+        final ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+        classDefChangeRecord.setId(0);
+        classDefChangeRecord.setCode("code");
+        classDefChangeRecord.setGroupCode("groupCode");
+        classDefChangeRecord.setObjType(ObjType.project);
+        classDefChangeRecord.setName("name");
+        classDefChangeRecord.setAliasCode("aliasCode");
+        classDefChangeRecord.setAliasName("aliasName");
+        classDefChangeRecord.setType("type");
+        classDefChangeRecord.setProjectId("projectId");
+        classDefChangeRecord.setMajorCode("majorCode");
+        final List<ClassDefChangeRecord> classDefChangeRecords = Arrays.asList(classDefChangeRecord);
+        when(classDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new ClassDefChangeRecord()))).thenReturn(classDefChangeRecords);
+
+        // Run the test
+        classDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdateStateByVersion_ClassDefRepositoryReturnsNoItems() {
+        // Setup
+        when(classDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QClassDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(classDefChangeRecordServiceUnderTest.classDefRepository.saveAll(Arrays.asList(new ClassDef()))).thenReturn(Collections.emptyList());
+
+        // Configure ClassDefChangeRecordRepository.saveAll(...).
+        final ClassDefChangeRecord classDefChangeRecord = new ClassDefChangeRecord();
+        classDefChangeRecord.setId(0);
+        classDefChangeRecord.setCode("code");
+        classDefChangeRecord.setGroupCode("groupCode");
+        classDefChangeRecord.setObjType(ObjType.project);
+        classDefChangeRecord.setName("name");
+        classDefChangeRecord.setAliasCode("aliasCode");
+        classDefChangeRecord.setAliasName("aliasName");
+        classDefChangeRecord.setType("type");
+        classDefChangeRecord.setProjectId("projectId");
+        classDefChangeRecord.setMajorCode("majorCode");
+        final List<ClassDefChangeRecord> classDefChangeRecords = Arrays.asList(classDefChangeRecord);
+        when(classDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new ClassDefChangeRecord()))).thenReturn(classDefChangeRecords);
+
+        // Run the test
+        classDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdateStateByVersion_ClassDefChangeRecordRepositoryReturnsNoItems() {
+        // Setup
+        when(classDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QClassDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(classDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure ClassDefRepository.saveAll(...).
+        final ClassDef classDef = new ClassDef();
+        classDef.setId("id");
+        classDef.setGroupCode("groupCode");
+        classDef.setCode("code");
+        classDef.setObjType(ObjType.project);
+        classDef.setName("name");
+        classDef.setAliasCode("aliasCode");
+        classDef.setAliasName("aliasName");
+        classDef.setType("type");
+        classDef.setProjectId("projectId");
+        classDef.setMajorCode("majorCode");
+        final List<ClassDef> classDefs = Arrays.asList(classDef);
+        when(classDefChangeRecordServiceUnderTest.classDefRepository.saveAll(Arrays.asList(new ClassDef()))).thenReturn(classDefs);
+
+        when(classDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new ClassDefChangeRecord()))).thenReturn(Collections.emptyList());
+
+        // Run the test
+        classDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+}

+ 52 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/ClassDefServiceTest.java

@@ -0,0 +1,52 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QClassDef;
+import com.persagy.dmp.rwd.model.ClassDefModel;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class ClassDefServiceTest {
+
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+
+    @InjectMocks
+    private ClassDefService classDefServiceUnderTest;
+
+    @Test
+    void testQueryClass() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QClassDef("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final ListResponse<ClassDefModel> result = classDefServiceUnderTest.queryClass(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QClassDef("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<ClassDefModel> result = classDefServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+}

+ 39 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/DtDataServiceTest.java

@@ -0,0 +1,39 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QDtData;
+import com.persagy.dmp.rwd.edit.model.DtDataModel;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class DtDataServiceTest {
+
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+
+    @InjectMocks
+    private DtDataService dtDataServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QDtData("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<DtDataModel> result = dtDataServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+}

+ 425 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/FuncidDefChangeRecordServiceTest.java

@@ -0,0 +1,425 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.FuncidDef;
+import com.persagy.dmp.rwd.edit.entity.FuncidDefChangeRecord;
+import com.persagy.dmp.rwd.edit.entity.QFuncidDefChangeRecord;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
+import com.persagy.dmp.rwd.edit.repository.FuncidDefChangeRecordRepository;
+import com.persagy.dmp.rwd.edit.repository.FuncidDefRepository;
+import com.persagy.dmp.rwd.enums.FuncidCategory;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.*;
+
+class FuncidDefChangeRecordServiceTest {
+
+    private FuncidDefChangeRecordService funcidDefChangeRecordServiceUnderTest;
+
+    @BeforeEach
+    void setUp() {
+        funcidDefChangeRecordServiceUnderTest = new FuncidDefChangeRecordService();
+        funcidDefChangeRecordServiceUnderTest.repository = mock(FuncidDefChangeRecordRepository.class);
+        funcidDefChangeRecordServiceUnderTest.funcidDefService = mock(FuncidDefService.class);
+        funcidDefChangeRecordServiceUnderTest.classDefService = mock(ClassDefService.class);
+        funcidDefChangeRecordServiceUnderTest.rwdeditRefTypeInfosService = mock(RwdeditRefTypeInfosService.class);
+        funcidDefChangeRecordServiceUnderTest.criteriaUtils = mock(CriteriaUtils.class);
+        funcidDefChangeRecordServiceUnderTest.funcidDefRepository = mock(FuncidDefRepository.class);
+    }
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(funcidDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QFuncidDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<FuncidDefChangeRecord> result = funcidDefChangeRecordServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure FuncidDefChangeRecordRepository.findAll(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+        funcidDefChangeRecord.setId(0);
+        funcidDefChangeRecord.setCode("code");
+        funcidDefChangeRecord.setGroupCode("groupCode");
+        funcidDefChangeRecord.setProjectId("projectId");
+        funcidDefChangeRecord.setOrigCode("origCode");
+        funcidDefChangeRecord.setName("name");
+        funcidDefChangeRecord.setAliasCode("aliasCode");
+        funcidDefChangeRecord.setAliasName("aliasName");
+        funcidDefChangeRecord.setClassCode("classCode");
+        funcidDefChangeRecord.setCategory(FuncidCategory.STATIC);
+        final List<FuncidDefChangeRecord> funcidDefChangeRecords = Arrays.asList(funcidDefChangeRecord);
+        when(funcidDefChangeRecordServiceUnderTest.repository.findAll()).thenReturn(funcidDefChangeRecords);
+
+        // Configure FuncidDefChangeRecordRepository.save(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord1 = new FuncidDefChangeRecord();
+        funcidDefChangeRecord1.setId(0);
+        funcidDefChangeRecord1.setCode("code");
+        funcidDefChangeRecord1.setGroupCode("groupCode");
+        funcidDefChangeRecord1.setProjectId("projectId");
+        funcidDefChangeRecord1.setOrigCode("origCode");
+        funcidDefChangeRecord1.setName("name");
+        funcidDefChangeRecord1.setAliasCode("aliasCode");
+        funcidDefChangeRecord1.setAliasName("aliasName");
+        funcidDefChangeRecord1.setClassCode("classCode");
+        funcidDefChangeRecord1.setCategory(FuncidCategory.STATIC);
+        when(funcidDefChangeRecordServiceUnderTest.repository.save(any(FuncidDefChangeRecord.class))).thenReturn(funcidDefChangeRecord1);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.create(param);
+
+        // Verify the results
+        verify(funcidDefChangeRecordServiceUnderTest.repository).deleteAll(Arrays.asList(new FuncidDefChangeRecord()));
+    }
+
+    @Test
+    void testCreate_FuncidDefChangeRecordRepositoryFindAllReturnsNoItems() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.repository.findAll()).thenReturn(Collections.emptyList());
+
+        // Configure FuncidDefChangeRecordRepository.save(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+        funcidDefChangeRecord.setId(0);
+        funcidDefChangeRecord.setCode("code");
+        funcidDefChangeRecord.setGroupCode("groupCode");
+        funcidDefChangeRecord.setProjectId("projectId");
+        funcidDefChangeRecord.setOrigCode("origCode");
+        funcidDefChangeRecord.setName("name");
+        funcidDefChangeRecord.setAliasCode("aliasCode");
+        funcidDefChangeRecord.setAliasName("aliasName");
+        funcidDefChangeRecord.setClassCode("classCode");
+        funcidDefChangeRecord.setCategory(FuncidCategory.STATIC);
+        when(funcidDefChangeRecordServiceUnderTest.repository.save(any(FuncidDefChangeRecord.class))).thenReturn(funcidDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.create(param);
+
+        // Verify the results
+        verify(funcidDefChangeRecordServiceUnderTest.repository).deleteAll(Arrays.asList(new FuncidDefChangeRecord()));
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        // Configure FuncidDefChangeRecordRepository.findById(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord1 = new FuncidDefChangeRecord();
+        funcidDefChangeRecord1.setId(0);
+        funcidDefChangeRecord1.setCode("code");
+        funcidDefChangeRecord1.setGroupCode("groupCode");
+        funcidDefChangeRecord1.setProjectId("projectId");
+        funcidDefChangeRecord1.setOrigCode("origCode");
+        funcidDefChangeRecord1.setName("name");
+        funcidDefChangeRecord1.setAliasCode("aliasCode");
+        funcidDefChangeRecord1.setAliasName("aliasName");
+        funcidDefChangeRecord1.setClassCode("classCode");
+        funcidDefChangeRecord1.setCategory(FuncidCategory.STATIC);
+        final Optional<FuncidDefChangeRecord> funcidDefChangeRecord = Optional.of(funcidDefChangeRecord1);
+        when(funcidDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(funcidDefChangeRecord);
+
+        // Configure FuncidDefChangeRecordRepository.save(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord2 = new FuncidDefChangeRecord();
+        funcidDefChangeRecord2.setId(0);
+        funcidDefChangeRecord2.setCode("code");
+        funcidDefChangeRecord2.setGroupCode("groupCode");
+        funcidDefChangeRecord2.setProjectId("projectId");
+        funcidDefChangeRecord2.setOrigCode("origCode");
+        funcidDefChangeRecord2.setName("name");
+        funcidDefChangeRecord2.setAliasCode("aliasCode");
+        funcidDefChangeRecord2.setAliasName("aliasName");
+        funcidDefChangeRecord2.setClassCode("classCode");
+        funcidDefChangeRecord2.setCategory(FuncidCategory.STATIC);
+        when(funcidDefChangeRecordServiceUnderTest.repository.save(any(FuncidDefChangeRecord.class))).thenReturn(funcidDefChangeRecord2);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_FuncidDefChangeRecordRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        when(funcidDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(Optional.empty());
+
+        // Configure FuncidDefChangeRecordRepository.save(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+        funcidDefChangeRecord.setId(0);
+        funcidDefChangeRecord.setCode("code");
+        funcidDefChangeRecord.setGroupCode("groupCode");
+        funcidDefChangeRecord.setProjectId("projectId");
+        funcidDefChangeRecord.setOrigCode("origCode");
+        funcidDefChangeRecord.setName("name");
+        funcidDefChangeRecord.setAliasCode("aliasCode");
+        funcidDefChangeRecord.setAliasName("aliasName");
+        funcidDefChangeRecord.setClassCode("classCode");
+        funcidDefChangeRecord.setCategory(FuncidCategory.STATIC);
+        when(funcidDefChangeRecordServiceUnderTest.repository.save(any(FuncidDefChangeRecord.class))).thenReturn(funcidDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testAddVersion() {
+        // Setup
+        when(funcidDefChangeRecordServiceUnderTest.repository.addVersion("version", Arrays.asList(0))).thenReturn(0);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.addVersion("version", Arrays.asList(0));
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        // Configure FuncidDefChangeRecordRepository.findById(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord1 = new FuncidDefChangeRecord();
+        funcidDefChangeRecord1.setId(0);
+        funcidDefChangeRecord1.setCode("code");
+        funcidDefChangeRecord1.setGroupCode("groupCode");
+        funcidDefChangeRecord1.setProjectId("projectId");
+        funcidDefChangeRecord1.setOrigCode("origCode");
+        funcidDefChangeRecord1.setName("name");
+        funcidDefChangeRecord1.setAliasCode("aliasCode");
+        funcidDefChangeRecord1.setAliasName("aliasName");
+        funcidDefChangeRecord1.setClassCode("classCode");
+        funcidDefChangeRecord1.setCategory(FuncidCategory.STATIC);
+        final Optional<FuncidDefChangeRecord> funcidDefChangeRecord = Optional.of(funcidDefChangeRecord1);
+        when(funcidDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(funcidDefChangeRecord);
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(funcidDefChangeRecordServiceUnderTest.repository).delete(any(FuncidDefChangeRecord.class));
+    }
+
+    @Test
+    void testDelete_FuncidDefChangeRecordRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final FuncidDefChangeRecord param = new FuncidDefChangeRecord();
+        param.setId(0);
+        param.setCode("code");
+        param.setGroupCode("groupCode");
+        param.setProjectId("projectId");
+        param.setOrigCode("origCode");
+        param.setName("name");
+        param.setAliasCode("aliasCode");
+        param.setAliasName("aliasName");
+        param.setClassCode("classCode");
+        param.setCategory(FuncidCategory.STATIC);
+
+        when(funcidDefChangeRecordServiceUnderTest.repository.findById(0)).thenReturn(Optional.empty());
+
+        // Run the test
+        final MapResponse result = funcidDefChangeRecordServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(funcidDefChangeRecordServiceUnderTest.repository).delete(any(FuncidDefChangeRecord.class));
+    }
+
+    @Test
+    void testGetSqlList() {
+        // Setup
+        when(funcidDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QFuncidDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.rwdeditRefTypeInfosService.query(any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final List<String> result = funcidDefChangeRecordServiceUnderTest.getSqlList("version", false);
+
+        // Verify the results
+        assertThat(result).isEqualTo(Arrays.asList("value"));
+    }
+
+    @Test
+    void testUpdateStateByVersion() {
+        // Setup
+        when(funcidDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QFuncidDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure FuncidDefRepository.saveAll(...).
+        final FuncidDef funcidDef = new FuncidDef();
+        funcidDef.setId("id");
+        funcidDef.setGroupCode("groupCode");
+        funcidDef.setProjectId("projectId");
+        funcidDef.setCode("code");
+        funcidDef.setOrigCode("origCode");
+        funcidDef.setName("name");
+        funcidDef.setAliasCode("aliasCode");
+        funcidDef.setAliasName("aliasName");
+        funcidDef.setClassCode("classCode");
+        funcidDef.setCategory(FuncidCategory.STATIC);
+        final List<FuncidDef> funcidDefs = Arrays.asList(funcidDef);
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefRepository.saveAll(Arrays.asList(new FuncidDef()))).thenReturn(funcidDefs);
+
+        // Configure FuncidDefChangeRecordRepository.saveAll(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+        funcidDefChangeRecord.setId(0);
+        funcidDefChangeRecord.setCode("code");
+        funcidDefChangeRecord.setGroupCode("groupCode");
+        funcidDefChangeRecord.setProjectId("projectId");
+        funcidDefChangeRecord.setOrigCode("origCode");
+        funcidDefChangeRecord.setName("name");
+        funcidDefChangeRecord.setAliasCode("aliasCode");
+        funcidDefChangeRecord.setAliasName("aliasName");
+        funcidDefChangeRecord.setClassCode("classCode");
+        funcidDefChangeRecord.setCategory(FuncidCategory.STATIC);
+        final List<FuncidDefChangeRecord> funcidDefChangeRecords = Arrays.asList(funcidDefChangeRecord);
+        when(funcidDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new FuncidDefChangeRecord()))).thenReturn(funcidDefChangeRecords);
+
+        // Run the test
+        funcidDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdateStateByVersion_FuncidDefRepositoryReturnsNoItems() {
+        // Setup
+        when(funcidDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QFuncidDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefRepository.saveAll(Arrays.asList(new FuncidDef()))).thenReturn(Collections.emptyList());
+
+        // Configure FuncidDefChangeRecordRepository.saveAll(...).
+        final FuncidDefChangeRecord funcidDefChangeRecord = new FuncidDefChangeRecord();
+        funcidDefChangeRecord.setId(0);
+        funcidDefChangeRecord.setCode("code");
+        funcidDefChangeRecord.setGroupCode("groupCode");
+        funcidDefChangeRecord.setProjectId("projectId");
+        funcidDefChangeRecord.setOrigCode("origCode");
+        funcidDefChangeRecord.setName("name");
+        funcidDefChangeRecord.setAliasCode("aliasCode");
+        funcidDefChangeRecord.setAliasName("aliasName");
+        funcidDefChangeRecord.setClassCode("classCode");
+        funcidDefChangeRecord.setCategory(FuncidCategory.STATIC);
+        final List<FuncidDefChangeRecord> funcidDefChangeRecords = Arrays.asList(funcidDefChangeRecord);
+        when(funcidDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new FuncidDefChangeRecord()))).thenReturn(funcidDefChangeRecords);
+
+        // Run the test
+        funcidDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdateStateByVersion_FuncidDefChangeRecordRepositoryReturnsNoItems() {
+        // Setup
+        when(funcidDefChangeRecordServiceUnderTest.criteriaUtils.query(eq(new QFuncidDefChangeRecord("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.classDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefService.queryFuncid(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+
+        // Configure FuncidDefRepository.saveAll(...).
+        final FuncidDef funcidDef = new FuncidDef();
+        funcidDef.setId("id");
+        funcidDef.setGroupCode("groupCode");
+        funcidDef.setProjectId("projectId");
+        funcidDef.setCode("code");
+        funcidDef.setOrigCode("origCode");
+        funcidDef.setName("name");
+        funcidDef.setAliasCode("aliasCode");
+        funcidDef.setAliasName("aliasName");
+        funcidDef.setClassCode("classCode");
+        funcidDef.setCategory(FuncidCategory.STATIC);
+        final List<FuncidDef> funcidDefs = Arrays.asList(funcidDef);
+        when(funcidDefChangeRecordServiceUnderTest.funcidDefRepository.saveAll(Arrays.asList(new FuncidDef()))).thenReturn(funcidDefs);
+
+        when(funcidDefChangeRecordServiceUnderTest.repository.saveAll(Arrays.asList(new FuncidDefChangeRecord()))).thenReturn(Collections.emptyList());
+
+        // Run the test
+        funcidDefChangeRecordServiceUnderTest.updateStateByVersion(EnumVersionState.CANCEL, "version");
+
+        // Verify the results
+    }
+}

+ 61 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/FuncidDefServiceTest.java

@@ -0,0 +1,61 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.ListResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QFuncidDef;
+import com.persagy.dmp.rwd.edit.util.ClassCodeUtils;
+import com.persagy.dmp.rwd.model.FuncidDefModel;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class FuncidDefServiceTest {
+
+    @Mock
+    private ClassDefService mockClassDefService;
+    @Mock
+    private ClassCodeUtils mockClassCodeUtils;
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+
+    @InjectMocks
+    private FuncidDefService funcidDefServiceUnderTest;
+
+    @Test
+    void testQueryFuncid() {
+        // Setup
+        final JacksonCriteria request = JacksonCriteria.newInstance();
+        when(mockClassDefService.queryClass(any(JacksonCriteria.class))).thenReturn(new ListResponse<>());
+        when(mockCriteriaUtils.query(eq(new QFuncidDef("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final ListResponse<FuncidDefModel> result = funcidDefServiceUnderTest.queryFuncid(request);
+
+        // Verify the results
+        verify(mockClassCodeUtils).prepareCriteriaForFuncid(any(JacksonCriteria.class), eq("codeName"));
+    }
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QFuncidDef("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<FuncidDefModel> result = funcidDefServiceUnderTest.query(criteria);
+
+        // Verify the results
+        verify(mockClassCodeUtils).prepareCriteriaForFuncid(any(JacksonCriteria.class), eq("codeName"));
+    }
+}

+ 142 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeInfosServiceTest.java

@@ -0,0 +1,142 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QRwdeditRefTypeInfos;
+import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
+import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeInfosRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class RwdeditRefTypeInfosServiceTest {
+
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+    @Mock
+    private RwdeditRefTypeInfosRepository mockRepository;
+
+    @InjectMocks
+    private RwdeditRefTypeInfosService rwdeditRefTypeInfosServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QRwdeditRefTypeInfos("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<RwdeditRefTypeInfos> result = rwdeditRefTypeInfosServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final RwdeditRefTypeInfos refTypeInfos = new RwdeditRefTypeInfos();
+        refTypeInfos.setRefKey("refKey");
+        refTypeInfos.setCode("code");
+        refTypeInfos.setName("name");
+        refTypeInfos.setParentCode("parentCode");
+        refTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        refTypeInfos.setCreateUser(0);
+        refTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        refTypeInfos.setUpdateUser(0);
+        refTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+
+        when(mockCriteriaUtils.query(eq(new QRwdeditRefTypeInfos("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Configure RwdeditRefTypeInfosRepository.save(...).
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        when(mockRepository.save(any(RwdeditRefTypeInfos.class))).thenReturn(rwdeditRefTypeInfos);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeInfosServiceUnderTest.create(refTypeInfos);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final RwdeditRefTypeInfos refTypeInfos = new RwdeditRefTypeInfos();
+        refTypeInfos.setRefKey("refKey");
+        refTypeInfos.setCode("code");
+        refTypeInfos.setName("name");
+        refTypeInfos.setParentCode("parentCode");
+        refTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        refTypeInfos.setCreateUser(0);
+        refTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        refTypeInfos.setUpdateUser(0);
+        refTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+
+        when(mockCriteriaUtils.query(eq(new QRwdeditRefTypeInfos("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Configure RwdeditRefTypeInfosRepository.save(...).
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        when(mockRepository.save(any(RwdeditRefTypeInfos.class))).thenReturn(rwdeditRefTypeInfos);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeInfosServiceUnderTest.update(refTypeInfos);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final RwdeditRefTypeInfos refTypeInfos = new RwdeditRefTypeInfos();
+        refTypeInfos.setRefKey("refKey");
+        refTypeInfos.setCode("code");
+        refTypeInfos.setName("name");
+        refTypeInfos.setParentCode("parentCode");
+        refTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        refTypeInfos.setCreateUser(0);
+        refTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        refTypeInfos.setUpdateUser(0);
+        refTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+
+        when(mockCriteriaUtils.query(eq(new QRwdeditRefTypeInfos("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeInfosServiceUnderTest.delete(refTypeInfos);
+
+        // Verify the results
+        verify(mockRepository).delete(any(RwdeditRefTypeInfos.class));
+    }
+}

+ 348 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditRefTypeServiceTest.java

@@ -0,0 +1,348 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QRwdeditRefType;
+import com.persagy.dmp.rwd.edit.entity.RwdeditRefType;
+import com.persagy.dmp.rwd.edit.entity.RwdeditRefTypeInfos;
+import com.persagy.dmp.rwd.edit.model.RwdeditRefTypeModel;
+import com.persagy.dmp.rwd.edit.repository.RwdeditRefTypeRepository;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Optional;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class RwdeditRefTypeServiceTest {
+
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+    @Mock
+    private RwdeditRefTypeRepository mockRepository;
+
+    @InjectMocks
+    private RwdeditRefTypeService rwdeditRefTypeServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QRwdeditRefType("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<RwdeditRefTypeModel> result = rwdeditRefTypeServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final RwdeditRefTypeModel param = new RwdeditRefTypeModel();
+        param.setRefKey("refKey");
+        param.setName("name");
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setSeq(0);
+        param.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setInfos(Arrays.asList(rwdeditRefTypeInfos));
+
+        // Configure RwdeditRefTypeRepository.findById(...).
+        final RwdeditRefType rwdeditRefType1 = new RwdeditRefType();
+        rwdeditRefType1.setRefKey("refKey");
+        rwdeditRefType1.setName("name");
+        rwdeditRefType1.setCreateUser(0);
+        rwdeditRefType1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setUpdateUser(0);
+        rwdeditRefType1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setSeq(0);
+        rwdeditRefType1.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos1 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos1.setRefKey("refKey");
+        rwdeditRefTypeInfos1.setCode("code");
+        rwdeditRefTypeInfos1.setName("name");
+        rwdeditRefTypeInfos1.setParentCode("parentCode");
+        rwdeditRefTypeInfos1.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos1.setCreateUser(0);
+        rwdeditRefTypeInfos1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos1.setUpdateUser(0);
+        rwdeditRefTypeInfos1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setInfos(Arrays.asList(rwdeditRefTypeInfos1));
+        final Optional<RwdeditRefType> rwdeditRefType = Optional.of(rwdeditRefType1);
+        when(mockRepository.findById("id")).thenReturn(rwdeditRefType);
+
+        // Configure RwdeditRefTypeRepository.save(...).
+        final RwdeditRefType rwdeditRefType2 = new RwdeditRefType();
+        rwdeditRefType2.setRefKey("refKey");
+        rwdeditRefType2.setName("name");
+        rwdeditRefType2.setCreateUser(0);
+        rwdeditRefType2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setUpdateUser(0);
+        rwdeditRefType2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setSeq(0);
+        rwdeditRefType2.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos2 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos2.setRefKey("refKey");
+        rwdeditRefTypeInfos2.setCode("code");
+        rwdeditRefTypeInfos2.setName("name");
+        rwdeditRefTypeInfos2.setParentCode("parentCode");
+        rwdeditRefTypeInfos2.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos2.setCreateUser(0);
+        rwdeditRefTypeInfos2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos2.setUpdateUser(0);
+        rwdeditRefTypeInfos2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setInfos(Arrays.asList(rwdeditRefTypeInfos2));
+        when(mockRepository.save(any(RwdeditRefType.class))).thenReturn(rwdeditRefType2);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeServiceUnderTest.create(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate_RwdeditRefTypeRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final RwdeditRefTypeModel param = new RwdeditRefTypeModel();
+        param.setRefKey("refKey");
+        param.setName("name");
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setSeq(0);
+        param.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setInfos(Arrays.asList(rwdeditRefTypeInfos));
+
+        when(mockRepository.findById("id")).thenReturn(Optional.empty());
+
+        // Configure RwdeditRefTypeRepository.save(...).
+        final RwdeditRefType rwdeditRefType = new RwdeditRefType();
+        rwdeditRefType.setRefKey("refKey");
+        rwdeditRefType.setName("name");
+        rwdeditRefType.setCreateUser(0);
+        rwdeditRefType.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setUpdateUser(0);
+        rwdeditRefType.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setSeq(0);
+        rwdeditRefType.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos1 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos1.setRefKey("refKey");
+        rwdeditRefTypeInfos1.setCode("code");
+        rwdeditRefTypeInfos1.setName("name");
+        rwdeditRefTypeInfos1.setParentCode("parentCode");
+        rwdeditRefTypeInfos1.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos1.setCreateUser(0);
+        rwdeditRefTypeInfos1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos1.setUpdateUser(0);
+        rwdeditRefTypeInfos1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setInfos(Arrays.asList(rwdeditRefTypeInfos1));
+        when(mockRepository.save(any(RwdeditRefType.class))).thenReturn(rwdeditRefType);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeServiceUnderTest.create(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final RwdeditRefTypeModel param = new RwdeditRefTypeModel();
+        param.setRefKey("refKey");
+        param.setName("name");
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setSeq(0);
+        param.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setInfos(Arrays.asList(rwdeditRefTypeInfos));
+
+        // Configure RwdeditRefTypeRepository.findById(...).
+        final RwdeditRefType rwdeditRefType1 = new RwdeditRefType();
+        rwdeditRefType1.setRefKey("refKey");
+        rwdeditRefType1.setName("name");
+        rwdeditRefType1.setCreateUser(0);
+        rwdeditRefType1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setUpdateUser(0);
+        rwdeditRefType1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setSeq(0);
+        rwdeditRefType1.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos1 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos1.setRefKey("refKey");
+        rwdeditRefTypeInfos1.setCode("code");
+        rwdeditRefTypeInfos1.setName("name");
+        rwdeditRefTypeInfos1.setParentCode("parentCode");
+        rwdeditRefTypeInfos1.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos1.setCreateUser(0);
+        rwdeditRefTypeInfos1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos1.setUpdateUser(0);
+        rwdeditRefTypeInfos1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType1.setInfos(Arrays.asList(rwdeditRefTypeInfos1));
+        final Optional<RwdeditRefType> rwdeditRefType = Optional.of(rwdeditRefType1);
+        when(mockRepository.findById("id")).thenReturn(rwdeditRefType);
+
+        // Configure RwdeditRefTypeRepository.save(...).
+        final RwdeditRefType rwdeditRefType2 = new RwdeditRefType();
+        rwdeditRefType2.setRefKey("refKey");
+        rwdeditRefType2.setName("name");
+        rwdeditRefType2.setCreateUser(0);
+        rwdeditRefType2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setUpdateUser(0);
+        rwdeditRefType2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setSeq(0);
+        rwdeditRefType2.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos2 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos2.setRefKey("refKey");
+        rwdeditRefTypeInfos2.setCode("code");
+        rwdeditRefTypeInfos2.setName("name");
+        rwdeditRefTypeInfos2.setParentCode("parentCode");
+        rwdeditRefTypeInfos2.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos2.setCreateUser(0);
+        rwdeditRefTypeInfos2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos2.setUpdateUser(0);
+        rwdeditRefTypeInfos2.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType2.setInfos(Arrays.asList(rwdeditRefTypeInfos2));
+        when(mockRepository.save(any(RwdeditRefType.class))).thenReturn(rwdeditRefType2);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate_RwdeditRefTypeRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final RwdeditRefTypeModel param = new RwdeditRefTypeModel();
+        param.setRefKey("refKey");
+        param.setName("name");
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setSeq(0);
+        param.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setInfos(Arrays.asList(rwdeditRefTypeInfos));
+
+        when(mockRepository.findById("id")).thenReturn(Optional.empty());
+
+        // Configure RwdeditRefTypeRepository.save(...).
+        final RwdeditRefType rwdeditRefType = new RwdeditRefType();
+        rwdeditRefType.setRefKey("refKey");
+        rwdeditRefType.setName("name");
+        rwdeditRefType.setCreateUser(0);
+        rwdeditRefType.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setUpdateUser(0);
+        rwdeditRefType.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setSeq(0);
+        rwdeditRefType.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos1 = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos1.setRefKey("refKey");
+        rwdeditRefTypeInfos1.setCode("code");
+        rwdeditRefTypeInfos1.setName("name");
+        rwdeditRefTypeInfos1.setParentCode("parentCode");
+        rwdeditRefTypeInfos1.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos1.setCreateUser(0);
+        rwdeditRefTypeInfos1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos1.setUpdateUser(0);
+        rwdeditRefTypeInfos1.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefType.setInfos(Arrays.asList(rwdeditRefTypeInfos1));
+        when(mockRepository.save(any(RwdeditRefType.class))).thenReturn(rwdeditRefType);
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeServiceUnderTest.update(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final RwdeditRefTypeModel param = new RwdeditRefTypeModel();
+        param.setRefKey("refKey");
+        param.setName("name");
+        param.setCreateUser(0);
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setUpdateUser(0);
+        param.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setSeq(0);
+        param.setShowPosition(0);
+        final RwdeditRefTypeInfos rwdeditRefTypeInfos = new RwdeditRefTypeInfos();
+        rwdeditRefTypeInfos.setRefKey("refKey");
+        rwdeditRefTypeInfos.setCode("code");
+        rwdeditRefTypeInfos.setName("name");
+        rwdeditRefTypeInfos.setParentCode("parentCode");
+        rwdeditRefTypeInfos.setDataSource(new ObjectNode(new JsonNodeFactory(false)));
+        rwdeditRefTypeInfos.setCreateUser(0);
+        rwdeditRefTypeInfos.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditRefTypeInfos.setUpdateUser(0);
+        rwdeditRefTypeInfos.setUpdateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setInfos(Arrays.asList(rwdeditRefTypeInfos));
+
+        // Run the test
+        final MapResponse result = rwdeditRefTypeServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(mockRepository).deleteById("id");
+    }
+}

+ 277 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/RwdeditVersionServiceTest.java

@@ -0,0 +1,277 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.criteria.CriteriaExpressionParser;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.QClassDef;
+import com.persagy.dmp.rwd.edit.entity.QRwdeditVersion;
+import com.persagy.dmp.rwd.edit.entity.RwdeditVersion;
+import com.persagy.dmp.rwd.edit.enumeration.EnumVersionState;
+import com.persagy.dmp.rwd.edit.repository.RwdeditVersionRepository;
+import com.querydsl.jpa.impl.JPAQuery;
+import com.querydsl.jpa.impl.JPAQueryFactory;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.*;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class RwdeditVersionServiceTest {
+
+    @Mock
+    private JPAQueryFactory mockQueryFactory;
+    @Mock
+    private CriteriaUtils mockCriteriaUtils;
+    @Mock
+    private RwdeditVersionRepository mockRepository;
+    @Mock
+    private ClassDefChangeRecordService mockClassDefChangeRecordService;
+    @Mock
+    private FuncidDefChangeRecordService mockFuncidDefChangeRecordService;
+
+    @InjectMocks
+    private RwdeditVersionService rwdeditVersionServiceUnderTest;
+
+    @Test
+    void testQuery() {
+        // Setup
+        final JacksonCriteria criteria = JacksonCriteria.newInstance();
+        when(mockCriteriaUtils.query(eq(new QRwdeditVersion("variable")), any(CriteriaExpressionParser.class), any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final PagedResponse<RwdeditVersion> result = rwdeditVersionServiceUnderTest.query(criteria);
+
+        // Verify the results
+    }
+
+    @Test
+    void testCreate() {
+        // Setup
+        final RwdeditVersion param = new RwdeditVersion();
+        param.setVersion("version");
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setCreateUser("createUser");
+        param.setState(EnumVersionState.CANCEL);
+
+        when(mockRepository.count()).thenReturn(0L);
+
+        // Configure RwdeditVersionRepository.save(...).
+        final RwdeditVersion rwdeditVersion = new RwdeditVersion();
+        rwdeditVersion.setVersion("version");
+        rwdeditVersion.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditVersion.setCreateUser("createUser");
+        rwdeditVersion.setState(EnumVersionState.CANCEL);
+        when(mockRepository.save(any(RwdeditVersion.class))).thenReturn(rwdeditVersion);
+
+        // Run the test
+        final MapResponse result = rwdeditVersionServiceUnderTest.create(param);
+
+        // Verify the results
+    }
+
+    @Test
+    void testUpdate() {
+        // Setup
+        final RwdeditVersion param = new RwdeditVersion();
+        param.setVersion("version");
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setCreateUser("createUser");
+        param.setState(EnumVersionState.CANCEL);
+
+        // Configure RwdeditVersionRepository.findById(...).
+        final RwdeditVersion rwdeditVersion1 = new RwdeditVersion();
+        rwdeditVersion1.setVersion("version");
+        rwdeditVersion1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditVersion1.setCreateUser("createUser");
+        rwdeditVersion1.setState(EnumVersionState.CANCEL);
+        final Optional<RwdeditVersion> rwdeditVersion = Optional.of(rwdeditVersion1);
+        when(mockRepository.findById("id")).thenReturn(rwdeditVersion);
+
+        // Configure RwdeditVersionRepository.save(...).
+        final RwdeditVersion rwdeditVersion2 = new RwdeditVersion();
+        rwdeditVersion2.setVersion("version");
+        rwdeditVersion2.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditVersion2.setCreateUser("createUser");
+        rwdeditVersion2.setState(EnumVersionState.CANCEL);
+        when(mockRepository.save(any(RwdeditVersion.class))).thenReturn(rwdeditVersion2);
+
+        // Run the test
+        final MapResponse result = rwdeditVersionServiceUnderTest.update(param);
+
+        // Verify the results
+        verify(mockClassDefChangeRecordService).updateStateByVersion(EnumVersionState.CANCEL, "version");
+        verify(mockFuncidDefChangeRecordService).updateStateByVersion(EnumVersionState.CANCEL, "version");
+    }
+
+    @Test
+    void testUpdate_RwdeditVersionRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final RwdeditVersion param = new RwdeditVersion();
+        param.setVersion("version");
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setCreateUser("createUser");
+        param.setState(EnumVersionState.CANCEL);
+
+        when(mockRepository.findById("id")).thenReturn(Optional.empty());
+
+        // Configure RwdeditVersionRepository.save(...).
+        final RwdeditVersion rwdeditVersion = new RwdeditVersion();
+        rwdeditVersion.setVersion("version");
+        rwdeditVersion.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditVersion.setCreateUser("createUser");
+        rwdeditVersion.setState(EnumVersionState.CANCEL);
+        when(mockRepository.save(any(RwdeditVersion.class))).thenReturn(rwdeditVersion);
+
+        // Run the test
+        final MapResponse result = rwdeditVersionServiceUnderTest.update(param);
+
+        // Verify the results
+        verify(mockClassDefChangeRecordService).updateStateByVersion(EnumVersionState.CANCEL, "version");
+        verify(mockFuncidDefChangeRecordService).updateStateByVersion(EnumVersionState.CANCEL, "version");
+    }
+
+    @Test
+    void testDelete() {
+        // Setup
+        final RwdeditVersion param = new RwdeditVersion();
+        param.setVersion("version");
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setCreateUser("createUser");
+        param.setState(EnumVersionState.CANCEL);
+
+        // Configure RwdeditVersionRepository.findById(...).
+        final RwdeditVersion rwdeditVersion1 = new RwdeditVersion();
+        rwdeditVersion1.setVersion("version");
+        rwdeditVersion1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        rwdeditVersion1.setCreateUser("createUser");
+        rwdeditVersion1.setState(EnumVersionState.CANCEL);
+        final Optional<RwdeditVersion> rwdeditVersion = Optional.of(rwdeditVersion1);
+        when(mockRepository.findById("id")).thenReturn(rwdeditVersion);
+
+        when(mockClassDefChangeRecordService.query(any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(mockFuncidDefChangeRecordService.query(any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final MapResponse result = rwdeditVersionServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(mockRepository).delete(any(RwdeditVersion.class));
+    }
+
+    @Test
+    void testDelete_RwdeditVersionRepositoryFindByIdReturnsAbsent() {
+        // Setup
+        final RwdeditVersion param = new RwdeditVersion();
+        param.setVersion("version");
+        param.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        param.setCreateUser("createUser");
+        param.setState(EnumVersionState.CANCEL);
+
+        when(mockRepository.findById("id")).thenReturn(Optional.empty());
+        when(mockClassDefChangeRecordService.query(any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+        when(mockFuncidDefChangeRecordService.query(any(JacksonCriteria.class))).thenReturn(new PagedResponse<>());
+
+        // Run the test
+        final MapResponse result = rwdeditVersionServiceUnderTest.delete(param);
+
+        // Verify the results
+        verify(mockRepository).delete(any(RwdeditVersion.class));
+    }
+
+    @Test
+    void testDownload() {
+        // Setup
+        final HttpServletResponse resp = new MockHttpServletResponse();
+        when(mockClassDefChangeRecordService.getSqlList("version", false)).thenReturn(Arrays.asList("value"));
+        when(mockFuncidDefChangeRecordService.getSqlList("version", false)).thenReturn(Arrays.asList("value"));
+
+        // Run the test
+        rwdeditVersionServiceUnderTest.download(resp, "version", false);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDownload_ClassDefChangeRecordServiceReturnsNoItems() {
+        // Setup
+        final HttpServletResponse resp = new MockHttpServletResponse();
+        when(mockClassDefChangeRecordService.getSqlList("version", false)).thenReturn(Collections.emptyList());
+        when(mockFuncidDefChangeRecordService.getSqlList("version", false)).thenReturn(Arrays.asList("value"));
+
+        // Run the test
+        rwdeditVersionServiceUnderTest.download(resp, "version", false);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDownload_FuncidDefChangeRecordServiceReturnsNoItems() {
+        // Setup
+        final HttpServletResponse resp = new MockHttpServletResponse();
+        when(mockClassDefChangeRecordService.getSqlList("version", false)).thenReturn(Arrays.asList("value"));
+        when(mockFuncidDefChangeRecordService.getSqlList("version", false)).thenReturn(Collections.emptyList());
+
+        // Run the test
+        rwdeditVersionServiceUnderTest.download(resp, "version", false);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDownloadTotal() {
+        // Setup
+        final PrintWriter out = new PrintWriter(new StringWriter(), false);
+        when(mockQueryFactory.selectFrom(new QClassDef("variable"))).thenReturn(new JPAQuery<>());
+
+        // Run the test
+        rwdeditVersionServiceUnderTest.downloadTotal(out);
+
+        // Verify the results
+    }
+
+    @Test
+    void testDownloadTotal_BrokenOut() {
+        // Setup
+        final PrintWriter out = new PrintWriter(new Writer() {
+
+            private final IOException exception = new IOException("Error");
+
+            @Override
+            public void write(final char[] cbuf, final int off, final int len) throws IOException {
+                throw exception;
+            }
+
+            @Override
+            public void flush() throws IOException {
+                throw exception;
+            }
+
+            @Override
+            public void close() throws IOException {
+                throw exception;
+            }
+        }, false);
+        when(mockQueryFactory.selectFrom(new QClassDef("variable"))).thenReturn(new JPAQuery<>());
+
+        // Run the test
+        rwdeditVersionServiceUnderTest.downloadTotal(out);
+
+        // Verify the results
+    }
+}

+ 174 - 0
dmp-rwd-edit/src/test/java/com/persagy/dmp/rwd/edit/service/UserServiceTest.java

@@ -0,0 +1,174 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.persagy.common.web.MapResponse;
+import com.persagy.dmp.rwd.edit.config.shiro.UserModel;
+import com.persagy.dmp.rwd.edit.entity.AdminUser;
+import com.persagy.dmp.rwd.edit.repository.AdminPermissionRepository;
+import com.persagy.dmp.rwd.edit.repository.AdminUserRepository;
+import com.querydsl.core.BooleanBuilder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.data.redis.core.StringRedisTemplate;
+
+import java.util.*;
+
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class UserServiceTest {
+
+    @Mock
+    private AdminUserRepository mockUserRepository;
+    @Mock
+    private AdminPermissionRepository mockPermissionRepository;
+    @Mock
+    private StringRedisTemplate mockRedis;
+
+    @InjectMocks
+    private UserService userServiceUnderTest;
+
+    @Test
+    void testLogin() {
+        // Setup
+        final UserModel userModel = new UserModel();
+        userModel.setId(0);
+        userModel.setToken("token");
+        userModel.setUsername("username");
+        userModel.setPassword("password");
+        userModel.setPermissions(Arrays.asList("value"));
+
+        // Configure AdminUserRepository.findOne(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockUserRepository.findOne(new BooleanBuilder())).thenReturn(adminUser);
+
+        when(mockRedis.opsForValue()).thenReturn(null);
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.login(userModel);
+
+        // Verify the results
+    }
+
+    @Test
+    void testLogin_AdminUserRepositoryReturnsAbsent() {
+        // Setup
+        final UserModel userModel = new UserModel();
+        userModel.setId(0);
+        userModel.setToken("token");
+        userModel.setUsername("username");
+        userModel.setPassword("password");
+        userModel.setPermissions(Arrays.asList("value"));
+
+        when(mockUserRepository.findOne(new BooleanBuilder())).thenReturn(Optional.empty());
+        when(mockRedis.opsForValue()).thenReturn(null);
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.login(userModel);
+
+        // Verify the results
+    }
+
+    @Test
+    void testLogout() {
+        // Setup
+        when(mockRedis.opsForValue()).thenReturn(null);
+        when(mockRedis.delete("key")).thenReturn(false);
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.logout();
+
+        // Verify the results
+    }
+
+    @Test
+    void testLogout_StringRedisTemplateDeleteReturnsNull() {
+        // Setup
+        when(mockRedis.opsForValue()).thenReturn(null);
+        when(mockRedis.delete("key")).thenReturn(null);
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.logout();
+
+        // Verify the results
+    }
+
+    @Test
+    void testUserInfo() {
+        // Setup
+
+        // Configure AdminUserRepository.findOne(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockUserRepository.findOne(new BooleanBuilder())).thenReturn(adminUser);
+
+        when(mockPermissionRepository.queryForUser(0)).thenReturn(Arrays.asList("value"));
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.userInfo();
+
+        // Verify the results
+    }
+
+    @Test
+    void testUserInfo_AdminUserRepositoryReturnsAbsent() {
+        // Setup
+        when(mockUserRepository.findOne(new BooleanBuilder())).thenReturn(Optional.empty());
+        when(mockPermissionRepository.queryForUser(0)).thenReturn(Arrays.asList("value"));
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.userInfo();
+
+        // Verify the results
+    }
+
+    @Test
+    void testUserInfo_AdminPermissionRepositoryReturnsNoItems() {
+        // Setup
+
+        // Configure AdminUserRepository.findOne(...).
+        final AdminUser adminUser1 = new AdminUser();
+        adminUser1.setId(0);
+        adminUser1.setUsername("username");
+        adminUser1.setPassword("password");
+        adminUser1.setRealname("realname");
+        adminUser1.setPhone("phone");
+        adminUser1.setRemark("remark");
+        adminUser1.setStatus(0);
+        adminUser1.setCreateUser(0);
+        adminUser1.setCreateTime(new GregorianCalendar(2020, Calendar.JANUARY, 1).getTime());
+        adminUser1.setUpdateUser(0);
+        final Optional<AdminUser> adminUser = Optional.of(adminUser1);
+        when(mockUserRepository.findOne(new BooleanBuilder())).thenReturn(adminUser);
+
+        when(mockPermissionRepository.queryForUser(0)).thenReturn(Collections.emptyList());
+
+        // Run the test
+        final MapResponse result = userServiceUnderTest.userInfo();
+
+        // Verify the results
+    }
+}

+ 5 - 0
dmp-rwd/pom.xml

@@ -114,6 +114,11 @@
                 </exclusion>
             </exclusions>-->
         </dependency>
+        <!--<dependency>
+            <groupId>com.persagy</groupId>
+            <artifactId>fm-package</artifactId>
+            <type>pom</type>
+        </dependency>-->
     </dependencies>
 
     <build>

+ 4 - 1
dmp-rwd/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,10 @@ spring:
     config:
       profile: dev2
       uri: http://192.168.64.18:9932
+      allowOverride: true
+      overrideNone: true
+      overrideSystemProperties: false
 eureka:
   client:
     fetch-registry: true
-    register-with-eureka: false
+    register-with-eureka: false

+ 28 - 0
pom.xml

@@ -35,6 +35,7 @@
         <springcloud.version>Hoxton.SR1</springcloud.version>
         <springboot-admin.version>2.2.1</springboot-admin.version>
         <querydsl.version>4.2.2</querydsl.version>
+        <fm.version>3.0.0</fm.version>
     </properties>
 
     <dependencyManagement>
@@ -57,6 +58,33 @@
             </dependency>
 
             <dependency>
+                <groupId>com.persagy</groupId>
+                <artifactId>fm-server</artifactId>
+                <version>${fm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.persagy</groupId>
+                <artifactId>fm-common</artifactId>
+                <version>${fm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.persagy</groupId>
+                <artifactId>fm-mybatis</artifactId>
+                <version>${fm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.persagy</groupId>
+                <artifactId>fm-translate</artifactId>
+                <version>${fm.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.persagy</groupId>
+                <artifactId>fm-package</artifactId>
+                <version>${fm.version}</version>
+                <type>pom</type>
+            </dependency>
+
+            <dependency>
                 <groupId>de.codecentric</groupId>
                 <artifactId>spring-boot-admin-dependencies</artifactId>
                 <version>${springboot-admin.version}</version>