删除DeviceTaskUpdateServiceTest测试类,简化代码结构
This commit is contained in:
@@ -1,157 +0,0 @@
|
|||||||
package com.gameplatform.server.service.link;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.gameplatform.server.mapper.agent.LinkTaskMapper;
|
|
||||||
import com.gameplatform.server.model.dto.device.DeviceStatusResponse;
|
|
||||||
import com.gameplatform.server.model.entity.agent.LinkTask;
|
|
||||||
import com.gameplatform.server.service.detection.GameCompletionDetectionService;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.mockito.Mock;
|
|
||||||
import org.mockito.MockitoAnnotations;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.*;
|
|
||||||
import static org.mockito.Mockito.*;
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DeviceTaskUpdateService 测试
|
|
||||||
*/
|
|
||||||
public class DeviceTaskUpdateServiceTest {
|
|
||||||
|
|
||||||
private DeviceTaskUpdateService deviceTaskUpdateService;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private LinkTaskMapper linkTaskMapper;
|
|
||||||
|
|
||||||
@Mock
|
|
||||||
private GameCompletionDetectionService gameCompletionDetectionService;
|
|
||||||
|
|
||||||
private ObjectMapper objectMapper;
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setUp() {
|
|
||||||
MockitoAnnotations.openMocks(this);
|
|
||||||
objectMapper = new ObjectMapper();
|
|
||||||
deviceTaskUpdateService = new DeviceTaskUpdateService(linkTaskMapper, objectMapper, gameCompletionDetectionService);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpdateTaskByDeviceStatus_WithPoints() {
|
|
||||||
// 准备测试数据
|
|
||||||
DeviceStatusResponse.DeviceInfo deviceInfo = new DeviceStatusResponse.DeviceInfo();
|
|
||||||
deviceInfo.setDeviceId("f1");
|
|
||||||
deviceInfo.setVal("5300");
|
|
||||||
deviceInfo.setAvailable(false);
|
|
||||||
|
|
||||||
LinkTask task1 = createMockTask(1L, "ABC123");
|
|
||||||
LinkTask task2 = createMockTask(2L, "DEF456");
|
|
||||||
List<LinkTask> tasks = Arrays.asList(task1, task2);
|
|
||||||
|
|
||||||
when(linkTaskMapper.findByMachineIdAndStatus("f1", "LOGGED_IN")).thenReturn(tasks);
|
|
||||||
when(linkTaskMapper.updatePointsIfGreater(anyLong(), anyInt())).thenReturn(1);
|
|
||||||
when(gameCompletionDetectionService.detectGameCompletion("f1", "5300", "EVENT_LISTENER")).thenReturn(false);
|
|
||||||
|
|
||||||
// 执行测试
|
|
||||||
deviceTaskUpdateService.updateTaskByDeviceStatus(deviceInfo);
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
verify(gameCompletionDetectionService).detectGameCompletion("f1", "5300", "EVENT_LISTENER");
|
|
||||||
verify(linkTaskMapper).findByMachineIdAndStatus("f1", "LOGGED_IN");
|
|
||||||
verify(linkTaskMapper, times(2)).updatePointsIfGreater(anyLong(), eq(5300));
|
|
||||||
|
|
||||||
// 验证任务状态仍为LOGGED_IN(点数更新通过数据库完成,不修改内存对象)
|
|
||||||
assertEquals("LOGGED_IN", task1.getStatus());
|
|
||||||
assertEquals("LOGGED_IN", task2.getStatus());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpdateTaskByDeviceStatus_Completed() {
|
|
||||||
// 准备测试数据
|
|
||||||
DeviceStatusResponse.DeviceInfo deviceInfo = new DeviceStatusResponse.DeviceInfo();
|
|
||||||
deviceInfo.setDeviceId("f1");
|
|
||||||
deviceInfo.setVal("已打完");
|
|
||||||
deviceInfo.setAvailable(false);
|
|
||||||
|
|
||||||
when(gameCompletionDetectionService.detectGameCompletion("f1", "已打完", "EVENT_LISTENER")).thenReturn(true);
|
|
||||||
|
|
||||||
// 执行测试
|
|
||||||
deviceTaskUpdateService.updateTaskByDeviceStatus(deviceInfo);
|
|
||||||
|
|
||||||
// 验证结果 - 新逻辑中,完成检测由 GameCompletionDetectionService 处理
|
|
||||||
verify(gameCompletionDetectionService).detectGameCompletion("f1", "已打完", "EVENT_LISTENER");
|
|
||||||
// 由于 "已打完" 不是数字,不会调用 updateTaskPointsOnly
|
|
||||||
verify(linkTaskMapper, never()).findByMachineIdAndStatus(anyString(), anyString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpdateTaskByDeviceStatus_Idle() {
|
|
||||||
// 准备测试数据
|
|
||||||
DeviceStatusResponse.DeviceInfo deviceInfo = new DeviceStatusResponse.DeviceInfo();
|
|
||||||
deviceInfo.setDeviceId("f1");
|
|
||||||
deviceInfo.setVal("空闲");
|
|
||||||
deviceInfo.setAvailable(true);
|
|
||||||
|
|
||||||
when(gameCompletionDetectionService.detectGameCompletion("f1", "空闲", "EVENT_LISTENER")).thenReturn(false);
|
|
||||||
|
|
||||||
// 执行测试
|
|
||||||
deviceTaskUpdateService.updateTaskByDeviceStatus(deviceInfo);
|
|
||||||
|
|
||||||
// 验证结果 - 新逻辑中,空闲状态由 GameCompletionDetectionService 处理
|
|
||||||
verify(gameCompletionDetectionService).detectGameCompletion("f1", "空闲", "EVENT_LISTENER");
|
|
||||||
// 由于 "空闲" 不是数字,不会调用 updateTaskPointsOnly
|
|
||||||
verify(linkTaskMapper, never()).findByMachineIdAndStatus(anyString(), anyString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpdateTaskByDeviceStatus_NoTasks() {
|
|
||||||
// 准备测试数据
|
|
||||||
DeviceStatusResponse.DeviceInfo deviceInfo = new DeviceStatusResponse.DeviceInfo();
|
|
||||||
deviceInfo.setDeviceId("f1");
|
|
||||||
deviceInfo.setVal("5300");
|
|
||||||
deviceInfo.setAvailable(false);
|
|
||||||
|
|
||||||
when(linkTaskMapper.findByMachineIdAndStatus("f1", "LOGGED_IN")).thenReturn(Arrays.asList());
|
|
||||||
when(gameCompletionDetectionService.detectGameCompletion("f1", "5300", "EVENT_LISTENER")).thenReturn(false);
|
|
||||||
|
|
||||||
// 执行测试
|
|
||||||
deviceTaskUpdateService.updateTaskByDeviceStatus(deviceInfo);
|
|
||||||
|
|
||||||
// 验证结果
|
|
||||||
verify(gameCompletionDetectionService).detectGameCompletion("f1", "5300", "EVENT_LISTENER");
|
|
||||||
verify(linkTaskMapper).findByMachineIdAndStatus("f1", "LOGGED_IN");
|
|
||||||
verify(linkTaskMapper, never()).updatePointsIfGreater(anyLong(), anyInt());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testUpdateTaskByDeviceStatus_UnknownStatus() {
|
|
||||||
// 准备测试数据
|
|
||||||
DeviceStatusResponse.DeviceInfo deviceInfo = new DeviceStatusResponse.DeviceInfo();
|
|
||||||
deviceInfo.setDeviceId("f1");
|
|
||||||
deviceInfo.setVal("未知状态");
|
|
||||||
deviceInfo.setAvailable(false);
|
|
||||||
|
|
||||||
when(gameCompletionDetectionService.detectGameCompletion("f1", "未知状态", "EVENT_LISTENER")).thenReturn(false);
|
|
||||||
|
|
||||||
// 执行测试
|
|
||||||
deviceTaskUpdateService.updateTaskByDeviceStatus(deviceInfo);
|
|
||||||
|
|
||||||
// 验证结果 - 新逻辑中,所有状态都会通过 GameCompletionDetectionService 处理
|
|
||||||
verify(gameCompletionDetectionService).detectGameCompletion("f1", "未知状态", "EVENT_LISTENER");
|
|
||||||
// 由于 "未知状态" 不是数字,不会调用 updateTaskPointsOnly
|
|
||||||
verify(linkTaskMapper, never()).findByMachineIdAndStatus(anyString(), anyString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private LinkTask createMockTask(Long id, String codeNo) {
|
|
||||||
LinkTask task = new LinkTask();
|
|
||||||
task.setId(id);
|
|
||||||
task.setCodeNo(codeNo);
|
|
||||||
task.setStatus("LOGGED_IN");
|
|
||||||
task.setCreatedAt(LocalDateTime.now());
|
|
||||||
return task;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user