infra:完善 file 的单元测试
This commit is contained in:
parent
ac661150d7
commit
ee7cb5055c
@ -8,8 +8,6 @@ import cn.iocoder.yudao.module.infra.controller.admin.file.vo.config.FileConfigU
|
|||||||
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
|
import cn.iocoder.yudao.module.infra.dal.dataobject.file.FileConfigDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件配置 Service 接口
|
* 文件配置 Service 接口
|
||||||
@ -60,14 +58,6 @@ public interface FileConfigService {
|
|||||||
*/
|
*/
|
||||||
FileConfigDO getFileConfig(Long id);
|
FileConfigDO getFileConfig(Long id);
|
||||||
|
|
||||||
/**
|
|
||||||
* 获得文件配置列表
|
|
||||||
*
|
|
||||||
* @param ids 编号
|
|
||||||
* @return 文件配置列表
|
|
||||||
*/
|
|
||||||
List<FileConfigDO> getFileConfigList(Collection<Long> ids);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得文件配置分页
|
* 获得文件配置分页
|
||||||
*
|
*
|
||||||
|
@ -27,7 +27,6 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Validator;
|
import javax.validation.Validator;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -95,7 +94,7 @@ public class FileConfigServiceImpl implements FileConfigService {
|
|||||||
@Override
|
@Override
|
||||||
public void updateFileConfig(FileConfigUpdateReqVO updateReqVO) {
|
public void updateFileConfig(FileConfigUpdateReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
FileConfigDO config = this.validateFileConfigExists(updateReqVO.getId());
|
FileConfigDO config = validateFileConfigExists(updateReqVO.getId());
|
||||||
// 更新
|
// 更新
|
||||||
FileConfigDO updateObj = FileConfigConvert.INSTANCE.convert(updateReqVO)
|
FileConfigDO updateObj = FileConfigConvert.INSTANCE.convert(updateReqVO)
|
||||||
.setConfig(parseClientConfig(config.getStorage(), updateReqVO.getConfig()));
|
.setConfig(parseClientConfig(config.getStorage(), updateReqVO.getConfig()));
|
||||||
@ -108,7 +107,7 @@ public class FileConfigServiceImpl implements FileConfigService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateFileConfigMaster(Long id) {
|
public void updateFileConfigMaster(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
this.validateFileConfigExists(id);
|
validateFileConfigExists(id);
|
||||||
// 更新其它为非 master
|
// 更新其它为非 master
|
||||||
fileConfigMapper.updateBatch(new FileConfigDO().setMaster(false));
|
fileConfigMapper.updateBatch(new FileConfigDO().setMaster(false));
|
||||||
// 更新
|
// 更新
|
||||||
@ -138,9 +137,9 @@ public class FileConfigServiceImpl implements FileConfigService {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteFileConfig(Long id) {
|
public void deleteFileConfig(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
FileConfigDO config = this.validateFileConfigExists(id);
|
FileConfigDO config = validateFileConfigExists(id);
|
||||||
if (Boolean.TRUE.equals(config.getMaster())) {
|
if (Boolean.TRUE.equals(config.getMaster())) {
|
||||||
throw exception(FILE_CONFIG_DELETE_FAIL_MASTER);
|
throw exception(FILE_CONFIG_DELETE_FAIL_MASTER);
|
||||||
}
|
}
|
||||||
// 删除
|
// 删除
|
||||||
fileConfigMapper.deleteById(id);
|
fileConfigMapper.deleteById(id);
|
||||||
@ -161,11 +160,6 @@ public class FileConfigServiceImpl implements FileConfigService {
|
|||||||
return fileConfigMapper.selectById(id);
|
return fileConfigMapper.selectById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<FileConfigDO> getFileConfigList(Collection<Long> ids) {
|
|
||||||
return fileConfigMapper.selectBatchIds(ids);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<FileConfigDO> getFileConfigPage(FileConfigPageReqVO pageReqVO) {
|
public PageResult<FileConfigDO> getFileConfigPage(FileConfigPageReqVO pageReqVO) {
|
||||||
return fileConfigMapper.selectPage(pageReqVO);
|
return fileConfigMapper.selectPage(pageReqVO);
|
||||||
@ -174,7 +168,7 @@ public class FileConfigServiceImpl implements FileConfigService {
|
|||||||
@Override
|
@Override
|
||||||
public String testFileConfig(Long id) throws Exception {
|
public String testFileConfig(Long id) throws Exception {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
this.validateFileConfigExists(id);
|
validateFileConfigExists(id);
|
||||||
// 上传文件
|
// 上传文件
|
||||||
byte[] content = ResourceUtil.readBytes("file/erweima.jpg");
|
byte[] content = ResourceUtil.readBytes("file/erweima.jpg");
|
||||||
return fileClientFactory.getFileClient(id).upload(content, IdUtil.fastSimpleUUID() + ".jpg", "image/jpeg");
|
return fileClientFactory.getFileClient(id).upload(content, IdUtil.fastSimpleUUID() + ".jpg", "image/jpeg");
|
||||||
|
@ -69,7 +69,7 @@ public class FileServiceImpl implements FileService {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteFile(Long id) throws Exception {
|
public void deleteFile(Long id) throws Exception {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
FileDO file = this.validateFileExists(id);
|
FileDO file = validateFileExists(id);
|
||||||
|
|
||||||
// 从文件存储器中删除
|
// 从文件存储器中删除
|
||||||
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
FileClient client = fileConfigService.getFileClient(file.getConfigId());
|
||||||
|
@ -45,7 +45,7 @@ public class TestDemoServiceImpl implements TestDemoService {
|
|||||||
@CacheEvict(value = "test", key = "#updateReqVO.id")
|
@CacheEvict(value = "test", key = "#updateReqVO.id")
|
||||||
public void updateTestDemo(TestDemoUpdateReqVO updateReqVO) {
|
public void updateTestDemo(TestDemoUpdateReqVO updateReqVO) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
this.validateTestDemoExists(updateReqVO.getId());
|
validateTestDemoExists(updateReqVO.getId());
|
||||||
// 更新
|
// 更新
|
||||||
TestDemoDO updateObj = TestDemoConvert.INSTANCE.convert(updateReqVO);
|
TestDemoDO updateObj = TestDemoConvert.INSTANCE.convert(updateReqVO);
|
||||||
testDemoMapper.updateById(updateObj);
|
testDemoMapper.updateById(updateObj);
|
||||||
@ -55,7 +55,7 @@ public class TestDemoServiceImpl implements TestDemoService {
|
|||||||
@CacheEvict(value = "test", key = "#id")
|
@CacheEvict(value = "test", key = "#id")
|
||||||
public void deleteTestDemo(Long id) {
|
public void deleteTestDemo(Long id) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
this.validateTestDemoExists(id);
|
validateTestDemoExists(id);
|
||||||
// 删除
|
// 删除
|
||||||
testDemoMapper.deleteById(id);
|
testDemoMapper.deleteById(id);
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
|
|||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
@Import(ConfigServiceImpl.class)
|
@Import(ConfigServiceImpl.class)
|
||||||
public class ConfigServiceTest extends BaseDbUnitTest {
|
public class ConfigServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private ConfigServiceImpl configService;
|
private ConfigServiceImpl configService;
|
@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.file.core.client.FileClient;
|
import cn.iocoder.yudao.framework.file.core.client.FileClient;
|
||||||
import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
|
import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
|
||||||
import cn.iocoder.yudao.framework.file.core.client.FileClientFactory;
|
import cn.iocoder.yudao.framework.file.core.client.FileClientFactory;
|
||||||
|
import cn.iocoder.yudao.framework.file.core.client.local.LocalFileClient;
|
||||||
import cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig;
|
import cn.iocoder.yudao.framework.file.core.client.local.LocalFileClientConfig;
|
||||||
import cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum;
|
import cn.iocoder.yudao.framework.file.core.enums.FileStorageEnum;
|
||||||
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
|
||||||
@ -41,10 +42,10 @@ import static org.mockito.ArgumentMatchers.eq;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@link FileConfigServiceImpl} 的单元测试类
|
* {@link FileConfigServiceImpl} 的单元测试类
|
||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@Import(FileConfigServiceImpl.class)
|
@Import(FileConfigServiceImpl.class)
|
||||||
public class FileConfigServiceImplTest extends BaseDbUnitTest {
|
public class FileConfigServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@ -171,8 +172,8 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
|
|||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
fileConfigService.deleteFileConfig(id);
|
fileConfigService.deleteFileConfig(id);
|
||||||
// 校验数据不存在了
|
// 校验数据不存在了
|
||||||
assertNull(fileConfigMapper.selectById(id));
|
assertNull(fileConfigMapper.selectById(id));
|
||||||
// verify 调用
|
// verify 调用
|
||||||
verify(fileConfigProducer).sendFileConfigRefreshMessage();
|
verify(fileConfigProducer).sendFileConfigRefreshMessage();
|
||||||
}
|
}
|
||||||
@ -200,30 +201,30 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetFileConfigPage() {
|
public void testGetFileConfigPage() {
|
||||||
// mock 数据
|
// mock 数据
|
||||||
FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码")
|
FileConfigDO dbFileConfig = randomFileConfigDO().setName("芋道源码")
|
||||||
.setStorage(FileStorageEnum.LOCAL.getStorage());
|
.setStorage(FileStorageEnum.LOCAL.getStorage());
|
||||||
dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到
|
dbFileConfig.setCreateTime(LocalDateTimeUtil.parse("2020-01-23", DatePattern.NORM_DATE_PATTERN));// 等会查询到
|
||||||
fileConfigMapper.insert(dbFileConfig);
|
fileConfigMapper.insert(dbFileConfig);
|
||||||
// 测试 name 不匹配
|
// 测试 name 不匹配
|
||||||
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码")));
|
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setName("源码")));
|
||||||
// 测试 storage 不匹配
|
// 测试 storage 不匹配
|
||||||
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage())));
|
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setStorage(FileStorageEnum.DB.getStorage())));
|
||||||
// 测试 createTime 不匹配
|
// 测试 createTime 不匹配
|
||||||
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN))));
|
fileConfigMapper.insert(cloneIgnoreId(dbFileConfig, o -> o.setCreateTime(LocalDateTimeUtil.parse("2020-11-23", DatePattern.NORM_DATE_PATTERN))));
|
||||||
// 准备参数
|
// 准备参数
|
||||||
FileConfigPageReqVO reqVO = new FileConfigPageReqVO();
|
FileConfigPageReqVO reqVO = new FileConfigPageReqVO();
|
||||||
reqVO.setName("芋道");
|
reqVO.setName("芋道");
|
||||||
reqVO.setStorage(FileStorageEnum.LOCAL.getStorage());
|
reqVO.setStorage(FileStorageEnum.LOCAL.getStorage());
|
||||||
reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1),
|
reqVO.setCreateTime((new LocalDateTime[]{buildTime(2020, 1, 1),
|
||||||
buildTime(2020, 1, 24)}));
|
buildTime(2020, 1, 24)}));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO);
|
PageResult<FileConfigDO> pageResult = fileConfigService.getFileConfigPage(reqVO);
|
||||||
// 断言
|
// 断言
|
||||||
assertEquals(1, pageResult.getTotal());
|
assertEquals(1, pageResult.getTotal());
|
||||||
assertEquals(1, pageResult.getList().size());
|
assertEquals(1, pageResult.getList().size());
|
||||||
assertPojoEquals(dbFileConfig, pageResult.getList().get(0));
|
assertPojoEquals(dbFileConfig, pageResult.getList().get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -242,6 +243,30 @@ public class FileConfigServiceImplTest extends BaseDbUnitTest {
|
|||||||
assertEquals("https://www.iocoder.cn", fileConfigService.testFileConfig(id));
|
assertEquals("https://www.iocoder.cn", fileConfigService.testFileConfig(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetFileConfig() {
|
||||||
|
// mock 数据
|
||||||
|
FileConfigDO dbFileConfig = randomFileConfigDO().setMaster(false);
|
||||||
|
fileConfigMapper.insert(dbFileConfig);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbFileConfig.getId();
|
||||||
|
|
||||||
|
// 调用,并断言
|
||||||
|
assertPojoEquals(dbFileConfig, fileConfigService.getFileConfig(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetFileClient() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
// mock 获得 Client
|
||||||
|
FileClient fileClient = new LocalFileClient(id, new LocalFileClientConfig());
|
||||||
|
when(fileClientFactory.getFileClient(eq(id))).thenReturn(fileClient);
|
||||||
|
|
||||||
|
// 调用,并断言
|
||||||
|
assertSame(fileClient, fileConfigService.getFileClient(id));
|
||||||
|
}
|
||||||
|
|
||||||
private FileConfigDO randomFileConfigDO() {
|
private FileConfigDO randomFileConfigDO() {
|
||||||
return randomPojo(FileConfigDO.class).setStorage(randomEle(FileStorageEnum.values()).getStorage())
|
return randomPojo(FileConfigDO.class).setStorage(randomEle(FileStorageEnum.values()).getStorage())
|
||||||
.setConfig(new EmptyFileClientConfig());
|
.setConfig(new EmptyFileClientConfig());
|
||||||
|
@ -16,7 +16,7 @@ import org.springframework.context.annotation.Import;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildLocalDateTime;
|
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.buildTime;
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException;
|
||||||
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
|
||||||
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS;
|
||||||
@ -25,7 +25,7 @@ import static org.mockito.ArgumentMatchers.same;
|
|||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
@Import({FileServiceImpl.class})
|
@Import({FileServiceImpl.class})
|
||||||
public class FileServiceTest extends BaseDbUnitTest {
|
public class FileServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private FileService fileService;
|
private FileService fileService;
|
||||||
@ -42,7 +42,7 @@ public class FileServiceTest extends BaseDbUnitTest {
|
|||||||
FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到
|
FileDO dbFile = randomPojo(FileDO.class, o -> { // 等会查询到
|
||||||
o.setPath("yunai");
|
o.setPath("yunai");
|
||||||
o.setType("image/jpg");
|
o.setType("image/jpg");
|
||||||
o.setCreateTime(buildLocalDateTime(2021, 1, 15));
|
o.setCreateTime(buildTime(2021, 1, 15));
|
||||||
});
|
});
|
||||||
fileMapper.insert(dbFile);
|
fileMapper.insert(dbFile);
|
||||||
// 测试 path 不匹配
|
// 测试 path 不匹配
|
||||||
@ -53,13 +53,13 @@ public class FileServiceTest extends BaseDbUnitTest {
|
|||||||
}));
|
}));
|
||||||
// 测试 createTime 不匹配
|
// 测试 createTime 不匹配
|
||||||
fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> {
|
fileMapper.insert(ObjectUtils.cloneIgnoreId(dbFile, o -> {
|
||||||
o.setCreateTime(buildLocalDateTime(2020, 1, 15));
|
o.setCreateTime(buildTime(2020, 1, 15));
|
||||||
}));
|
}));
|
||||||
// 准备参数
|
// 准备参数
|
||||||
FilePageReqVO reqVO = new FilePageReqVO();
|
FilePageReqVO reqVO = new FilePageReqVO();
|
||||||
reqVO.setPath("yunai");
|
reqVO.setPath("yunai");
|
||||||
reqVO.setType("jp");
|
reqVO.setType("jp");
|
||||||
reqVO.setCreateTime((new LocalDateTime[]{buildLocalDateTime(2021, 1, 10), buildLocalDateTime(2021, 1, 20)}));
|
reqVO.setCreateTime((new LocalDateTime[]{buildTime(2021, 1, 10), buildTime(2021, 1, 20)}));
|
||||||
|
|
||||||
// 调用
|
// 调用
|
||||||
PageResult<FileDO> pageResult = fileService.getFilePage(reqVO);
|
PageResult<FileDO> pageResult = fileService.getFilePage(reqVO);
|
Loading…
Reference in New Issue
Block a user