| 夜雨声烦 | 35c9da9 | 2025-05-20 00:12:48 +0800 | [diff] [blame^] | 1 | package com.example.g8backend.service; |
| 2 | |
| 3 | import com.example.g8backend.entity.User; |
| 4 | import com.example.g8backend.entity.UserSignin; |
| 5 | import com.example.g8backend.mapper.UserMapper; |
| 6 | import com.example.g8backend.mapper.UserSigninMapper; |
| 7 | import com.example.g8backend.service.impl.SigninServiceImpl; |
| 8 | import org.junit.jupiter.api.Test; |
| 9 | import org.junit.jupiter.api.extension.ExtendWith; |
| 10 | import org.mockito.InjectMocks; |
| 11 | import org.mockito.Mock; |
| 12 | import org.mockito.junit.jupiter.MockitoExtension; |
| 13 | import java.time.LocalDate; |
| 14 | import static org.junit.jupiter.api.Assertions.*; |
| 15 | import static org.mockito.ArgumentMatchers.any; |
| 16 | import static org.mockito.Mockito.*; |
| 17 | |
| 18 | @ExtendWith(MockitoExtension.class) |
| 19 | public class SigninServiceImplTest { |
| 20 | @Mock |
| 21 | private UserMapper userMapper; |
| 22 | @Mock |
| 23 | private UserSigninMapper userSigninMapper; |
| 24 | @InjectMocks |
| 25 | private SigninServiceImpl signinService; |
| 26 | |
| 27 | @Test |
| 28 | public void testSignIn_Success() { |
| 29 | // 模拟用户初始状态 |
| 30 | User user = new User(); |
| 31 | user.setUserId(1L); |
| 32 | user.setSigninCount(0); |
| 33 | user.setUserLevel("lv1"); |
| 34 | |
| 35 | when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false); |
| 36 | when(userMapper.selectById(1L)).thenReturn(user); |
| 37 | |
| 38 | boolean result = signinService.signIn(1L); |
| 39 | assertTrue(result); |
| 40 | assertEquals(1, user.getSigninCount()); |
| 41 | } |
| 42 | |
| 43 | @Test |
| 44 | public void testSignIn_AlreadySigned() { |
| 45 | when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(true); |
| 46 | boolean result = signinService.signIn(1L); |
| 47 | assertFalse(result); |
| 48 | } |
| 49 | |
| 50 | @Test |
| 51 | public void testSignIn_UpgradeToLv2() { |
| 52 | User user = new User(); |
| 53 | user.setUserId(1L); |
| 54 | user.setSigninCount(2); // 初始签到2次 |
| 55 | user.setUserLevel("lv1"); |
| 56 | |
| 57 | when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false); |
| 58 | when(userMapper.selectById(1L)).thenReturn(user); |
| 59 | |
| 60 | boolean result = signinService.signIn(1L); |
| 61 | assertTrue(result); |
| 62 | assertEquals(3, user.getSigninCount()); |
| 63 | assertEquals("lv2", user.getUserLevel()); |
| 64 | } |
| 65 | |
| 66 | @Test |
| 67 | public void testSignIn_UpgradeToLv3() { |
| 68 | User user = new User(); |
| 69 | user.setUserId(1L); |
| 70 | user.setSigninCount(9); // 初始签到9次 |
| 71 | user.setUserLevel("lv2"); |
| 72 | |
| 73 | when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false); |
| 74 | when(userMapper.selectById(1L)).thenReturn(user); |
| 75 | |
| 76 | boolean result = signinService.signIn(1L); |
| 77 | assertTrue(result); |
| 78 | assertEquals(10, user.getSigninCount()); |
| 79 | assertEquals("lv3", user.getUserLevel()); |
| 80 | } |
| 81 | } |