blob: 5d7609daacbb844e64e924b8e64abc8797610217 [file] [log] [blame]
package com.example.myproject.controller;
import com.example.myproject.controller.TaskController;
import com.example.myproject.service.TaskService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.http.ResponseEntity;
import java.util.HashMap;
import java.util.Map;
import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
class TaskControllerTest {
@InjectMocks
private TaskController taskController;
@Mock
private TaskService taskService;
@BeforeEach
void setup() {
MockitoAnnotations.openMocks(this);
}
// 测试获取当前用户的新手任务列表接口
@Test
void testGetAllTasks() {
Long userId = 1L;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("tasks", "mock_tasks");
// 模拟 taskService.getAllTasksForUser 返回
when(taskService.getAllTasksForUser(userId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
// 调用控制器方法
Map<String, Object> response = taskController.getAllTasks(request);
// 验证返回的结果
assertEquals("mock_tasks", response.get("tasks"));
}
// 测试更新任务状态接口
@Test
void testUpdateTaskStatus() {
Long userId = 1L;
String taskId = "task_123";
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("message", "任务状态已更新");
// 模拟 taskService.updateTaskStatus 返回
when(taskService.updateTaskStatus(userId, taskId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
request.put("task_id", taskId);
// 调用控制器方法
Map<String, Object> response = taskController.updateTaskStatus(request);
// 验证返回的结果
assertEquals("success", response.get("status"));
assertEquals("任务状态已更新", response.get("message"));
}
// 测试获取当前经验和任务奖励接口
@Test
void testGetExperience() {
Long userId = 1L;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("current_experience", 1500);
mockResponse.put("level", "Intermediate");
mockResponse.put("reward", Map.of("experience", 1000, "points", 200));
// 模拟 taskService.getUserExperience 返回
when(taskService.getUserExperience(userId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
// 调用控制器方法
Map<String, Object> response = taskController.getExperience(request);
// 验证返回的结果
assertEquals(1500, response.get("current_experience"));
assertEquals("Intermediate", response.get("level"));
assertTrue(response.containsKey("reward"));
}
// 测试获取当前的指引步骤接口
@Test
void testGetNewStep() {
Long userId = 1L;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("current_step", "step_1");
mockResponse.put("total_steps", 5);
mockResponse.put("step_description", "Complete the introduction task");
// 模拟 taskService.getNewStep 返回
when(taskService.getNewStep(userId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
// 调用控制器方法
Map<String, Object> response = taskController.getNewStep(request);
// 验证返回的结果
assertEquals("step_1", response.get("current_step"));
assertEquals(5, response.get("total_steps"));
assertEquals("Complete the introduction task", response.get("step_description"));
}
// 测试更新进度接口
@Test
void testUpdateProgress() {
Long userId = 1L;
String taskId = "task_123";
Integer progress = 50;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("message", "进度已更新");
// 模拟 taskService.updateTaskProgress 返回
when(taskService.updateTaskProgress(userId, taskId, progress)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
request.put("task_id", taskId);
request.put("progress", progress);
// 调用控制器方法
Map<String, Object> response = taskController.updateProgress(request);
// 验证返回的结果
assertEquals("success", response.get("status"));
assertEquals("进度已更新", response.get("message"));
}
// 测试领取任务奖励接口
@Test
void testRewardClaim() {
Long userId = 1L;
String taskId = "task_123";
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("message", "奖励已领取");
mockResponse.put("reward", Map.of("experience", 1000, "points", 200));
// 模拟 taskService.claimReward 返回
when(taskService.claimReward(userId, taskId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
request.put("task_id", taskId);
// 调用控制器方法
Map<String, Object> response = taskController.rewardClaim(request);
// 验证返回的结果
assertEquals("success", response.get("status"));
assertEquals("奖励已领取", response.get("message"));
assertTrue(response.containsKey("reward"));
}
// 测试检查任务奖励状态接口
@Test
void testRewardReview() {
Long userId = 1L;
String taskId = "task_123";
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "reward_not_issued");
mockResponse.put("message", "任务奖励未被领取");
// 模拟 taskService.checkRewardStatus 返回
when(taskService.checkRewardStatus(userId, taskId)).thenReturn(mockResponse);
// 创建请求体
Map<String, Object> request = new HashMap<>();
request.put("user_id", userId);
request.put("task_id", taskId);
// 调用控制器方法
Map<String, Object> response = taskController.rewardReview(request);
// 验证返回的结果
assertEquals("reward_not_issued", response.get("status"));
assertEquals("任务奖励未被领取", response.get("message"));
}
}