package com.bruce.common.enumconfig; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.common.controller.SysEnumController; import com.bruce.common.domain.entity.SysEnum; import com.bruce.common.domain.model.RequestResult; import com.bruce.common.dto.request.SysEnumBatchSaveRequest; import com.bruce.common.dto.request.SysEnumManageQueryRequest; import com.bruce.common.dto.request.SysEnumQueryRequest; import com.bruce.common.dto.request.SysEnumSaveRequest; import com.bruce.common.dto.response.SysEnumResponse; import com.bruce.common.mapper.SysEnumMapper; import com.bruce.common.service.ISysEnumService; import com.bruce.common.service.impl.SysEnumServiceImpl; import org.junit.jupiter.api.Test; import java.lang.reflect.Method; import java.util.List; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; class SysEnumComponentStructureTests { @Test void sysEnumComponentsShouldReuseMybatisPlusBaseTypes() { assertTrue(BaseMapper.class.isAssignableFrom(SysEnumMapper.class)); assertTrue(IService.class.isAssignableFrom(ISysEnumService.class)); assertTrue(ServiceImpl.class.isAssignableFrom(SysEnumServiceImpl.class)); assertTrue(ISysEnumService.class.isAssignableFrom(SysEnumServiceImpl.class)); assertTrue(SysEnum.class.isAssignableFrom(SysEnum.class)); } @Test void sysEnumShouldExposeQueryMethodForCatalogAndType() throws NoSuchMethodException { Method serviceMethod = ISysEnumService.class.getMethod("listByCatalogAndType", SysEnumQueryRequest.class); Method controllerMethod = SysEnumController.class.getMethod("queryByCatalogAndType", SysEnumQueryRequest.class); assertNotNull(serviceMethod); assertNotNull(controllerMethod); assertEquals(List.class, serviceMethod.getReturnType()); assertEquals(RequestResult.class, controllerMethod.getReturnType()); } @Test void sysEnumShouldExposeSaveOrUpdateAndDeleteInterfaces() throws NoSuchMethodException { Method saveOrUpdateMethod = ISysEnumService.class.getMethod("saveOrUpdate", SysEnumSaveRequest.class); Method batchSaveMethod = ISysEnumService.class.getMethod("batchSave", SysEnumBatchSaveRequest.class); Method controllerSaveOrUpdateMethod = SysEnumController.class.getMethod("saveOrUpdate", SysEnumSaveRequest.class); Method controllerBatchSaveMethod = SysEnumController.class.getMethod("batchSave", SysEnumBatchSaveRequest.class); Method deleteMethod = SysEnumController.class.getMethod("deleteById", Long.class); Method listMethod = SysEnumController.class.getMethod("list"); assertNotNull(saveOrUpdateMethod); assertNotNull(batchSaveMethod); assertNotNull(controllerSaveOrUpdateMethod); assertNotNull(controllerBatchSaveMethod); assertNotNull(deleteMethod); assertNotNull(listMethod); assertEquals(boolean.class, saveOrUpdateMethod.getReturnType()); assertEquals(boolean.class, batchSaveMethod.getReturnType()); assertEquals(RequestResult.class, controllerSaveOrUpdateMethod.getReturnType()); assertEquals(RequestResult.class, controllerBatchSaveMethod.getReturnType()); assertEquals(RequestResult.class, deleteMethod.getReturnType()); assertEquals(RequestResult.class, listMethod.getReturnType()); } @Test void sysEnumShouldExposeManagementQueryWithoutChangingCatalogTypeQuery() throws NoSuchMethodException { Method serviceMethod = ISysEnumService.class.getMethod("listForManagement", SysEnumManageQueryRequest.class); Method controllerMethod = SysEnumController.class.getMethod("queryForManagement", SysEnumManageQueryRequest.class); Method catalogTypeMethod = ISysEnumService.class.getMethod("listByCatalogAndType", SysEnumQueryRequest.class); assertNotNull(serviceMethod); assertNotNull(controllerMethod); assertNotNull(catalogTypeMethod); assertEquals(List.class, serviceMethod.getReturnType()); assertEquals(RequestResult.class, controllerMethod.getReturnType()); assertEquals(List.class, catalogTypeMethod.getReturnType()); assertTrue(serviceMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); } @Test void sysEnumControllerShouldReturnDtoContracts() throws NoSuchMethodException { Method listMethod = SysEnumController.class.getMethod("list"); Method manageQueryMethod = SysEnumController.class.getMethod("queryForManagement", SysEnumManageQueryRequest.class); Method detailMethod = SysEnumController.class.getMethod("getById", Long.class); Method serviceListMethod = ISysEnumService.class.getMethod("listResponses"); Method responseFactory = SysEnumResponse.class.getMethod("fromEntity", SysEnum.class); assertTrue(serviceListMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); assertTrue(listMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); assertTrue(manageQueryMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); assertTrue(detailMethod.getGenericReturnType().getTypeName().contains("SysEnumResponse")); assertEquals(SysEnumResponse.class, responseFactory.getReturnType()); } @Test void sysEnumShouldProvideManualInitTestEntry() throws NoSuchMethodException { Method initMethod = SysEnumDataInitTests.class.getMethod("initDefaultEnums"); assertNotNull(initMethod); } }