blob: 298c4ace77484b875a4f670c0a2bdbe407db2e56 [file] [log] [blame]
夜雨声烦35c9da92025-05-20 00:12:48 +08001package com.example.g8backend.service;
2
3import com.example.g8backend.entity.User;
4import com.example.g8backend.entity.UserSignin;
5import com.example.g8backend.mapper.UserMapper;
6import com.example.g8backend.mapper.UserSigninMapper;
7import com.example.g8backend.service.impl.SigninServiceImpl;
8import org.junit.jupiter.api.Test;
9import org.junit.jupiter.api.extension.ExtendWith;
10import org.mockito.InjectMocks;
11import org.mockito.Mock;
12import org.mockito.junit.jupiter.MockitoExtension;
13import java.time.LocalDate;
14import static org.junit.jupiter.api.Assertions.*;
15import static org.mockito.ArgumentMatchers.any;
16import static org.mockito.Mockito.*;
17
18@ExtendWith(MockitoExtension.class)
19public 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}