This is an automated email from the ASF dual-hosted git repository.

renzhuyan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new 7a559676b [ISSUE #3896]Fix bug, add menu error. (#3902)
7a559676b is described below

commit 7a559676ba51bc9fccb5423eec94e3abc4c2eb30
Author: Kevin Clair <[email protected]>
AuthorDate: Thu Sep 1 13:07:10 2022 +0800

    [ISSUE #3896]Fix bug, add menu error. (#3902)
    
    * fix #3896
    
    * update property.
    
    * checkstyle
---
 .../admin/controller/ResourceController.java       |  26 +-
 .../shenyu/admin/model/dto/CreateResourceDTO.java  | 331 +++++++++++++++++++++
 .../shenyu/admin/model/entity/ResourceDO.java      |  33 +-
 .../shenyu/admin/service/ResourceService.java      |  23 +-
 .../admin/service/impl/ResourceServiceImpl.java    |  46 ++-
 .../admin/controller/ResourceControllerTest.java   |  44 ++-
 .../shenyu/admin/service/ResourceServiceTest.java  |  58 ++--
 7 files changed, 459 insertions(+), 102 deletions(-)

diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java
index 9b35bd005..9047b7920 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/controller/ResourceController.java
@@ -17,11 +17,9 @@
 
 package org.apache.shenyu.admin.controller;
 
-import java.util.List;
-import java.util.Optional;
-
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.shenyu.admin.mapper.ResourceMapper;
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.admin.model.page.CommonPager;
 import org.apache.shenyu.admin.model.page.PageParameter;
@@ -34,6 +32,15 @@ import org.apache.shenyu.admin.utils.ShenyuResultMessage;
 import org.apache.shenyu.admin.validation.annotation.Existed;
 import org.apache.shiro.authz.annotation.Logical;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
+
+import java.util.List;
+import java.util.Optional;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -45,11 +52,6 @@ import 
org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import javax.validation.Valid;
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-import javax.validation.constraints.NotNull;
-
 /**
  * this is resource controller.
  */
@@ -132,13 +134,13 @@ public class ResourceController {
     /**
      * create resource.
      *
-     * @param resourceDTO resource dto
+     * @param createResourceDTO resource dto
      * @return {@linkplain ShenyuAdminResult}
      */
     @PostMapping("")
     @RequiresPermissions(value = {"system:resource:addMenu", 
"system:resource:addButton"}, logical = Logical.OR)
-    public ShenyuAdminResult createResource(@Valid @RequestBody final 
ResourceDTO resourceDTO) {
-        return ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS, 
resourceService.createOrUpdate(resourceDTO));
+    public ShenyuAdminResult createResource(@Valid @RequestBody final 
CreateResourceDTO createResourceDTO) {
+        return ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS, 
resourceService.create(createResourceDTO));
     }
     
     /**
@@ -155,7 +157,7 @@ public class ResourceController {
                                                     message = "resource not 
existed") final String id,
                                             @RequestBody final ResourceDTO 
resourceDTO) {
         resourceDTO.setId(id);
-        return ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS, 
resourceService.createOrUpdate(resourceDTO));
+        return ShenyuAdminResult.success(ShenyuResultMessage.UPDATE_SUCCESS, 
resourceService.update(resourceDTO));
     }
     
     /**
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/CreateResourceDTO.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/CreateResourceDTO.java
new file mode 100644
index 000000000..e1aab5254
--- /dev/null
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/dto/CreateResourceDTO.java
@@ -0,0 +1,331 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.admin.model.dto;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * this is created resource Dto.
+ */
+public class CreateResourceDTO {
+
+    /**
+     * resource parent key.
+     */
+    @NotBlank
+    private String parentId;
+
+    /**
+     * resource title.
+     */
+    @NotBlank
+    private String title;
+
+    /**
+     * resource name.
+     */
+    private String name;
+
+    /**
+     * resource url.
+     */
+    private String url;
+
+    /**
+     * resource component.
+     */
+    private String component;
+
+    /**
+     * resource type.
+     */
+    @NotNull
+    private Integer resourceType;
+
+    /**
+     * resource sort.
+     */
+    @NotNull
+    private Integer sort;
+
+    /**
+     * resource icon.
+     */
+    @NotBlank
+    private String icon;
+
+    /**
+     * resource is leaf.
+     */
+    @NotNull
+    private Boolean isLeaf;
+
+    /**
+     * resource is route.
+     */
+    @NotNull
+    private Integer isRoute;
+
+    /**
+     * resource perms.
+     */
+    private String perms;
+
+    /**
+     * resource status.
+     */
+    @NotNull
+    private Integer status;
+
+    public CreateResourceDTO() {
+    }
+
+    public CreateResourceDTO(final String parentId, final String title, final 
String name, final String url, final String component,
+                             final Integer resourceType, final Integer sort, 
final String icon,
+                             final Boolean isLeaf, final Integer isRoute, 
final String perms, final Integer status) {
+        this.parentId = parentId;
+        this.title = title;
+        this.name = name;
+        this.url = url;
+        this.component = component;
+        this.resourceType = resourceType;
+        this.sort = sort;
+        this.icon = icon;
+        this.isLeaf = isLeaf;
+        this.isRoute = isRoute;
+        this.perms = perms;
+        this.status = status;
+    }
+
+    /**
+     * Gets the value of parentId.
+     *
+     * @return the value of parentId
+     */
+    public String getParentId() {
+        return parentId;
+    }
+
+    /**
+     * Sets the parentId.
+     *
+     * @param parentId parentId
+     */
+    public void setParentId(final String parentId) {
+        this.parentId = parentId;
+    }
+
+    /**
+     * Gets the value of title.
+     *
+     * @return the value of title
+     */
+    public String getTitle() {
+        return title;
+    }
+
+    /**
+     * Sets the title.
+     *
+     * @param title title
+     */
+    public void setTitle(final String title) {
+        this.title = title;
+    }
+
+    /**
+     * Gets the value of name.
+     *
+     * @return the value of name
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Sets the name.
+     *
+     * @param name name
+     */
+    public void setName(final String name) {
+        this.name = name;
+    }
+
+    /**
+     * Gets the value of url.
+     *
+     * @return the value of url
+     */
+    public String getUrl() {
+        return url;
+    }
+
+    /**
+     * Sets the url.
+     *
+     * @param url url
+     */
+    public void setUrl(final String url) {
+        this.url = url;
+    }
+
+    /**
+     * Gets the value of component.
+     *
+     * @return the value of component
+     */
+    public String getComponent() {
+        return component;
+    }
+
+    /**
+     * Sets the component.
+     *
+     * @param component component
+     */
+    public void setComponent(final String component) {
+        this.component = component;
+    }
+
+    /**
+     * Gets the value of resourceType.
+     *
+     * @return the value of resourceType
+     */
+    public Integer getResourceType() {
+        return resourceType;
+    }
+
+    /**
+     * Sets the resourceType.
+     *
+     * @param resourceType resourceType
+     */
+    public void setResourceType(final Integer resourceType) {
+        this.resourceType = resourceType;
+    }
+
+    /**
+     * Gets the value of sort.
+     *
+     * @return the value of sort
+     */
+    public Integer getSort() {
+        return sort;
+    }
+
+    /**
+     * Sets the sort.
+     *
+     * @param sort sort
+     */
+    public void setSort(final Integer sort) {
+        this.sort = sort;
+    }
+
+    /**
+     * Gets the value of icon.
+     *
+     * @return the value of icon
+     */
+    public String getIcon() {
+        return icon;
+    }
+
+    /**
+     * Sets the icon.
+     *
+     * @param icon icon
+     */
+    public void setIcon(final String icon) {
+        this.icon = icon;
+    }
+
+    /**
+     * Gets the value of isLeaf.
+     *
+     * @return the value of isLeaf
+     */
+    public Boolean getIsLeaf() {
+        return isLeaf;
+    }
+
+    /**
+     * Sets the isLeaf.
+     *
+     * @param isLeaf isLeaf
+     */
+    public void setIsLeaf(final Boolean isLeaf) {
+        this.isLeaf = isLeaf;
+    }
+
+    /**
+     * Gets the value of isRoute.
+     *
+     * @return the value of isRoute
+     */
+    public Integer getIsRoute() {
+        return isRoute;
+    }
+
+    /**
+     * Sets the isRoute.
+     *
+     * @param isRoute isRoute
+     */
+    public void setIsRoute(final Integer isRoute) {
+        this.isRoute = isRoute;
+    }
+
+    /**
+     * Gets the value of perms.
+     *
+     * @return the value of perms
+     */
+    public String getPerms() {
+        return perms;
+    }
+
+    /**
+     * Sets the perms.
+     *
+     * @param perms perms
+     */
+    public void setPerms(final String perms) {
+        this.perms = perms;
+    }
+
+    /**
+     * Gets the value of status.
+     *
+     * @return the value of status
+     */
+    public Integer getStatus() {
+        return status;
+    }
+
+    /**
+     * Sets the status.
+     *
+     * @param status status
+     */
+    public void setStatus(final Integer status) {
+        this.status = status;
+    }
+}
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java
index 827a7eb37..1f0d34f28 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/model/entity/ResourceDO.java
@@ -17,14 +17,16 @@
 
 package org.apache.shenyu.admin.model.entity;
 
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.common.utils.UUIDUtils;
-import reactor.util.StringUtils;
 
 import java.sql.Timestamp;
 import java.util.Objects;
 import java.util.Optional;
 
+import reactor.util.StringUtils;
+
 /**
  * The Resource Entity.
  */
@@ -379,6 +381,35 @@ public final class ResourceDO extends BaseDO {
         }).orElse(null);
     }
 
