system微服务单元测试完善

This commit is contained in:
gaoqr
2025-12-11 10:19:34 +08:00
parent d3720005ca
commit 4c89805643
24 changed files with 327 additions and 207 deletions
@@ -1,5 +1,6 @@
package com.cf.imes.module.system.controller.admin.dept;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptListReqVO;
import com.cf.imes.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.dept.DeptDO;
@@ -32,7 +33,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/10 10:32
*/
@WebMvcTest(controllers = DeptController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class DeptControllerTest {
class DeptControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.controller.admin.funds.advertisement;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.funds.advertisement.vo.AdvertisementPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.advertisement.vo.AdvertisementRePublishReqVO;
import com.cf.imes.module.system.controller.admin.funds.advertisement.vo.AdvertisementRespVO;
@@ -39,7 +40,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/28 15:05
*/
@WebMvcTest(controllers = AdvertisementController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class AdvertisementControllerTest {
class AdvertisementControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -61,7 +62,7 @@ public class AdvertisementControllerTest {
when(advertisementService.create(any())).thenReturn(101L);
mockMvc.perform(put("/system/ad")
mockMvc.perform(post("/system/ad")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(reqVO)))
.andExpect(status().isOk())
@@ -83,7 +84,7 @@ public class AdvertisementControllerTest {
doNothing().when(advertisementService).update(any());
mockMvc.perform(post("/system/ad")
mockMvc.perform(put("/system/ad")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(reqVO)))
.andExpect(status().isOk())
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.controller.admin.funds.delay;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.funds.delay.vo.ProductDelayPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.delay.vo.ProductDelayRespVO;
import com.cf.imes.module.system.controller.admin.funds.delay.vo.ProductDelaySaveReqVO;
@@ -34,7 +35,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/12/9 14:10
*/
@WebMvcTest(controllers = ProductDelayController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class ProductDelayControllerTest {
class ProductDelayControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.controller.admin.funds.productpromotion;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.funds.productpromotion.vo.ProductPromotionPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.productpromotion.vo.ProductPromotionSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.funds.productpromotion.ProductPromotionDO;
@@ -36,7 +37,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/27 9:29
*/
@WebMvcTest(controllers = ProductPromotionController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
class ProductPromotionControllerTest {
class ProductPromotionControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -62,7 +63,7 @@ class ProductPromotionControllerTest {
// mock Service 返回
when(productPromotionService.create(any())).thenReturn(100L);
mockMvc.perform(put("/system/product/promotion")
mockMvc.perform(post("/system/product/promotion")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -88,7 +89,7 @@ class ProductPromotionControllerTest {
// mock Service 返回
doNothing().when(productPromotionService).update(any());
mockMvc.perform(post("/system/product/promotion")
mockMvc.perform(put("/system/product/promotion")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -3,6 +3,7 @@ package com.cf.imes.module.system.controller.admin.funds.products;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.funds.products.vo.product.ProductPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.products.vo.product.ProductSaveReqVO;
import com.cf.imes.module.system.dal.dataobject.funds.products.ProductsDO;
@@ -40,7 +41,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/14 11:16
*/
@WebMvcTest(controllers = ProductsController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class ProductsControllerTest {
class ProductsControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -60,7 +61,7 @@ public class ProductsControllerTest {
// mock Service 返回
when(productsService.create(any())).thenReturn(100L);
mockMvc.perform(put("/system/products")
mockMvc.perform(post("/system/products")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -80,7 +81,7 @@ public class ProductsControllerTest {
// mock Service 方法 void 不做实际处理
doNothing().when(productsService).update(any());
mockMvc.perform(post("/system/products")
mockMvc.perform(put("/system/products")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.controller.admin.funds.products;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.funds.products.vo.productDetails.ProductDetailsPageReqVO;
import com.cf.imes.module.system.controller.admin.funds.products.vo.productDetails.ProductDetailsRespVO;
import com.cf.imes.module.system.controller.admin.funds.products.vo.productDetails.ProductDetailsSaveReqVO;
@@ -38,7 +39,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/24 9:41
*/
@WebMvcTest(controllers = ProductsDetailController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class ProductsDetailControllerTest {
class ProductsDetailControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -62,7 +63,7 @@ public class ProductsDetailControllerTest {
// mock Service 返回
when(productsDetailService.create(any())).thenReturn(100L);
mockMvc.perform(put("/system/product-details")
mockMvc.perform(post("/system/product-details")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -84,7 +85,7 @@ public class ProductsDetailControllerTest {
// mock Service 方法 void 不做实际处理
doNothing().when(productsDetailService).update(any());
mockMvc.perform(post("/system/product-details")
mockMvc.perform(put("/system/product-details")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(vo)))
.andExpect(status().isOk())
@@ -1,6 +1,7 @@
package com.cf.imes.module.system.controller.admin.sms;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.sms.vo.log.SmsLogPageReqVO;
import com.cf.imes.module.system.dal.dataobject.sms.SmsLogDO;
import com.cf.imes.module.system.service.sms.SmsLogService;
@@ -28,7 +29,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/10 15:37
*/
@WebMvcTest(controllers = SmsLogController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class SmsLogControllerTest {
class SmsLogControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -2,6 +2,7 @@ package com.cf.imes.module.system.controller.admin.sms;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.test.core.ut.BaseWebUnitTest;
import com.cf.imes.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
import com.cf.imes.module.system.controller.admin.sms.vo.template.SmsTemplateSendReqVO;
import com.cf.imes.module.system.dal.dataobject.sms.SmsTemplateDO;
@@ -9,7 +10,6 @@ import com.cf.imes.module.system.enums.sms.SmsTemplateTypeEnum;
import com.cf.imes.module.system.service.sms.SmsSendService;
import com.cf.imes.module.system.service.sms.SmsTemplateService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
@@ -44,7 +44,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @since 2025/10/11 16:26
*/
@WebMvcTest(controllers = SmsTemplateController.class, excludeAutoConfiguration = SecurityAutoConfiguration.class)
public class SmsTemplateControllerTest {
class SmsTemplateControllerTest extends BaseWebUnitTest {
@Autowired
private MockMvc mockMvc;
@@ -0,0 +1,28 @@
package com.cf.imes.module.system.enums.common;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link LanguageEnum} 的单元测试
*/
class LanguageEnumTest {
@Test
void testEnumValues() {
// 验证枚举值 ZH
assertEquals("zh", LanguageEnum.ZH.getLanguage());
// 验证枚举值 EN
assertEquals("en", LanguageEnum.EN.getLanguage());
// 验证枚举值 CHT
assertEquals("cht", LanguageEnum.CHT.getLanguage());
}
@Test
void testEnumSize() {
// 验证枚举值的数量
assertEquals(3, LanguageEnum.values().length);
}
}
@@ -0,0 +1,34 @@
package com.cf.imes.module.system.enums.common;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link WhetherEnum} 的单元测试
*/
class WhetherEnumTest {
@Test
void testEnumValues() {
// 验证枚举值 TRUE
assertEquals(true, WhetherEnum.TRUE.getCode());
assertEquals("whether.yes", WhetherEnum.TRUE.getDesc());
// 验证枚举值 FALSE
assertEquals(false, WhetherEnum.FALSE.getCode());
assertEquals("whether.no", WhetherEnum.FALSE.getDesc());
}
@Test
void testEnumSize() {
// 验证枚举值的数量
assertEquals(2, WhetherEnum.values().length);
}
@Test
void testGetCode() {
// 测试 getCode 方法
assertTrue(WhetherEnum.TRUE.getCode());
assertFalse(WhetherEnum.FALSE.getCode());
}
}
@@ -1,23 +0,0 @@
package com.cf.imes.module.system.enums.pay;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
/**
* {@link PayConstants} 的单元测试
*/
public class PayConstantsTest {
@Test
public void testPayProductDetailAutoGenerateMonthIdFormat() {
// 测试月定价规则自动生成ID格式常量
assertEquals("1759029544%d", PayConstants.PAY_PRODUCT_DETAIL_AUTO_GENERATE_MONTH_ID_FORMAT);
}
@Test
public void testPayProductDetailAutoGenerateYearIdFormat() {
// 测试年定价规则自动生成ID格式常量
assertEquals("1759993429%d", PayConstants.PAY_PRODUCT_DETAIL_AUTO_GENERATE_YEAR_ID_FORMAT);
}
}
@@ -0,0 +1,32 @@
package com.cf.imes.module.system.validation.invoice;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.pay.InvoiceStatusEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 发票状态校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:05
*/
class InvoiceStatusValidtorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
InvoiceStatusValidtor validator = new InvoiceStatusValidtor();
assertTrue(validator.isValid(InvoiceStatusEnum.INVOICABLE.getCode(), constraintValidatorContext));
assertTrue(validator.isValid(InvoiceStatusEnum.PENDINGINVOICING.getCode(), constraintValidatorContext));
assertTrue(validator.isValid(InvoiceStatusEnum.INVOICINGSUCCESSFUL.getCode(), constraintValidatorContext));
assertTrue(validator.isValid(InvoiceStatusEnum.INVOICINGFAILED.getCode(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(4, constraintValidatorContext));
}
}
@@ -0,0 +1,30 @@
package com.cf.imes.module.system.validation.notify;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.notify.NotifyTemplateTypeEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 通知模板类型校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:08
*/
class NofityTemplateTypeValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
NofityTemplateTypeValidator validator = new NofityTemplateTypeValidator();
assertTrue(validator.isValid(NotifyTemplateTypeEnum.NOTIFICATION_MESSAGE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(NotifyTemplateTypeEnum.SYSTEM_MESSAGE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(3, constraintValidatorContext));
}
}
@@ -0,0 +1,35 @@
package com.cf.imes.module.system.validation.operatelog;
import com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 操作日志类型校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:10
*/
class OperateLogTypeValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
OperateLogTypeValidator validator = new OperateLogTypeValidator();
assertTrue(validator.isValid(OperateTypeEnum.OTHER.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.CREATE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.DELETE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.UPDATE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.GET.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.EXPORT.getType(), constraintValidatorContext));
assertTrue(validator.isValid(OperateTypeEnum.IMPORT.getType(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(7, constraintValidatorContext));
}
}
@@ -0,0 +1,31 @@
package com.cf.imes.module.system.validation.sms;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.sms.SmsReceiveStatusEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 短信接收状态校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:16
*/
class SmsReceiveStatusValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
SmsReceiveStatusValidator validator = new SmsReceiveStatusValidator();
assertTrue(validator.isValid(SmsReceiveStatusEnum.INIT.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(SmsReceiveStatusEnum.SUCCESS.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(SmsReceiveStatusEnum.FAILURE.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(30, constraintValidatorContext));
}
}
@@ -0,0 +1,32 @@
package com.cf.imes.module.system.validation.sms;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.sms.SmsSendStatusEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 短信发送状态校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:18
*/
class SmsSendStatusValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
SmsSendStatusValidator validator = new SmsSendStatusValidator();
assertTrue(validator.isValid(SmsSendStatusEnum.INIT.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(SmsSendStatusEnum.SUCCESS.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(SmsSendStatusEnum.FAILURE.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(SmsSendStatusEnum.IGNORE.getStatus(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(40, constraintValidatorContext));
}
}
@@ -0,0 +1,31 @@
package com.cf.imes.module.system.validation.sms;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.sms.SmsTemplateTypeEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* 短信模版校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:19
*/
class SmsTemplateTypeValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
SmsTemplateTypeValidator validator = new SmsTemplateTypeValidator();
assertTrue(validator.isValid(SmsTemplateTypeEnum.VERIFICATION_CODE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(SmsTemplateTypeEnum.NOTICE.getType(), constraintValidatorContext));
assertTrue(validator.isValid(SmsTemplateTypeEnum.PROMOTION.getType(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(4, constraintValidatorContext));
}
}
@@ -0,0 +1,29 @@
package com.cf.imes.module.system.validation.token;
import com.cf.imes.framework.test.core.ut.BaseMockitoUnitTest;
import com.cf.imes.module.system.enums.token.TokenConfigAppTypeEnum;
import jakarta.validation.ConstraintValidatorContext;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* token配置管理应用类型校验器单元测试
*
* @author Gqr
* @since 2025/12/10 14:21
*/
class TokenConfigAppTypeEnumValidatorTest extends BaseMockitoUnitTest {
@Mock
private ConstraintValidatorContext constraintValidatorContext;
@Test
void testValid() {
TokenConfigAppTypeEnumValidator validator = new TokenConfigAppTypeEnumValidator();
assertTrue(validator.isValid(TokenConfigAppTypeEnum.WEBCAD.getType(), constraintValidatorContext));
assertTrue(validator.isValid(null, constraintValidatorContext));
assertFalse(validator.isValid(2, constraintValidatorContext));
}
}