等级更新
Change-Id: I1ced9fab16019e2175ce165b4bd16c1bbef3e05b
diff --git a/src/test/java/com/ptp/ptplatform/controller/InviteCodeTest.java b/src/test/java/com/ptp/ptplatform/controller/InviteCodeTest.java
index 9c000f3..0a50c00 100644
--- a/src/test/java/com/ptp/ptplatform/controller/InviteCodeTest.java
+++ b/src/test/java/com/ptp/ptplatform/controller/InviteCodeTest.java
@@ -1,10 +1,9 @@
package com.ptp.ptplatform.controller;
import com.ptp.ptplatform.entity.INVITE_CODE;
-import com.ptp.ptplatform.entity.USER;
+import com.ptp.ptplatform.entity.User;
import com.ptp.ptplatform.mapper.InviteCodeMapper;
import com.ptp.ptplatform.mapper.UserMapper;
-import com.ptp.ptplatform.utils.JwtUtils;
import com.ptp.ptplatform.utils.Result;
import jakarta.servlet.http.HttpServletRequest;
import org.junit.jupiter.api.BeforeEach;
@@ -12,7 +11,6 @@
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
-import org.springframework.http.ResponseEntity;
import java.util.ArrayList;
import java.util.List;
@@ -37,14 +35,14 @@
@InjectMocks
private InviteCodeController inviteCodeController;
- private USER testUser;
+ private User testUser;
private INVITE_CODE testInviteCode;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
- testUser = new USER();
+ testUser = new User();
testUser.setUsername("testUser");
testUser.setMagicPoints(15);
diff --git a/src/test/java/com/ptp/ptplatform/controller/UserControllerTest.java b/src/test/java/com/ptp/ptplatform/controller/UserControllerTest.java
index bc8250f..d69c4ea 100644
--- a/src/test/java/com/ptp/ptplatform/controller/UserControllerTest.java
+++ b/src/test/java/com/ptp/ptplatform/controller/UserControllerTest.java
@@ -1,12 +1,12 @@
package com.ptp.ptplatform.controller;
import com.ptp.ptplatform.entity.INVITE_CODE;
-import com.ptp.ptplatform.entity.USER;
+import com.ptp.ptplatform.entity.User;
import com.ptp.ptplatform.mapper.InviteCodeMapper;
import com.ptp.ptplatform.mapper.UserMapper;
+import com.ptp.ptplatform.service.UserLevelService;
import com.ptp.ptplatform.utils.JwtUtils;
import com.ptp.ptplatform.utils.Result;
-import com.ptp.ptplatform.utils.SizeCalculation;
import io.jsonwebtoken.Claims;
import jakarta.servlet.http.HttpServletRequest;
import org.junit.jupiter.api.BeforeEach;
@@ -16,13 +16,18 @@
import org.mockito.MockedStatic;
import org.mockito.MockitoAnnotations;
import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
class UserControllerTest {
+ private MockMvc mockMvc;
@Mock
private UserMapper userMapper;
@@ -33,17 +38,20 @@
@Mock
private HttpServletRequest request;
+ @Mock
+ private UserLevelService userLevelService;
+
@InjectMocks
private UserController userController;
- private USER testUser;
+ private User testUser;
private INVITE_CODE testInviteCode;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
- testUser = new USER();
+ testUser = new User();
testUser.setUsername("testUser");
testUser.setPassword("testPassword");
testUser.setLastLogin(new Date());
@@ -53,6 +61,9 @@
testInviteCode = new INVITE_CODE("testUser");
testInviteCode.setCode("TESTCODE123");
testInviteCode.setIsUsed(false);
+ mockMvc = MockMvcBuilders
+ .standaloneSetup(userController)
+ .build();
}
@Test
@@ -129,7 +140,7 @@
// Assert
assertTrue(result.isSuccess());
assertEquals("新建用户成功", result.getMessage());
- verify(userMapper, times(1)).insertUser(any(USER.class));
+ verify(userMapper, times(1)).insertUser(any(User.class));
verify(inviteCodeMapper, times(1)).updateCodeUser("VALIDCODE");
}
@@ -270,7 +281,7 @@
when(userMapper.selectByUsername(testUser.getUsername())).thenReturn(testUser);
// Act
- USER result = userController.getUserInRequest(request);
+ User result = userController.getUserInRequest(request);
// Assert
assertEquals(testUser, result);
@@ -288,13 +299,13 @@
mockedJwtUtils.when(() -> JwtUtils.getClaimByToken(anyString())).thenReturn(mockClaims);
// 模拟用户查询
- USER mockUser = new USER("testUser", "password", USER.Authority.USER);
+ User mockUser = new User("testUser", "password", User.Authority.USER);
when(userMapper.selectByUsername("testUser")).thenReturn(mockUser);
// 模拟搜索结果
- List<USER> mockResults = Arrays.asList(
- new USER("user1", "pass1", USER.Authority.USER),
- new USER("user2", "pass2", USER.Authority.USER)
+ List<User> mockResults = Arrays.asList(
+ new User("user1", "pass1", User.Authority.USER),
+ new User("user2", "pass2", User.Authority.USER)
);
when(userMapper.searchUsername("testUser", "zzz")).thenReturn(mockResults);
@@ -318,10 +329,10 @@
@Test
public void testGetAllUser() {
// 模拟返回所有用户
- List<USER> mockUsers = Arrays.asList(
- new USER("admin", "adminPass", USER.Authority.ADMIN),
- new USER("user1", "pass1", USER.Authority.USER),
- new USER("user2", "pass2", USER.Authority.USER)
+ List<User> mockUsers = Arrays.asList(
+ new User("admin", "adminPass", User.Authority.ADMIN),
+ new User("user1", "pass1", User.Authority.USER),
+ new User("user2", "pass2", User.Authority.USER)
);
when(userMapper.selectAllUsers()).thenReturn(mockUsers);
@@ -344,14 +355,22 @@
authorityMap.put("changeUsername", "testUser");
authorityMap.put("authority", "ADMIN");
- USER mockUser = new USER("testUser", "password", USER.Authority.USER);
+ User mockUser = new User("testUser", "password", User.Authority.USER);
when(userMapper.selectByUsername("testUser")).thenReturn(mockUser);
- when(userMapper.updateUser(any(USER.class))).thenReturn(1);
+ when(userMapper.updateUser(any(User.class))).thenReturn(1);
Result successResult = userController.changeAuthority(new MockHttpServletRequest(), authorityMap);
assertEquals(200, successResult.getCode());
assertEquals("修改用户权限成功", successResult.getMessage());
}
+ @Test
+ void whenPostRefreshLevel_thenServiceCalled_andReturnOk() throws Exception {
+ mockMvc.perform(post("/user/refreshLevel"))
+ .andExpect(status().isOk());
-}
\ No newline at end of file
+ // 验证 service 方法被调用
+ verify(userLevelService).refreshAllUserLevels();
+ }
+}
+
diff --git a/src/test/resources/schema.sql b/src/test/resources/schema.sql
index 677d41c..945e692 100644
--- a/src/test/resources/schema.sql
+++ b/src/test/resources/schema.sql
@@ -38,3 +38,16 @@
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP(),
CONSTRAINT fk_seed_comments_post FOREIGN KEY (post_id) REFERENCES seed_posts(id) ON DELETE CASCADE
);
+
+CREATE TABLE IF NOT EXISTS "user" (
+ username VARCHAR(20) NOT NULL PRIMARY KEY,
+ password VARCHAR(200) NOT NULL,
+ authority VARCHAR(10) NOT NULL,
+ level INT NOT NULL DEFAULT 0,
+ registTime DATE NOT NULL,
+ lastLogin DATE NULL,
+ upload BIGINT NOT NULL DEFAULT 0,
+ download BIGINT NOT NULL DEFAULT 0,
+ shareRate DOUBLE NULL,
+ magicPoints BIGINT NOT NULL DEFAULT 0
+ );