mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-23 15:41:17 +08:00
新增待办过期和历史归档任务
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.jsowell.quartz.task;
|
||||
|
||||
import com.jsowell.system.domain.dto.TodoTaskMaintenanceResult;
|
||||
import com.jsowell.system.service.TodoTaskMaintenanceService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
class TodoTaskMaintenanceTaskTest {
|
||||
@Test
|
||||
void maintain_shouldDelegateToMaintenanceService() {
|
||||
TodoTaskMaintenanceService service = mock(TodoTaskMaintenanceService.class);
|
||||
TodoTaskMaintenanceTask task = new TodoTaskMaintenanceTask();
|
||||
setField(task, "todoTaskMaintenanceService", service);
|
||||
when(service.maintain()).thenReturn(new TodoTaskMaintenanceResult(1, 2, new Date()));
|
||||
|
||||
task.maintain();
|
||||
|
||||
verify(service).maintain();
|
||||
}
|
||||
|
||||
private static void setField(Object target, String fieldName, Object value) {
|
||||
try {
|
||||
Field field = TodoTaskMaintenanceTask.class.getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
field.set(target, value);
|
||||
} catch (Exception exception) {
|
||||
throw new RuntimeException(exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.jsowell.system.service;
|
||||
|
||||
import com.jsowell.system.domain.dto.TodoTaskMaintenanceResult;
|
||||
import com.jsowell.system.mapper.SysTodoTaskMapper;
|
||||
import com.jsowell.system.service.impl.TodoTaskMaintenanceServiceImpl;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Date;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
class TodoTaskMaintenanceServiceImplTest {
|
||||
@Test
|
||||
void maintain_shouldExpireAndKeepAtLeast180Days() {
|
||||
SysTodoTaskMapper mapper = mock(SysTodoTaskMapper.class);
|
||||
TodoTaskMaintenanceServiceImpl service = new TodoTaskMaintenanceServiceImpl();
|
||||
setField(service, "todoTaskMapper", mapper);
|
||||
setField(service, "retentionDays", 30);
|
||||
when(mapper.expireDueTasks(any(Date.class), any(String.class))).thenReturn(2);
|
||||
when(mapper.archiveTerminalTasks(any(Date.class), any(String.class))).thenReturn(3);
|
||||
|
||||
TodoTaskMaintenanceResult result = service.maintain();
|
||||
|
||||
assertEquals(2, result.getExpiredCount());
|
||||
assertEquals(3, result.getArchivedCount());
|
||||
ArgumentCaptor<Date> nowCaptor = ArgumentCaptor.forClass(Date.class);
|
||||
ArgumentCaptor<Date> archiveCaptor = ArgumentCaptor.forClass(Date.class);
|
||||
verify(mapper).expireDueTasks(nowCaptor.capture(), any(String.class));
|
||||
verify(mapper).archiveTerminalTasks(archiveCaptor.capture(), any(String.class));
|
||||
long retentionDays = (nowCaptor.getValue().getTime() - archiveCaptor.getValue().getTime())
|
||||
/ (24L * 60 * 60 * 1000);
|
||||
assertTrue(retentionDays >= 179);
|
||||
}
|
||||
|
||||
private static void setField(Object target, String fieldName, Object value) {
|
||||
try {
|
||||
Field field = TodoTaskMaintenanceServiceImpl.class.getDeclaredField(fieldName);
|
||||
field.setAccessible(true);
|
||||
field.set(target, value);
|
||||
} catch (Exception exception) {
|
||||
throw new RuntimeException(exception);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user