+    /**
+     * build ResourceDO.
+     *
+     * @param createResourceDTO {@linkplain CreateResourceDTO}
+     * @return {@linkplain ResourceDO}
+     */
+    public static ResourceDO buildResourceDO(final CreateResourceDTO 
createResourceDTO) {
+        return Optional.ofNullable(createResourceDTO).map(item -> {
+            Timestamp currentTime = new Timestamp(System.currentTimeMillis());
+            ResourceDO resourceDO = ResourceDO.builder()
+                .parentId(item.getParentId())
+                .title(item.getTitle())
+                .name(item.getName())
+                .url(item.getUrl())
+                .component(item.getComponent())
+                .resourceType(item.getResourceType())
+                .sort(item.getSort())
+                .icon(item.getIcon())
+                .isLeaf(item.getIsLeaf())
+                .isRoute(item.getIsRoute())
+                .perms(item.getPerms())
+                .status(item.getStatus())
+                .id(UUIDUtils.getInstance().generateShortUuid())
+                .dateCreated(currentTime)
+                .build();
+            return resourceDO;
+        }).orElse(null);
+    }
+
     @Override
     public boolean equals(final Object o) {
         if (this == o) {
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/ResourceService.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/ResourceService.java
index 3ff3460f4..cdcb96cce 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/ResourceService.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/ResourceService.java
@@ -17,7 +17,7 @@
 
 package org.apache.shenyu.admin.service;
 
-import org.apache.commons.lang3.StringUtils;
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.admin.model.entity.ResourceDO;
 import org.apache.shenyu.admin.model.page.CommonPager;
@@ -40,23 +40,13 @@ public interface ResourceService {
      */
     int createResourceBatch(List<ResourceDO> resourceDOList);
     
-    /**
-     * create or update resource.
-     *
-     * @param resourceDTO {@linkplain ResourceDTO}
-     * @return rows int
-     */
-    default int createOrUpdate(final ResourceDTO resourceDTO) {
-        return StringUtils.isBlank(resourceDTO.getId()) ? create(resourceDTO) 
: update(resourceDTO);
-    }
-    
     /**
      * create resource.
      *
-     * @param resourceDTO {@linkplain ResourceDTO}
+     * @param createResourceDTO {@linkplain CreateResourceDTO}
      * @return rows int
      */
-    int create(ResourceDTO resourceDTO);
+    int create(CreateResourceDTO createResourceDTO);
     
     /**
      * update resource.
@@ -66,13 +56,6 @@ public interface ResourceService {
      */
     int update(ResourceDTO resourceDTO);
     
-    /**
-     * create Resource.
-     *
-     * @param resourceDO {@linkplain ResourceDO}
-     */
-    void createResource(ResourceDO resourceDO);
-    
     /**
      * delete resource by id.
      *
diff --git 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java
 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java
index 32a6801e3..8b02cc41e 100644
--- 
a/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java
+++ 
b/shenyu-admin/src/main/java/org/apache/shenyu/admin/service/impl/ResourceServiceImpl.java
@@ -20,6 +20,7 @@ package org.apache.shenyu.admin.service.impl;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.shenyu.admin.aspect.annotation.Pageable;
 import org.apache.shenyu.admin.mapper.ResourceMapper;
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.admin.model.entity.PluginDO;
 import org.apache.shenyu.admin.model.entity.ResourceDO;
@@ -35,13 +36,14 @@ import 
org.apache.shenyu.admin.service.publish.ResourceEventPublisher;
 import org.apache.shenyu.admin.utils.ListUtil;
 import org.apache.shenyu.admin.utils.ResourceUtil;
 import org.apache.shenyu.common.enums.AdminResourceEnum;
-import org.springframework.context.event.EventListener;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 import java.util.stream.Collectors;
 
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 /**
  * Implementation of the {@link 
org.apache.shenyu.admin.service.ResourceService}.
  */
@@ -68,24 +70,24 @@ public class ResourceServiceImpl implements ResourceService 
{
     public int createResourceBatch(final List<ResourceDO> resourceDOList) {
         return this.insertResourceBatch(resourceDOList);
     }
-    
+
     /**
-     * create or update resource.
+     * create Resource.
      *
-     * @param resourceDTO {@linkplain ResourceDTO}
+     * @param createResourceDTO list of {@linkplain CreateResourceDTO}
      * @return rows int
      */
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int createOrUpdate(final ResourceDTO resourceDTO) {
-        return ResourceService.super.createOrUpdate(resourceDTO);
+    public int create(final CreateResourceDTO createResourceDTO) {
+        return this.createOne(ResourceDO.buildResourceDO(createResourceDTO));
     }
-    
-    @Override
-    public int create(final ResourceDTO resourceDTO) {
-        return createOne(ResourceDO.buildResourceDO(resourceDTO));
-    }
-    
+
+    /**
+     * update resource.
+     *
+     * @param resourceDTO {@linkplain ResourceDTO}
+     * @return rows int
+     */
     @Override
     public int update(final ResourceDTO resourceDTO) {
         final ResourceDO before = 
resourceMapper.selectById(resourceDTO.getId());
@@ -97,16 +99,6 @@ public class ResourceServiceImpl implements ResourceService {
         return updateCount;
     }
     
-    /**
-     * create resource and return data.
-     *
-     * @param resourceDO {@linkplain ResourceDO}
-     */
-    @Override
-    public void createResource(final ResourceDO resourceDO) {
-        createOne(resourceDO);
-    }
-    
     /**
      * delete resource info.
      *
@@ -208,7 +200,7 @@ public class ResourceServiceImpl implements ResourceService 
{
     @EventListener(value = PluginCreatedEvent.class)
     public void onPluginCreated(final PluginCreatedEvent event) {
         ResourceDO resourceDO = 
ResourceUtil.buildPluginResource(event.getPlugin().getName());
-        createOne(resourceDO);
+        this.createOne(resourceDO);
         
insertResourceBatch(ResourceUtil.buildPluginDataPermissionResource(resourceDO.getId(),
 event.getPlugin().getName()));
     }
     
@@ -234,7 +226,7 @@ public class ResourceServiceImpl implements ResourceService 
{
         return insertCount;
     }
     
-    
+
     /**
      * insert Resources.
      *
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ResourceControllerTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ResourceControllerTest.java
index 2566d1b88..da5406309 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ResourceControllerTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/controller/ResourceControllerTest.java
@@ -17,8 +17,15 @@
 
 package org.apache.shenyu.admin.controller;
 
+import static com.google.common.collect.Lists.newArrayList;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.mock;
+import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+
 import org.apache.shenyu.admin.exception.ExceptionHandlers;
 import org.apache.shenyu.admin.mapper.ResourceMapper;
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.admin.model.page.CommonPager;
 import org.apache.shenyu.admin.model.page.PageParameter;
@@ -30,6 +37,10 @@ import org.apache.shenyu.admin.service.ResourceService;
 import org.apache.shenyu.admin.spring.SpringBeanUtils;
 import org.apache.shenyu.admin.utils.ShenyuResultMessage;
 import org.apache.shenyu.common.utils.GsonUtils;
+
+import java.util.Collections;
+import java.util.List;
+
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -42,14 +53,6 @@ import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
-import java.util.Collections;
-import java.util.List;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static org.mockito.BDDMockito.given;
-import static org.mockito.Mockito.mock;
-import static 
org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-
 /**
  * test for {@linkplain ResourceController}.
  */
@@ -171,13 +174,13 @@ public class ResourceControllerTest {
 
     @Test
     public void testCreateResource() throws Exception {
-        final ResourceDTO resourceDTO = new ResourceDTO();
-        fill(resourceDTO);
-        given(resourceService.createOrUpdate(resourceDTO)).willReturn(1);
+        final CreateResourceDTO createResourceDTO = new CreateResourceDTO();
+        fill(createResourceDTO);
+        given(resourceService.create(any())).willReturn(1);
 
         this.mockMvc.perform(MockMvcRequestBuilders.post("/resource")
                 .contentType(MediaType.APPLICATION_JSON)
-                .content(GsonUtils.getInstance().toJson(resourceDTO)))
+                .content(GsonUtils.getInstance().toJson(createResourceDTO)))
                 
.andExpect(content().json(GsonUtils.getInstance().toJson(ShenyuAdminResult.success(ShenyuResultMessage.CREATE_SUCCESS,
 1))))
                 .andReturn();
     }
@@ -189,7 +192,7 @@ public class ResourceControllerTest {
         resourceDTO.setId(mockId);
         fill(resourceDTO);
         
SpringBeanUtils.getInstance().setApplicationContext(mock(ConfigurableApplicationContext.class));
-        given(resourceService.createOrUpdate(resourceDTO)).willReturn(1);
+        given(resourceService.update(resourceDTO)).willReturn(1);
 
         this.mockMvc.perform(MockMvcRequestBuilders.put("/resource/" + mockId)
                 .contentType(MediaType.APPLICATION_JSON)
@@ -224,4 +227,19 @@ public class ResourceControllerTest {
         resourceDTO.setStatus(1);
         resourceDTO.setSort(1);
     }
+
+    private void fill(final CreateResourceDTO createResourceDTO) {
+        createResourceDTO.setTitle("test");
+        createResourceDTO.setName("test");
+        createResourceDTO.setParentId("test");
+        createResourceDTO.setUrl("test");
+        createResourceDTO.setComponent("test");
+        createResourceDTO.setIcon("test");
+        createResourceDTO.setPerms("test");
+        createResourceDTO.setIsLeaf(true);
+        createResourceDTO.setIsRoute(1);
+        createResourceDTO.setResourceType(1);
+        createResourceDTO.setStatus(1);
+        createResourceDTO.setSort(1);
+    }
 }
diff --git 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java
 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java
index e0e14ad0f..e3b56f1dd 100644
--- 
a/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java
+++ 
b/shenyu-admin/src/test/java/org/apache/shenyu/admin/service/ResourceServiceTest.java
@@ -17,8 +17,19 @@
 
 package org.apache.shenyu.admin.service;
 
+import static com.google.common.collect.Lists.newArrayList;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.when;
+
 import org.apache.shenyu.admin.mapper.PermissionMapper;
 import org.apache.shenyu.admin.mapper.ResourceMapper;
+import org.apache.shenyu.admin.model.dto.CreateResourceDTO;
 import org.apache.shenyu.admin.model.dto.ResourceDTO;
 import org.apache.shenyu.admin.model.entity.ResourceDO;
 import org.apache.shenyu.admin.model.page.CommonPager;
@@ -31,6 +42,12 @@ import 
org.apache.shenyu.admin.service.publish.ResourceEventPublisher;
 import org.apache.shenyu.admin.utils.ResourceUtil;
 import org.apache.shenyu.common.constant.ResourceTypeConstants;
 import org.apache.shenyu.common.enums.AdminResourceEnum;
+
+import java.sql.Timestamp;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
 import org.assertj.core.util.Lists;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -40,20 +57,6 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.mockito.junit.jupiter.MockitoSettings;
 import org.mockito.quality.Strictness;
 
-import java.sql.Timestamp;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static com.google.common.collect.Lists.newArrayList;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.is;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.when;
-
 /**
  * test for {@linkplain ResourceService}.
  */
@@ -73,19 +76,6 @@ public class ResourceServiceTest {
     @Mock
     private ResourceEventPublisher publisher;
     
-    @Test
-    public void testCreateResource() {
-        final ResourceDO resourceDO = new ResourceDO();
-        resourceDO.setId("mock resource id");
-        
-        reset(resourceMapper);
-        reset(permissionMapper);
-        reset(publisher);
-        when(resourceMapper.insertSelective(resourceDO)).thenReturn(1);
-        
-        resourceService.createResource(resourceDO);
-    }
-    
     @Test
     public void testCreateResourceBatch() {
         
@@ -106,14 +96,24 @@ public class ResourceServiceTest {
     }
     
     @Test
-    public void testCreateOrUpdate() {
+    public void testUpdate() {
         // test update
         ResourceDTO forUpdateResource = new ResourceDTO();
         forUpdateResource.setId("mock id");
         reset(resourceMapper);
         reset(publisher);
         
when(resourceMapper.updateSelective(ResourceDO.buildResourceDO(forUpdateResource))).thenReturn(1);
-        assertThat(resourceService.createOrUpdate(forUpdateResource), 
equalTo(1));
+        assertThat(resourceService.update(forUpdateResource), equalTo(1));
+    }
+
+    @Test
+    public void testCreate() {
+        // test create
+        final CreateResourceDTO createResourceDTO = new CreateResourceDTO();
+        reset(resourceMapper);
+        reset(publisher);
+        when(resourceMapper.insertSelective(any())).thenReturn(1);
+        assertThat(resourceService.create(createResourceDTO), equalTo(1));
     }
     
     @Test

Reply via email to