feat: add enum dto APIs and batch save
This commit is contained in:
@@ -8,6 +8,7 @@ import com.bruce.common.controller.SysAttachmentController;
|
||||
import com.bruce.common.domain.model.RequestResult;
|
||||
import com.bruce.common.dto.request.SysAttachmentUploadRequest;
|
||||
import com.bruce.common.domain.entity.SysAttachment;
|
||||
import com.bruce.common.dto.response.SysAttachmentResponse;
|
||||
import com.bruce.common.mapper.SysAttachmentMapper;
|
||||
import com.bruce.common.service.ISysAttachmentService;
|
||||
import com.bruce.common.service.impl.SysAttachmentServiceImpl;
|
||||
@@ -45,6 +46,8 @@ class SysAttachmentComponentStructureTests {
|
||||
assertNotNull(controllerMethod);
|
||||
assertEquals(SysAttachment.class, serviceMethod.getReturnType());
|
||||
assertEquals(RequestResult.class, controllerMethod.getReturnType());
|
||||
assertTrue(controllerMethod.getGenericReturnType().getTypeName().contains("SysAttachmentResponse"));
|
||||
assertEquals(SysAttachmentResponse.class, SysAttachmentResponse.class.getMethod("fromEntity", SysAttachment.class).getReturnType());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.bruce.common.enumconfig;
|
||||
|
||||
import com.bruce.common.domain.entity.SysEnum;
|
||||
import com.bruce.common.dto.request.SysEnumBatchSaveRequest;
|
||||
import com.bruce.common.service.impl.SysEnumServiceImpl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
class SysEnumBatchSaveValidationTests {
|
||||
|
||||
@Test
|
||||
void batchSaveShouldRejectDuplicateValuesInsideRequest() {
|
||||
SysEnumServiceImpl service = new SysEnumServiceImpl();
|
||||
SysEnumBatchSaveRequest request = new SysEnumBatchSaveRequest();
|
||||
request.setCatalog("common");
|
||||
request.setType("enable_status");
|
||||
request.setItems(List.of(
|
||||
item("启用", 1),
|
||||
item("可用", 1)
|
||||
));
|
||||
|
||||
assertThrows(IllegalArgumentException.class, () -> service.validateBatchSaveRequest(request, List.of()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void batchSaveShouldRejectDuplicateValuesFromExistingEnums() {
|
||||
SysEnumServiceImpl service = new SysEnumServiceImpl();
|
||||
SysEnum existing = new SysEnum();
|
||||
existing.setCatalog("common");
|
||||
existing.setType("enable_status");
|
||||
existing.setValue(1);
|
||||
|
||||
SysEnumBatchSaveRequest request = new SysEnumBatchSaveRequest();
|
||||
request.setCatalog("common");
|
||||
request.setType("enable_status");
|
||||
request.setItems(List.of(item("启用", 1)));
|
||||
|
||||
assertThrows(
|
||||
IllegalArgumentException.class,
|
||||
() -> service.validateBatchSaveRequest(request, List.of(existing))
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
void batchSaveShouldAcceptUniqueValues() {
|
||||
SysEnumServiceImpl service = new SysEnumServiceImpl();
|
||||
SysEnumBatchSaveRequest request = new SysEnumBatchSaveRequest();
|
||||
request.setCatalog("common");
|
||||
request.setType("enable_status");
|
||||
request.setItems(List.of(
|
||||
item("禁用", 0),
|
||||
item("启用", 1)
|
||||
));
|
||||
|
||||
assertDoesNotThrow(() -> service.validateBatchSaveRequest(request, List.of()));
|
||||
}
|
||||
|
||||
private SysEnumBatchSaveRequest.Item item(String name, Integer value) {
|
||||
SysEnumBatchSaveRequest.Item item = new SysEnumBatchSaveRequest.Item();
|
||||
item.setName(name);
|
||||
item.setValue(value);
|
||||
return item;
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,11 @@ 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;
|
||||
@@ -45,20 +48,56 @@ class SysEnumComponentStructureTests {
|
||||
@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");
|
||||
|
||||
@@ -9,6 +9,8 @@ import com.bruce.rag.controller.RagDocumentController;
|
||||
import com.bruce.rag.controller.RagStoreController;
|
||||
import com.bruce.rag.dto.request.RagDocumentQueryRequest;
|
||||
import com.bruce.rag.dto.request.RagStoreQueryRequest;
|
||||
import com.bruce.rag.dto.response.RagDocumentResponse;
|
||||
import com.bruce.rag.dto.response.RagStoreResponse;
|
||||
import com.bruce.rag.entity.RagDocument;
|
||||
import com.bruce.rag.entity.RagStore;
|
||||
import com.bruce.rag.mapper.RagDocumentMapper;
|
||||
@@ -42,19 +44,31 @@ class RagComponentStructureTests {
|
||||
void ragControllersShouldExposeRequestResultAndQueryDtoMethods() throws NoSuchMethodException {
|
||||
Method storeListMethod = RagStoreController.class.getMethod("list");
|
||||
Method storeQueryMethod = RagStoreController.class.getMethod("query", RagStoreQueryRequest.class);
|
||||
Method storeResponseListMethod = IRagStoreService.class.getMethod("listResponses");
|
||||
Method storeServiceQueryMethod = IRagStoreService.class.getMethod("query", RagStoreQueryRequest.class);
|
||||
|
||||
Method documentListMethod = RagDocumentController.class.getMethod("list");
|
||||
Method documentQueryMethod = RagDocumentController.class.getMethod("query", RagDocumentQueryRequest.class);
|
||||
Method documentResponseListMethod = IRagDocumentService.class.getMethod("listResponses");
|
||||
Method documentServiceQueryMethod = IRagDocumentService.class.getMethod("query", RagDocumentQueryRequest.class);
|
||||
|
||||
assertEquals(RequestResult.class, storeListMethod.getReturnType());
|
||||
assertEquals(RequestResult.class, storeQueryMethod.getReturnType());
|
||||
assertEquals(List.class, storeServiceQueryMethod.getReturnType());
|
||||
assertTrue(storeResponseListMethod.getGenericReturnType().getTypeName().contains("RagStoreResponse"));
|
||||
assertTrue(storeServiceQueryMethod.getGenericReturnType().getTypeName().contains("RagStoreResponse"));
|
||||
assertTrue(storeListMethod.getGenericReturnType().getTypeName().contains("RagStoreResponse"));
|
||||
assertTrue(storeQueryMethod.getGenericReturnType().getTypeName().contains("RagStoreResponse"));
|
||||
assertEquals(RagStoreResponse.class, RagStoreResponse.class.getMethod("fromEntity", RagStore.class).getReturnType());
|
||||
|
||||
assertEquals(RequestResult.class, documentListMethod.getReturnType());
|
||||
assertEquals(RequestResult.class, documentQueryMethod.getReturnType());
|
||||
assertEquals(List.class, documentServiceQueryMethod.getReturnType());
|
||||
assertTrue(documentResponseListMethod.getGenericReturnType().getTypeName().contains("RagDocumentResponse"));
|
||||
assertTrue(documentServiceQueryMethod.getGenericReturnType().getTypeName().contains("RagDocumentResponse"));
|
||||
assertTrue(documentListMethod.getGenericReturnType().getTypeName().contains("RagDocumentResponse"));
|
||||
assertTrue(documentQueryMethod.getGenericReturnType().getTypeName().contains("RagDocumentResponse"));
|
||||
assertEquals(RagDocumentResponse.class, RagDocumentResponse.class.getMethod("fromEntity", RagDocument.class).getReturnType());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user