user module

GET /user/getId
GET /user/invitation-code
GET /user/info
GET /user/reward
GET /user/collection
GET /user/upload
GET /user/purchase
GET /user/search
GET /user/data
GET /user/subscriber
GET /user/follower

Change-Id: I096fb86446831ebdb50ec609d3cde77d5fe77ef5
diff --git a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
index 3f06b32..bec8b11 100644
--- a/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
+++ b/src/test/java/com/g9/g9backend/controller/UserControllerTest.java
@@ -1,5 +1,7 @@
 package com.g9.g9backend.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.g9.g9backend.pojo.*;
 import com.g9.g9backend.pojo.DTO.*;
@@ -13,6 +15,10 @@
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
 import static org.mockito.ArgumentMatchers.*;
 import static org.mockito.Mockito.when;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
@@ -37,6 +43,21 @@
     @Mock
     private SearchHistoryService searchHistoryService;
 
+    @Mock
+    private RewardService rewardService;
+
+    @Mock
+    private UserCollectionService userCollectionService;
+
+    @Mock
+    private UserUploadService userUploadService;
+
+    @Mock
+    private UserPurchaseService userPurchaseService;
+
+    @Mock
+    private ResourceService resourceService;
+
     private final ObjectMapper objectMapper = new ObjectMapper();
 
     @BeforeEach
@@ -218,4 +239,170 @@
                         .param("followerId", "2"))
                 .andExpect(status().isNoContent());
     }
+
+    // 获取用户ID
+    @Test
+    public void testGetUserId() throws Exception {
+
+        when(userService.getOne(any())).thenReturn(new User(1, "hcy", "123", null, 0, 0, null, 0, 0, 0));
+
+        mockMvc.perform(get("/user/getId")
+                        .param("username", "hcy")
+                        .param("password", "123"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取邀请码
+    @Test
+    public void testGetInvitationCode() throws Exception {
+
+        List<Invitation> invitationList = new ArrayList<>();
+        invitationList.add(new Invitation("1RCA7Y8J", 0, 0));
+        invitationList.add(new Invitation("2RCA7Y8J", 0, 0));
+        invitationList.add(new Invitation("3RCA7Y8J", 0, 0));
+        invitationList.add(new Invitation("4RCA7Y8J", 0, 0));
+        invitationList.add(new Invitation("5RCA7Y8J", 0, 0));
+
+        QueryWrapper<Invitation> invitationQuery = new QueryWrapper<>();
+        invitationQuery.eq("user_id", 1).eq("invitee_id", 0);
+        invitationQuery.select("invitation_code");
+
+        when(invitationService.list(invitationQuery)).thenReturn(invitationList); //这里用any()无法识别,因为list有多种参数可能
+
+        mockMvc.perform(get("/user/invitation-code")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取用户信息
+    @Test
+    public void testGetUserInfo() throws Exception {
+
+        when(userService.getById(anyInt())).thenReturn(new User(1, "user", "pass", null, 0, 0, null, 0, 0, 0));
+
+        mockMvc.perform(get("/user/info")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取悬赏
+    @Test
+    public void testGetUserReward() throws Exception {
+
+        when(rewardService.page(any(), any())).thenReturn(new Page<>(1, 2));
+
+        mockMvc.perform(get("/user/reward")
+                        .param("userId", "1")
+                        .param("pageNumber", "2")
+                        .param("rows", "2"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取收藏
+    @Test
+    public void testGetUserCollection() throws Exception {
+
+        when(userCollectionService.page(any(), any())).thenReturn(new Page<>(1, 2));
+        when(resourceService.getById(anyInt())).thenReturn(new Resource(1, "a", null, null, null, new Date(), new Date(), 100, 0, 0, 0, 0, 0, "mod"));
+
+        mockMvc.perform(get("/user/collection")
+                        .param("userId", "1")
+                        .param("pageNumber", "1")
+                        .param("rows", "2"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取上传
+    @Test
+    public void testGetUserUpload() throws Exception {
+
+        when(userUploadService.page(any(), any())).thenReturn(new Page<>(1, 2));
+        when(resourceService.getById(anyInt())).thenReturn(new Resource(1, "a", null, null, null, new Date(), new Date(), 100, 0, 0, 0, 0, 0, "mod"));
+
+        mockMvc.perform(get("/user/upload")
+                        .param("userId", "1")
+                        .param("pageNumber", "1")
+                        .param("rows", "2"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取购买
+    @Test
+    public void testGetUserPurchase() throws Exception {
+
+        when(userPurchaseService.page(any(), any())).thenReturn(new Page<>(1, 2));
+        when(resourceService.getById(anyInt())).thenReturn(new Resource(1, "a", null, null, null, new Date(), new Date(), 100, 0, 0, 0, 0, 0, "mod"));
+
+        mockMvc.perform(get("/user/purchase")
+                        .param("userId", "1")
+                        .param("pageNumber", "1")
+                        .param("rows", "2"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取搜索历史
+    @Test
+    public void testGetUserSearchHistory() throws Exception {
+
+        List<SearchHistory> searchHistoryList = new ArrayList<>();
+
+        QueryWrapper<SearchHistory> searchHistoryQuery = new QueryWrapper<>();
+        searchHistoryQuery.eq("user_id", 1).orderByDesc("search_history_id").last("LIMIT 10");
+
+        when(searchHistoryService.list(searchHistoryQuery)).thenReturn(searchHistoryList);
+
+        mockMvc.perform(get("/user/search")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取用户数据
+    @Test
+    public void testGetUserData() throws Exception {
+
+        when(userService.getById(1)).thenReturn(new User(1, "hcy", "123", null, 0, 0, null, 0, 0, 0));
+
+        List<UserUpload> UserUpload = new ArrayList<>();
+        QueryWrapper<UserUpload> userUploadQuery = new QueryWrapper<>();
+        userUploadQuery.eq("user_id", 1);
+        when(userUploadService.list(userUploadQuery)).thenReturn(UserUpload);
+
+        when(resourceService.getById(anyInt())).thenReturn(new Resource());
+
+        mockMvc.perform(get("/user/data")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取关注列表
+    @Test
+    public void testGetUserSubscriber() throws Exception {
+
+        QueryWrapper<Subscription> subscriptionQuery = new QueryWrapper<>();
+        subscriptionQuery.eq("follower_id", 1);
+        List<Subscription> subscriptionList = new ArrayList<>();
+
+        when(subscriptionService.list(subscriptionQuery)).thenReturn(subscriptionList);
+        when(userService.getById(1)).thenReturn(new User(1, "hcy", "123", null, 0, 0, null, 0, 0, 0));
+
+        mockMvc.perform(get("/user/subscriber")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
+
+    // 获取粉丝列表
+    @Test
+    public void testGetUserFollower() throws Exception {
+
+        QueryWrapper<Subscription> subscriptionQuery = new QueryWrapper<>();
+        subscriptionQuery.eq("user_id", 1);
+        List<Subscription> subscriptionList = new ArrayList<>();
+
+        when(subscriptionService.list(subscriptionQuery)).thenReturn(subscriptionList);
+        when(userService.getById(1)).thenReturn(new User(1, "hcy", "123", null, 0, 0, null, 0, 0, 0));
+
+        mockMvc.perform(get("/user/follower")
+                        .param("userId", "1"))
+                .andExpect(status().isOk());
+    }
 }
\ No newline at end of file