2026-06-16 11:11:34 +08:00
|
|
|
package com.gbg.activate.video.service;
|
2026-05-08 19:15:39 +08:00
|
|
|
|
|
|
|
|
import com.gbg.activate.video.config.ImageSdkParams;
|
|
|
|
|
import com.gbg.activate.video.entity.VideoSigningDownloadRecordDO;
|
|
|
|
|
import com.gbg.activate.video.mapper.VideoSigningDownloadRecordMapper;
|
|
|
|
|
import com.gbg.activate.video.service.ClearExpiredFileServiceImpl;
|
|
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import static org.mockito.Mockito.*;
|
|
|
|
|
|
|
|
|
|
public class ClearExpiredFileServiceImplTest {
|
|
|
|
|
|
|
|
|
|
private ClearExpiredFileServiceImpl service;
|
|
|
|
|
private ImageSdkParams params;
|
|
|
|
|
private VideoSigningDownloadRecordMapper recordMapper;
|
|
|
|
|
|
|
|
|
|
@BeforeEach
|
|
|
|
|
public void setUp() {
|
|
|
|
|
service = new ClearExpiredFileServiceImpl();
|
|
|
|
|
params = mock(ImageSdkParams.class);
|
|
|
|
|
recordMapper = mock(VideoSigningDownloadRecordMapper.class);
|
|
|
|
|
|
|
|
|
|
// 通过反射注入 mock 对象
|
|
|
|
|
try {
|
|
|
|
|
java.lang.reflect.Field paramsField = ClearExpiredFileServiceImpl.class.getDeclaredField("params");
|
|
|
|
|
paramsField.setAccessible(true);
|
|
|
|
|
paramsField.set(service, params);
|
|
|
|
|
|
|
|
|
|
java.lang.reflect.Field mapperField = ClearExpiredFileServiceImpl.class.getDeclaredField("recordMapper");
|
|
|
|
|
mapperField.setAccessible(true);
|
|
|
|
|
mapperField.set(service, recordMapper);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testClearExpiredFilesWithNoRecords() {
|
|
|
|
|
when(params.getValidDays()).thenReturn(30);
|
|
|
|
|
when(recordMapper.listExpiredRecords(30)).thenReturn(new ArrayList<>());
|
|
|
|
|
|
|
|
|
|
service.clearExpiredFiles();
|
|
|
|
|
|
|
|
|
|
verify(recordMapper, times(1)).listExpiredRecords(30);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testClearExpiredFilesWithRecords() {
|
|
|
|
|
when(params.getValidDays()).thenReturn(30);
|
|
|
|
|
when(params.getFileSavePath()).thenReturn("/tmp");
|
|
|
|
|
|
|
|
|
|
List<VideoSigningDownloadRecordDO> records = new ArrayList<>();
|
|
|
|
|
VideoSigningDownloadRecordDO record = new VideoSigningDownloadRecordDO();
|
|
|
|
|
record.setApplicationNumber("APP001");
|
|
|
|
|
record.setImageId("IMG001");
|
|
|
|
|
record.setImageName("test.mp4");
|
|
|
|
|
records.add(record);
|
|
|
|
|
|
|
|
|
|
when(recordMapper.listExpiredRecords(30)).thenReturn(records);
|
|
|
|
|
|
|
|
|
|
service.clearExpiredFiles();
|
|
|
|
|
|
|
|
|
|
verify(recordMapper, times(1)).listExpiredRecords(30);
|
|
|
|
|
verify(recordMapper, times(1)).deleteByPrimaryKey("APP001", "IMG001");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
public void testClearExpiredFilesWithError() {
|
|
|
|
|
when(params.getValidDays()).thenReturn(30);
|
|
|
|
|
when(params.getFileSavePath()).thenReturn(null); // 这将导致异常
|
|
|
|
|
|
|
|
|
|
List<VideoSigningDownloadRecordDO> records = new ArrayList<>();
|
|
|
|
|
VideoSigningDownloadRecordDO record = new VideoSigningDownloadRecordDO();
|
|
|
|
|
record.setApplicationNumber("APP001");
|
|
|
|
|
record.setImageId("IMG001");
|
|
|
|
|
record.setImageName("test.mp4");
|
|
|
|
|
records.add(record);
|
|
|
|
|
|
|
|
|
|
when(recordMapper.listExpiredRecords(30)).thenReturn(records);
|
|
|
|
|
|
|
|
|
|
service.clearExpiredFiles();
|
|
|
|
|
|
|
|
|
|
verify(recordMapper, times(1)).listExpiredRecords(30);
|
|
|
|
|
}
|
|
|
|
|
}
|