blob: 850a3f30dd3f608d02d20c644dc86638eec96898 [file] [log] [blame]
package com.example.myproject.controller;
import com.example.myproject.controller.DynamicController;
import com.example.myproject.service.DynamicService;
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 DynamicControllerTest {
@InjectMocks
private DynamicController dynamicController;
@Mock
private DynamicService dynamicService;
@BeforeEach
void setup() {
MockitoAnnotations.openMocks(this);
}
// 测试创建动态接口
@Test
void testCreateDynamic() {
Long userId = 1L;
String content = "This is a test dynamic";
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("dynamicId", 123L);
mockResponse.put("message", "动态创建成功");
// 模拟 dynamicService.createDynamic 返回
when(dynamicService.createDynamic(userId, null, content, null)).thenReturn(mockResponse);
// 调用控制器方法
Map<String, Object> responseMap = dynamicController.createDynamic(userId, null, content, null);
ResponseEntity<Map<String, Object>> responseEntity = ResponseEntity.ok(responseMap);
// 验证返回的结果
assertEquals(200, responseEntity.getStatusCodeValue());
assertEquals("动态创建成功", responseEntity.getBody().get("message"));
assertEquals(123L, responseEntity.getBody().get("dynamicId"));
}
// 测试删除动态接口
@Test
void testDeleteDynamic() {
Long dynamicId = 1L;
// 模拟 dynamicService.deleteDynamic 方法行为
doNothing().when(dynamicService).deleteDynamic(dynamicId);
// 调用控制器方法
ResponseEntity<String> response = dynamicController.deleteDynamic(dynamicId);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("动态删除成功", response.getBody());
}
@Test
void testAddComment() {
Long userId = 1L;
Long dynamicId = 1L;
Map<String, Object> commentContent = new HashMap<>();
commentContent.put("content", "This is a test comment");
commentContent.put("parent_comment_id", null);
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("comment_id", 101L);
mockResponse.put("message", "评论成功");
when(dynamicService.addComment(userId, dynamicId, "This is a test comment", null)).thenReturn(mockResponse);
// 调用控制器方法
ResponseEntity<Map<String, Object>> response = dynamicController.addComment(userId, dynamicId, commentContent);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("评论成功", response.getBody().get("message"));
assertEquals(101L, response.getBody().get("comment_id"));
}
// 测试获取用户动态接口
@Test
void testGetAllUserDynamics() {
Long userId = 1L;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("dynamic", "mock_dynamic_data");
// 模拟 dynamicService.getAllUserDynamics 返回
when(dynamicService.getAllUserDynamics(userId)).thenReturn(mockResponse);
// 调用控制器方法
ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserDynamics(userId);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("success", response.getBody().get("status"));
assertNotNull(response.getBody().get("dynamic"));
}
// 测试获取所有好友动态接口
@Test
void testGetAllUserAndFriendsDynamics() {
Long userId = 1L;
Map<String, Object> mockResponse = new HashMap<>();
mockResponse.put("status", "success");
mockResponse.put("dynamic", "mock_friend_dynamic_data");
// 模拟 dynamicService.getAllUserAndFriendsDynamics 返回
when(dynamicService.getAllUserAndFriendsDynamics(anyList())).thenReturn(mockResponse);
// 调用控制器方法
ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserAndFriendsDynamics(userId);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("success", response.getBody().get("status"));
assertNotNull(response.getBody().get("dynamic"));
}
// 测试点赞动态接口
@Test
void testLikeDynamic() {
Map<String, Long> request = new HashMap<>();
request.put("userId", 1L);
request.put("dynamicId", 1L);
// 模拟 dynamicService.likeDynamic 返回
when(dynamicService.likeDynamic(1L, 1L)).thenReturn(true);
// 调用控制器方法
ResponseEntity<String> response = dynamicController.likeDynamic(request);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("Like successful", response.getBody());
}
// 测试取消点赞接口
@Test
void testUnlikeDynamic() {
Map<String, Long> request = new HashMap<>();
request.put("userId", 1L);
request.put("dynamicId", 1L);
// 模拟 dynamicService.unlikeDynamic 返回
when(dynamicService.unlikeDynamic(1L, 1L)).thenReturn(true);
// 调用控制器方法
ResponseEntity<String> response = dynamicController.unlikeDynamic(request);
// 验证返回的结果
assertEquals(200, response.getStatusCodeValue());
assertEquals("Unlike successful", response.getBody());
}
}