blob: 850a3f30dd3f608d02d20c644dc86638eec96898 [file] [log] [blame]
223011385e9c35a2025-06-04 15:52:45 +08001package com.example.myproject.controller;
2
3import com.example.myproject.controller.DynamicController;
4import com.example.myproject.service.DynamicService;
5import org.junit.jupiter.api.BeforeEach;
6import org.junit.jupiter.api.Test;
7import org.mockito.InjectMocks;
8import org.mockito.Mock;
9import org.mockito.MockitoAnnotations;
10import org.springframework.http.ResponseEntity;
11
12import java.util.HashMap;
13import java.util.Map;
14
15import static org.mockito.Mockito.*;
16import static org.junit.jupiter.api.Assertions.*;
17
18class DynamicControllerTest {
19
20 @InjectMocks
21 private DynamicController dynamicController;
22
23 @Mock
24 private DynamicService dynamicService;
25
26 @BeforeEach
27 void setup() {
28 MockitoAnnotations.openMocks(this);
29 }
30
31 // 测试创建动态接口
32 @Test
33 void testCreateDynamic() {
34 Long userId = 1L;
35 String content = "This is a test dynamic";
36 Map<String, Object> mockResponse = new HashMap<>();
37 mockResponse.put("dynamicId", 123L);
38 mockResponse.put("message", "动态创建成功");
39
40 // 模拟 dynamicService.createDynamic 返回
41 when(dynamicService.createDynamic(userId, null, content, null)).thenReturn(mockResponse);
42
43 // 调用控制器方法
44 Map<String, Object> responseMap = dynamicController.createDynamic(userId, null, content, null);
45 ResponseEntity<Map<String, Object>> responseEntity = ResponseEntity.ok(responseMap);
46
47 // 验证返回的结果
48 assertEquals(200, responseEntity.getStatusCodeValue());
49 assertEquals("动态创建成功", responseEntity.getBody().get("message"));
50 assertEquals(123L, responseEntity.getBody().get("dynamicId"));
51 }
52
53
54 // 测试删除动态接口
55 @Test
56 void testDeleteDynamic() {
57 Long dynamicId = 1L;
58 // 模拟 dynamicService.deleteDynamic 方法行为
59 doNothing().when(dynamicService).deleteDynamic(dynamicId);
60
61 // 调用控制器方法
62 ResponseEntity<String> response = dynamicController.deleteDynamic(dynamicId);
63
64 // 验证返回的结果
65 assertEquals(200, response.getStatusCodeValue());
66 assertEquals("动态删除成功", response.getBody());
67 }
68
223011385e9c35a2025-06-04 15:52:45 +080069 @Test
70 void testAddComment() {
71 Long userId = 1L;
72 Long dynamicId = 1L;
JinGefe5140c2025-06-06 20:07:42 +080073 Map<String, Object> commentContent = new HashMap<>();
223011385e9c35a2025-06-04 15:52:45 +080074 commentContent.put("content", "This is a test comment");
JinGefe5140c2025-06-06 20:07:42 +080075 commentContent.put("parent_comment_id", null);
223011385e9c35a2025-06-04 15:52:45 +080076
77 Map<String, Object> mockResponse = new HashMap<>();
78 mockResponse.put("comment_id", 101L);
79 mockResponse.put("message", "评论成功");
JinGefe5140c2025-06-06 20:07:42 +080080 when(dynamicService.addComment(userId, dynamicId, "This is a test comment", null)).thenReturn(mockResponse);
223011385e9c35a2025-06-04 15:52:45 +080081
82 // 调用控制器方法
83 ResponseEntity<Map<String, Object>> response = dynamicController.addComment(userId, dynamicId, commentContent);
84
85 // 验证返回的结果
86 assertEquals(200, response.getStatusCodeValue());
87 assertEquals("评论成功", response.getBody().get("message"));
88 assertEquals(101L, response.getBody().get("comment_id"));
89 }
90
JinGefe5140c2025-06-06 20:07:42 +080091
223011385e9c35a2025-06-04 15:52:45 +080092 // 测试获取用户动态接口
93 @Test
94 void testGetAllUserDynamics() {
95 Long userId = 1L;
96 Map<String, Object> mockResponse = new HashMap<>();
97 mockResponse.put("status", "success");
98 mockResponse.put("dynamic", "mock_dynamic_data");
99
100 // 模拟 dynamicService.getAllUserDynamics 返回
101 when(dynamicService.getAllUserDynamics(userId)).thenReturn(mockResponse);
102
103 // 调用控制器方法
104 ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserDynamics(userId);
105
106 // 验证返回的结果
107 assertEquals(200, response.getStatusCodeValue());
108 assertEquals("success", response.getBody().get("status"));
109 assertNotNull(response.getBody().get("dynamic"));
110 }
111
112 // 测试获取所有好友动态接口
113 @Test
114 void testGetAllUserAndFriendsDynamics() {
115 Long userId = 1L;
116 Map<String, Object> mockResponse = new HashMap<>();
117 mockResponse.put("status", "success");
118 mockResponse.put("dynamic", "mock_friend_dynamic_data");
119
120 // 模拟 dynamicService.getAllUserAndFriendsDynamics 返回
121 when(dynamicService.getAllUserAndFriendsDynamics(anyList())).thenReturn(mockResponse);
122
123 // 调用控制器方法
124 ResponseEntity<Map<String, Object>> response = dynamicController.getAllUserAndFriendsDynamics(userId);
125
126 // 验证返回的结果
127 assertEquals(200, response.getStatusCodeValue());
128 assertEquals("success", response.getBody().get("status"));
129 assertNotNull(response.getBody().get("dynamic"));
130 }
131
132 // 测试点赞动态接口
133 @Test
134 void testLikeDynamic() {
135 Map<String, Long> request = new HashMap<>();
136 request.put("userId", 1L);
137 request.put("dynamicId", 1L);
138
139 // 模拟 dynamicService.likeDynamic 返回
140 when(dynamicService.likeDynamic(1L, 1L)).thenReturn(true);
141
142 // 调用控制器方法
143 ResponseEntity<String> response = dynamicController.likeDynamic(request);
144
145 // 验证返回的结果
146 assertEquals(200, response.getStatusCodeValue());
147 assertEquals("Like successful", response.getBody());
148 }
149
150 // 测试取消点赞接口
151 @Test
152 void testUnlikeDynamic() {
153 Map<String, Long> request = new HashMap<>();
154 request.put("userId", 1L);
155 request.put("dynamicId", 1L);
156
157 // 模拟 dynamicService.unlikeDynamic 返回
158 when(dynamicService.unlikeDynamic(1L, 1L)).thenReturn(true);
159
160 // 调用控制器方法
161 ResponseEntity<String> response = dynamicController.unlikeDynamic(request);
162
163 // 验证返回的结果
164 assertEquals(200, response.getStatusCodeValue());
165 assertEquals("Unlike successful", response.getBody());
166 }
167}