blob: 29bf47fa0643faa10286d40144b7794ec73ae376 [file] [log] [blame]
22301138f6824512025-06-04 02:03:13 +08001package com.example.myproject.controller;
2
3import com.example.myproject.controller.UserFollowController;
4import com.example.myproject.service.UserFollowService;
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;
11import java.util.List;
12
13import java.util.Map;
14
15import static org.mockito.Mockito.*;
16import static org.junit.jupiter.api.Assertions.*;
17
18class UserFollowControllerTest {
19
20 @InjectMocks
21 private UserFollowController userFollowController;
22
23 @Mock
24 private UserFollowService userFollowService;
25
26 @BeforeEach
27 void setup() {
28 MockitoAnnotations.openMocks(this);
29 }
30
31 // 测试用户关注接口
32 @Test
33 void testFollow() {
34 Long followerId = 1L;
35 Long followedId = 2L;
36 Map<String, Object> mockResponse = Map.of(
37 "status", "success",
38 "message", "关注成功"
39 );
40
41 // 模拟 userFollowService.follow() 返回
42 when(userFollowService.follow(followerId, followedId)).thenReturn(mockResponse);
43
44 // 创建请求体
45 Map<String, Long> request = Map.of("follower_id", followerId);
46
47 // 调用控制器方法
48 ResponseEntity<Map<String, Object>> responseEntity = userFollowController.follow(followedId, request);
49
50 // 验证返回的状态码和内容
51 assertEquals(200, responseEntity.getStatusCodeValue());
52 assertEquals("success", responseEntity.getBody().get("status"));
53 assertEquals("关注成功", responseEntity.getBody().get("message"));
54 }
55
56 // 测试取消关注接口
57 @Test
58 void testUnfollow() {
59 Long followerId = 1L;
60 Long followedId = 2L;
61 Map<String, Object> mockResponse = Map.of(
62 "status", "success",
63 "message", "取消关注成功"
64 );
65
66 // 模拟 userFollowService.unfollow() 返回
67 when(userFollowService.unfollow(followerId, followedId)).thenReturn(mockResponse);
68
69 // 创建请求体
70 Map<String, Long> request = Map.of("follower_id", followerId);
71
72 // 调用控制器方法
73 ResponseEntity<Map<String, Object>> responseEntity = userFollowController.unfollow(followedId, request);
74
75 // 验证返回的状态码和内容
76 assertEquals(200, responseEntity.getStatusCodeValue());
77 assertEquals("success", responseEntity.getBody().get("status"));
78 assertEquals("取消关注成功", responseEntity.getBody().get("message"));
79 }
80
81 // 测试获取某个用户的粉丝列表接口
82 @Test
83 void testGetFollowers() {
84 Long userId = 1L;
85 Map<String, Object> mockResponse = Map.of(
86 "status", "success",
87 "total", 2,
88 "followers", List.of(
89 Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
90 Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
91 )
92 );
93
94 // 模拟 userFollowService.getFollowers() 返回
95 when(userFollowService.getFollowers(userId)).thenReturn(mockResponse);
96
97 // 调用控制器方法
98 ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowers(userId);
99
100 // 验证返回的状态码和内容
101 assertEquals(200, responseEntity.getStatusCodeValue());
102 assertEquals("success", responseEntity.getBody().get("status"));
103 assertEquals(2, responseEntity.getBody().get("total"));
104 assertEquals(2, ((List<?>) responseEntity.getBody().get("followers")).size());
105 }
106
107 // 测试获取某个用户的关注列表接口
108 @Test
109 void testGetFollowing() {
110 Long userId = 1L;
111 Map<String, Object> mockResponse = Map.of(
112 "status", "success",
113 "total", 2,
114 "following", List.of(
115 Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
116 Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
117 )
118 );
119
120 // 模拟 userFollowService.getFollowing() 返回
121 when(userFollowService.getFollowing(userId)).thenReturn(mockResponse);
122
123 // 调用控制器方法
124 ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowing(userId);
125
126 // 验证返回的状态码和内容
127 assertEquals(200, responseEntity.getStatusCodeValue());
128 assertEquals("success", responseEntity.getBody().get("status"));
129 assertEquals(2, responseEntity.getBody().get("total"));
130 assertEquals(2, ((List<?>) responseEntity.getBody().get("following")).size());
131 }
132}