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; } }