Browse Source

单元测试

huangxiao 1 month ago
parent
commit
d13b022c78

+ 3 - 3
service-user-adapter/src/main/java/com/hosea/service/adapter/web/UserControllerImpl.java

@@ -4,7 +4,7 @@ import com.alibaba.cola.catchlog.CatchAndLog;
 import com.alibaba.cola.dto.PageResponse;
 import com.alibaba.cola.dto.Response;
 import com.alibaba.cola.dto.SingleResponse;
-import com.hosea.cloud.web.login.JwtToken;
+import com.hosea.cloud.webmvc.JwtTokenUtil;
 import com.hosea.service.app.user.UserService;
 import com.hosea.service.user.client.api.UserApi;
 import com.hosea.service.user.client.dto.constant.UserErrorCode;
@@ -29,8 +29,8 @@ public class UserControllerImpl implements UserApi {
     private UserService userService;
 
     @Override
-    public SingleResponse<UserDTO> get(JwtToken token) {
-        return userService.of(token)
+    public SingleResponse<UserDTO> get() {
+        return userService.of(JwtTokenUtil.getTokenOrElseThrow())
                 .map(SingleResponse::of)
                 .orElseGet(UserErrorCode.NOT_EXIST::toSingleResponse);
     }

+ 1 - 0
service-user-app/src/main/java/com/hosea/service/app/tenant/TenantService.java

@@ -56,6 +56,7 @@ public class TenantService {
      * 查
      */
     public Optional<TenantDTO> get(TenantUniqueDTO unique) {
+        Assert.notNull(unique, TenantErrorCode.NOT_NULL);
         return tenantQuery.of(unique);
     }
 

+ 2 - 3
service-user-app/src/main/java/com/hosea/service/app/tenant/executor/TenantQueryExecute.java

@@ -39,9 +39,8 @@ public class TenantQueryExecute {
      * 查
      */
     public Optional<TenantDTO> of(TenantUniqueDTO unique) {
-        return Optional.ofNullable(unique)
-                .map(TenantConversion.INSTANCE::toDomain)
-                .flatMap(tenantDomainService::of)
+        unique.validation();
+        return tenantDomainService.of(TenantConversion.INSTANCE.toDomain(unique))
                 .map(TenantConversion.INSTANCE::toDto);
     }
 

+ 4 - 6
service-user-app/src/main/java/com/hosea/service/app/user/UserService.java

@@ -38,18 +38,16 @@ public class UserService {
      * 查当前登录用户的信息
      */
     public Optional<UserDTO> of(JwtToken token) {
-        return Optional.ofNullable(token)
-                .map(JwtToken::getUser)
-                .map(user -> new UserUniqueDTO(null, user))
-                .flatMap(this::of);
+        return of(new UserUniqueDTO(null, token.getUser()));
     }
 
     /**
      * 查用户
      */
 
-    public Optional<UserDTO> of(UserUniqueDTO uniqueDTO) {
-        return userQuery.of(uniqueDTO);
+    public Optional<UserDTO> of(UserUniqueDTO unique) {
+        Assert.notNull(unique, UserErrorCode.NOT_NULL);
+        return userQuery.of(unique);
     }
 
     /**

+ 2 - 3
service-user-app/src/main/java/com/hosea/service/app/user/executor/UserQueryExecute.java

@@ -28,9 +28,8 @@ public class UserQueryExecute {
      * 查用户
      */
     public Optional<UserDTO> of(UserUniqueDTO unique) {
-        return Optional.ofNullable(unique)
-                .map(UserConversion.INSTANCE::toDomain)
-                .flatMap(userDomainService::of)
+        unique.validation();
+        return userDomainService.of(UserConversion.INSTANCE.toDomain(unique))
                 .map(UserConversion.INSTANCE::toDto);
     }
 

+ 2 - 2
service-user-client/src/main/java/com/hosea/service/user/client/api/UserApi.java

@@ -4,11 +4,11 @@ import com.alibaba.cola.dto.PageResponse;
 import com.alibaba.cola.dto.Response;
 import com.alibaba.cola.dto.SingleResponse;
 import com.hosea.cloud.web.login.JwtToken;
+import com.hosea.service.user.client.dto.data.UserDTO;
 import com.hosea.service.user.client.dto.request.UserAddCmd;
 import com.hosea.service.user.client.dto.request.UserJoinTenantCmd;
 import com.hosea.service.user.client.dto.request.UserListByTenantPageQuery;
 import com.hosea.service.user.client.dto.request.UserUpdateCmd;
-import com.hosea.service.user.client.dto.data.UserDTO;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,7 +25,7 @@ public interface UserApi {
      * 查当前登录用户的信息
      */
     @GetMapping
-    SingleResponse<UserDTO> get(JwtToken token);
+    SingleResponse<UserDTO> get();
 
     /**
      * 增加

+ 12 - 2
service-user-client/src/main/java/com/hosea/service/user/client/dto/data/TenantUniqueDTO.java

@@ -1,5 +1,10 @@
 package com.hosea.service.user.client.dto.data;
 
+import com.alibaba.cola.exception.BizException;
+import com.hosea.cloud.web.dto.Validation;
+import com.hosea.cloud.web.exception.Assert;
+import com.hosea.common.utils.StrUtil;
+import com.hosea.service.user.client.dto.constant.TenantErrorCode;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -17,7 +22,7 @@ import lombok.experimental.SuperBuilder;
 @SuperBuilder
 @NoArgsConstructor
 @AllArgsConstructor
-public class TenantUniqueDTO {
+public class TenantUniqueDTO implements Validation {
     /**
      * ID
      */
@@ -26,4 +31,9 @@ public class TenantUniqueDTO {
      * 编码
      */
     private String code;
-}
+
+    @Override
+    public void validation() throws BizException {
+        Assert.isFalse(StrUtil.isAllBlank(getId(), getCode()), TenantErrorCode.NOT_NULL_ID_OR_CODE);
+    }
+}

+ 11 - 2
service-user-client/src/main/java/com/hosea/service/user/client/dto/data/UserUniqueDTO.java

@@ -1,5 +1,10 @@
 package com.hosea.service.user.client.dto.data;
 
+import com.alibaba.cola.exception.BizException;
+import com.hosea.cloud.web.dto.Validation;
+import com.hosea.cloud.web.exception.Assert;
+import com.hosea.common.utils.StrUtil;
+import com.hosea.service.user.client.dto.constant.UserErrorCode;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -17,7 +22,7 @@ import lombok.experimental.SuperBuilder;
 @SuperBuilder
 @NoArgsConstructor
 @AllArgsConstructor
-public class UserUniqueDTO {
+public class UserUniqueDTO implements Validation {
     /**
      * ID
      */
@@ -26,5 +31,9 @@ public class UserUniqueDTO {
      * 用户名
      */
     private String name;
-}
 
+    @Override
+    public void validation() throws BizException {
+        Assert.isFalse(StrUtil.isAllBlank(getName(), getId()), UserErrorCode.NOT_NULL_ID_OR_NAME);
+    }
+}

+ 1 - 2
service-user-client/src/main/java/com/hosea/service/user/client/dto/request/TenantUpdateCmd.java

@@ -4,7 +4,6 @@ import com.alibaba.cola.dto.Command;
 import com.alibaba.cola.exception.BizException;
 import com.hosea.cloud.web.dto.Validation;
 import com.hosea.cloud.web.exception.Assert;
-import com.hosea.common.utils.StrUtil;
 import com.hosea.service.user.client.dto.constant.TenantErrorCode;
 import com.hosea.service.user.client.dto.data.TenantDTO;
 import lombok.*;
@@ -29,6 +28,6 @@ public class TenantUpdateCmd extends Command implements Validation {
     @Override
     public void validation() throws BizException {
         Assert.notNull(tenant, TenantErrorCode.NOT_NULL);
-        Assert.isFalse(StrUtil.isAllBlank(tenant.getCode(), tenant.getId()), TenantErrorCode.NOT_NULL_ID_OR_CODE);
+        tenant.validation();
     }
 }

+ 2 - 2
service-user-client/src/main/java/com/hosea/service/user/client/dto/request/UserJoinTenantCmd.java

@@ -37,10 +37,10 @@ public class UserJoinTenantCmd extends Command implements Validation {
     @Override
     public void validation() throws BizException {
         Assert.notNull(user, UserErrorCode.NOT_NULL);
-        Assert.isFalse(StrUtil.isAllBlank(user.getName(), user.getId()), UserErrorCode.NOT_NULL_ID_OR_NAME);
+        user.validation();
         Assert.notEmpty(tenants, TenantErrorCode.NOT_NULL);
         for (TenantUniqueDTO tenant : tenants) {
-            Assert.isFalse(StrUtil.isAllBlank(tenant.getCode(), tenant.getId()), TenantErrorCode.NOT_NULL_ID_OR_CODE);
+            tenant.validation();
         }
     }
 }

+ 12 - 4
start/src/test/java/com/hosea/service/user/client/api/UserApiTest.java

@@ -2,6 +2,7 @@ package com.hosea.service.user.client.api;
 
 import cn.hutool.core.util.RandomUtil;
 import com.hosea.cloud.web.login.JwtToken;
+import com.hosea.cloud.webmvc.JwtTokenUtil;
 import com.hosea.service.user.client.dto.data.TenantUniqueDTO;
 import com.hosea.service.user.client.dto.data.UserDTO;
 import com.hosea.service.user.client.dto.data.UserUniqueDTO;
@@ -11,6 +12,8 @@ import com.hosea.service.user.client.dto.request.UserListByTenantPageQuery;
 import com.hosea.service.user.client.dto.request.UserUpdateCmd;
 import jakarta.annotation.Resource;
 import org.junit.jupiter.api.*;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
 import org.springframework.boot.test.context.SpringBootTest;
 
 import java.util.List;
@@ -40,10 +43,15 @@ class UserApiTest {
     @Test
     @Order(2)
     void get() {
-        Assertions.assertTrue(api.get(JwtToken.builder().user("user5").build()).isSuccess());
-        Assertions.assertFalse(api.get(null).isSuccess());
-        Assertions.assertFalse(api.get(new JwtToken()).isSuccess());
-        Assertions.assertFalse(api.get(JwtToken.builder().user("xxxx").build()).isSuccess());
+        Assertions.assertFalse(api.get().isSuccess());
+        try (MockedStatic<JwtTokenUtil> jwt = Mockito.mockStatic(JwtTokenUtil.class)) {
+            jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(JwtToken.builder().user("user5").build());
+            Assertions.assertTrue(api.get().isSuccess());
+            jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(new JwtToken());
+            Assertions.assertFalse(api.get().isSuccess());
+            jwt.when(JwtTokenUtil::getTokenOrElseThrow).thenReturn(JwtToken.builder().user("xxx").build());
+            Assertions.assertFalse(api.get().isSuccess());
+        }
     }
 
     @Order(3)