用户类以及邀请码

Change-Id: I9a60a4e22146c46103099df91b5ecb138d1412b5
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/InvitesControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/InvitesControllerTest.java
new file mode 100644
index 0000000..9477df4
--- /dev/null
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/InvitesControllerTest.java
@@ -0,0 +1,98 @@
+package com.pt5.pthouduan.ControllerTest;
+
+import com.pt5.pthouduan.controller.InvitesController;
+import com.pt5.pthouduan.service.InviteService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.*;
+
+class InvitesControllerTest {
+
+    @Mock
+    private InviteService inviteService;
+
+    @InjectMocks
+    private InvitesController invitesController;
+
+    @BeforeEach
+    void setUp() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    @Test
+    void soldinvite_ShouldCallServiceWithCorrectParameter() {
+        // 准备测试数据
+        String testBuyerName = "testBuyer";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("success", true);
+        expectedResponse.put("message", "Invite sold successfully");
+
+        // 模拟服务行为
+        when(inviteService.setbuyername(anyString())).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = invitesController.soldinvite(testBuyerName);
+
+        // 验证行为
+        verify(inviteService, times(1)).setbuyername(testBuyerName);
+
+        // 验证结果
+        assertEquals(expectedResponse, actualResponse);
+        assertTrue((Boolean) actualResponse.get("success"));
+        assertEquals("Invite sold successfully", actualResponse.get("message"));
+    }
+
+    @Test
+    void soldinvite_ShouldHandleServiceFailure() {
+        // 准备测试数据
+        String testBuyerName = "testBuyer";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("success", false);
+        expectedResponse.put("error", "Invalid buyer name");
+
+        // 模拟服务行为
+        when(inviteService.setbuyername(anyString())).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = invitesController.soldinvite(testBuyerName);
+
+        // 验证行为
+        verify(inviteService, times(1)).setbuyername(testBuyerName);
+
+        // 验证结果
+        assertEquals(expectedResponse, actualResponse);
+        assertFalse((Boolean) actualResponse.get("success"));
+        assertEquals("Invalid buyer name", actualResponse.get("error"));
+    }
+
+    @Test
+    void soldinvite_ShouldHandleNullInput() {
+        // 准备测试数据
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("success", false);
+        expectedResponse.put("error", "Buyer name cannot be null");
+
+        // 模拟服务行为
+        when(inviteService.setbuyername(null)).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = invitesController.soldinvite(null);
+
+        // 验证行为
+        verify(inviteService, times(1)).setbuyername(null);
+
+        // 验证结果
+        assertEquals(expectedResponse, actualResponse);
+        assertFalse((Boolean) actualResponse.get("success"));
+        assertEquals("Buyer name cannot be null", actualResponse.get("error"));
+    }
+}
diff --git a/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
new file mode 100644
index 0000000..00c8354
--- /dev/null
+++ b/src/test/java/com/pt5/pthouduan/ControllerTest/UserControllerTest.java
@@ -0,0 +1,222 @@
+package com.pt5.pthouduan.ControllerTest;
+
+import com.pt5.pthouduan.controller.UserController;
+import com.pt5.pthouduan.entity.User;
+import com.pt5.pthouduan.service.UserService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.springframework.http.ResponseEntity;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.*;
+import static org.mockito.Mockito.*;
+
+class UserControllerTest {
+
+    @Mock
+    private UserService userService;
+
+    @InjectMocks
+    private UserController userController;
+
+    @BeforeEach
+    void setUp() {
+        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", "注册成功");
+
+        // 模拟服务行为
+        when(userService.register(any(User.class), anyString())).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = userController.register(testUser, testCode);
+
+        // 验证行为
+        verify(userService, times(1)).register(testUser, testCode);
+
+        // 验证结果
+        assertEquals(expectedResponse, actualResponse);
+    }
+
+    // 登录测试
+    @Test
+    void login_ShouldReturnSuccessWhenCredentialsAreValid() {
+        // 准备测试数据
+        String username = "testUser";
+        String password = "correctPassword";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("success", true);
+        expectedResponse.put("token", "sampleToken");
+
+        // 模拟服务行为
+        when(userService.login(eq(username), eq(password))).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = userController.login(username, password);
+
+        // 验证行为
+        verify(userService, times(1)).login(username, password);
+
+        // 验证结果
+        assertEquals(expectedResponse, actualResponse);
+        assertTrue((Boolean) actualResponse.get("success"));
+        assertNotNull(actualResponse.get("token"));
+    }
+
+    // 计算等级测试
+    @Test
+    void calgrade_ShouldReturnUserGrade() {
+        // 准备测试数据
+        String username = "testUser";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("grade", 5);
+        expectedResponse.put("exp", 1200);
+
+        // 模拟服务行为
+        when(userService.CalGrade(eq(username))).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = userController.calgrade(username);
+
+        // 验证行为
+        verify(userService, times(1)).CalGrade(username);
+
+        // 验证结果
+        assertEquals(5, actualResponse.get("grade"));
+        assertEquals(1200, actualResponse.get("exp"));
+    }
+
+    // 修改性别测试
+    @Test
+    void changesex_ShouldUpdateUserSex() {
+        // 准备测试数据
+        String username = "testUser";
+        String newSex = "male";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("success", true);
+        expectedResponse.put("message", "性别更新成功");
+
+        // 模拟服务行为
+        when(userService.changesex(eq(username), eq(newSex))).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = userController.changsex(username, newSex);
+
+        // 验证行为
+        verify(userService, times(1)).changesex(username, newSex);
+
+        // 验证结果
+        assertTrue((Boolean) actualResponse.get("success"));
+        assertEquals("性别更新成功", actualResponse.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", "头像更新成功");
+
+        // 模拟服务行为
+        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"));
+    }
+
+    // 修改密码测试
+    @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", "密码修改成功");
+
+        // 模拟服务行为
+        when(userService.changePassword(eq(username), eq(oldPassword), eq(newPassword)))
+                .thenReturn(expectedResponse);
+
+        // 执行测试
+        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"));
+    }
+
+    // 获取用户信息测试
+    @Test
+    void getUserInfo_ShouldReturnUserInfo() {
+        // 准备测试数据
+        String username = "testUser";
+        Map<String, Object> expectedResponse = new HashMap<>();
+        expectedResponse.put("username", username);
+        expectedResponse.put("email", "test@example.com");
+
+        // 模拟服务行为
+        when(userService.login(eq(username), eq(""))).thenReturn(expectedResponse);
+
+        // 执行测试
+        Map<String, Object> actualResponse = userController.getUserInfo(username);
+
+        // 验证行为
+        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"));
+    }
+}