用户类完善 商城功能

Change-Id: I2fa4cecee4203114998d7f9f24e956660a2da5ec
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
index 00c8354..18707e2 100644
--- a/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
@@ -1,5 +1,4 @@
 package com.pt5.pthouduan.ControllerTest;
-
 import com.pt5.pthouduan.controller.UserController;
 import com.pt5.pthouduan.entity.User;
 import com.pt5.pthouduan.service.UserService;
@@ -14,7 +13,8 @@
 import java.util.Map;
 
 import static org.junit.jupiter.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.*;
 
 class UserControllerTest {
@@ -30,193 +30,103 @@
         MockitoAnnotations.openMocks(this);
     }
 
-    // 注册测试
+    // 测试注册功能
     @Test
-    void register_ShouldCallServiceWithCorrectParameters() {
-        // 准备测试数据
-        User testUser = new User(1L,"");
-        testUser.setUsername("testUser");
-        String testCode = "123456";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", true);
-        expectedResponse.put("message", "注册成功");
+    void register_ShouldReturnSuccess() {
+        User user = new User(0L,"1");
+        user.setUsername("testUser");
+        Map<String, Object> expected = new HashMap<>();
+        expected.put("status", "success");
 
-        // 模拟服务行为
-        when(userService.register(any(User.class), anyString())).thenReturn(expectedResponse);
+        when(userService.register(any(User.class), anyString(), anyString()))
+                .thenReturn(expected);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.register(testUser, testCode);
+        Map<String, Object> result = userController.register(user, "INVITE123", "EMAIL456");
 
-        // 验证行为
-        verify(userService, times(1)).register(testUser, testCode);
-
-        // 验证结果
-        assertEquals(expectedResponse, actualResponse);
+        assertEquals(expected, result);
+        verify(userService, times(1)).register(any(), anyString(), anyString());
     }
 
-    // 登录测试
+    // 测试登录功能
     @Test
-    void login_ShouldReturnSuccessWhenCredentialsAreValid() {
-        // 准备测试数据
-        String username = "testUser";
-        String password = "correctPassword";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", true);
-        expectedResponse.put("token", "sampleToken");
+    void login_ShouldReturnToken() {
+        Map<String, Object> expected = new HashMap<>();
+        expected.put("token", "mockToken123");
 
-        // 模拟服务行为
-        when(userService.login(eq(username), eq(password))).thenReturn(expectedResponse);
+        when(userService.login("testUser", "password123"))
+                .thenReturn(expected);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.login(username, password);
+        Map<String, Object> result = userController.login("testUser", "password123");
 
-        // 验证行为
-        verify(userService, times(1)).login(username, password);
-
-        // 验证结果
-        assertEquals(expectedResponse, actualResponse);
-        assertTrue((Boolean) actualResponse.get("success"));
-        assertNotNull(actualResponse.get("token"));
+        assertEquals(expected, result);
+        assertNotNull(result.get("token"));
     }
 
-    // 计算等级测试
+    // 测试获取用户信息
     @Test
-    void calgrade_ShouldReturnUserGrade() {
-        // 准备测试数据
-        String username = "testUser";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("grade", 5);
-        expectedResponse.put("exp", 1200);
+    void getUserInfo_ShouldReturnUserData() {
+        Map<String, Object> expected = new HashMap<>();
+        expected.put("username", "testUser");
+        expected.put("email", "test@example.com");
 
-        // 模拟服务行为
-        when(userService.CalGrade(eq(username))).thenReturn(expectedResponse);
+        when(userService.UserInfo("testUser"))
+                .thenReturn(expected);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.calgrade(username);
+        Map<String, Object> result = userController.getuser("testUser");
 
-        // 验证行为
-        verify(userService, times(1)).CalGrade(username);
-
-        // 验证结果
-        assertEquals(5, actualResponse.get("grade"));
-        assertEquals(1200, actualResponse.get("exp"));
+        assertEquals("testUser", result.get("username"));
+        assertEquals("test@example.com", result.get("email"));
     }
 
-    // 修改性别测试
+    // 测试修改密码
     @Test
-    void changesex_ShouldUpdateUserSex() {
-        // 准备测试数据
-        String username = "testUser";
-        String newSex = "male";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", true);
-        expectedResponse.put("message", "性别更新成功");
+    void changePassword_ShouldHandleSuccess() {
+        Map<String, Object> expected = new HashMap<>();
+        expected.put("message", "Password updated");
 
-        // 模拟服务行为
-        when(userService.changesex(eq(username), eq(newSex))).thenReturn(expectedResponse);
+        when(userService.changePassword("testUser", "oldPass", "newPass"))
+                .thenReturn(expected);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.changsex(username, newSex);
+        Map<String, Object> result = userController.changePassword(
+                "testUser", "oldPass", "newPass");
 
-        // 验证行为
-        verify(userService, times(1)).changesex(username, newSex);
-
-        // 验证结果
-        assertTrue((Boolean) actualResponse.get("success"));
-        assertEquals("性别更新成功", actualResponse.get("message"));
+        assertEquals("Password updated", result.get("message"));
     }
 
-    // 修改头像测试
+    // 测试异常情况
     @Test
-    void changeimage_ShouldUpdateUserImage() {
-        // 准备测试数据
-        String username = "testUser";
-        String newImage = "newImageUrl";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", true);
-        expectedResponse.put("message", "头像更新成功");
+    void login_ShouldHandleFailure() {
+        when(userService.login("wrongUser", "wrongPass"))
+                .thenThrow(new RuntimeException("Invalid credentials"));
 
-        // 模拟服务行为
-        when(userService.changeImage(eq(username), eq(newImage))).thenReturn(expectedResponse);
-
-        // 执行测试
-        Map<String, Object> actualResponse = userController.changeimage(username, newImage);
-
-        // 验证行为
-        verify(userService, times(1)).changeImage(username, newImage);
-
-        // 验证结果
-        assertTrue((Boolean) actualResponse.get("success"));
-        assertEquals("头像更新成功", actualResponse.get("message"));
+        assertThrows(RuntimeException.class, () -> {
+            userController.login("wrongUser", "wrongPass");
+        });
     }
 
-    // 修改密码测试
+    // 测试空参数情况
     @Test
-    void changePassword_ShouldReturnSuccessWhenOldPasswordIsCorrect() {
-        // 准备测试数据
-        String username = "testUser";
-        String oldPassword = "correctOldPassword";
-        String newPassword = "newSecurePassword";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", true);
-        expectedResponse.put("message", "密码修改成功");
+    void getUserInfo_ShouldHandleNullUsername() {
+        when(userService.UserInfo(null))
+                .thenReturn(Map.of("error", "Username required"));
 
-        // 模拟服务行为
-        when(userService.changePassword(eq(username), eq(oldPassword), eq(newPassword)))
-                .thenReturn(expectedResponse);
+        Map<String, Object> result = userController.getuser(null);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.changePassword(username, oldPassword, newPassword);
-
-        // 验证行为
-        verify(userService, times(1)).changePassword(username, oldPassword, newPassword);
-
-        // 验证结果
-        assertTrue((Boolean) actualResponse.get("success"));
-        assertEquals("密码修改成功", actualResponse.get("message"));
+        assertEquals("Username required", result.get("error"));
     }
 
-    // 获取用户信息测试
+    // 测试创建用户
     @Test
-    void getUserInfo_ShouldReturnUserInfo() {
-        // 准备测试数据
-        String username = "testUser";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("username", username);
-        expectedResponse.put("email", "test@example.com");
+    void createUser_ShouldReturnUserId() {
+        User newUser = new User(0L,"1");
+        newUser.setUsername("newUser");
+        Map<String, Object> expected = Map.of("userId", 123);
 
-        // 模拟服务行为
-        when(userService.login(eq(username), eq(""))).thenReturn(expectedResponse);
+        when(userService.CreateUser(any(User.class)))
+                .thenReturn(expected);
 
-        // 执行测试
-        Map<String, Object> actualResponse = userController.getUserInfo(username);
+        Map<String, Object> result = userController.creatUser(newUser);
 
-        // 验证行为
-        verify(userService, times(1)).login(username, "");
-
-        // 验证结果
-        assertEquals(username, actualResponse.get("username"));
-        assertEquals("test@example.com", actualResponse.get("email"));
-    }
-
-    // 异常情况测试
-    @Test
-    void login_ShouldReturnFailureWhenCredentialsAreInvalid() {
-        // 准备测试数据
-        String username = "testUser";
-        String wrongPassword = "wrongPassword";
-        Map<String, Object> expectedResponse = new HashMap<>();
-        expectedResponse.put("success", false);
-        expectedResponse.put("message", "用户名或密码错误");
-
-        // 模拟服务行为
-        when(userService.login(eq(username), eq(wrongPassword))).thenReturn(expectedResponse);
-
-        // 执行测试
-        Map<String, Object> actualResponse = userController.login(username, wrongPassword);
-
-        // 验证结果
-        assertFalse((Boolean) actualResponse.get("success"));
-        assertEquals("用户名或密码错误", actualResponse.get("message"));
+        assertEquals(123, result.get("userId"));
     }
 }