signin+userlevelsystem
Change-Id: I4d2b2660b23521817ae2ed6a55c6c322a20385ec
diff --git a/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java b/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java
new file mode 100644
index 0000000..298c4ac
--- /dev/null
+++ b/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java
@@ -0,0 +1,81 @@
+package com.example.g8backend.service;
+
+import com.example.g8backend.entity.User;
+import com.example.g8backend.entity.UserSignin;
+import com.example.g8backend.mapper.UserMapper;
+import com.example.g8backend.mapper.UserSigninMapper;
+import com.example.g8backend.service.impl.SigninServiceImpl;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import java.time.LocalDate;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.*;
+
+@ExtendWith(MockitoExtension.class)
+public class SigninServiceImplTest {
+ @Mock
+ private UserMapper userMapper;
+ @Mock
+ private UserSigninMapper userSigninMapper;
+ @InjectMocks
+ private SigninServiceImpl signinService;
+
+ @Test
+ public void testSignIn_Success() {
+ // 模拟用户初始状态
+ User user = new User();
+ user.setUserId(1L);
+ user.setSigninCount(0);
+ user.setUserLevel("lv1");
+
+ when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false);
+ when(userMapper.selectById(1L)).thenReturn(user);
+
+ boolean result = signinService.signIn(1L);
+ assertTrue(result);
+ assertEquals(1, user.getSigninCount());
+ }
+
+ @Test
+ public void testSignIn_AlreadySigned() {
+ when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(true);
+ boolean result = signinService.signIn(1L);
+ assertFalse(result);
+ }
+
+ @Test
+ public void testSignIn_UpgradeToLv2() {
+ User user = new User();
+ user.setUserId(1L);
+ user.setSigninCount(2); // 初始签到2次
+ user.setUserLevel("lv1");
+
+ when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false);
+ when(userMapper.selectById(1L)).thenReturn(user);
+
+ boolean result = signinService.signIn(1L);
+ assertTrue(result);
+ assertEquals(3, user.getSigninCount());
+ assertEquals("lv2", user.getUserLevel());
+ }
+
+ @Test
+ public void testSignIn_UpgradeToLv3() {
+ User user = new User();
+ user.setUserId(1L);
+ user.setSigninCount(9); // 初始签到9次
+ user.setUserLevel("lv2");
+
+ when(userSigninMapper.existsByUserIdAndDate(eq(1L), any())).thenReturn(false);
+ when(userMapper.selectById(1L)).thenReturn(user);
+
+ boolean result = signinService.signIn(1L);
+ assertTrue(result);
+ assertEquals(10, user.getSigninCount());
+ assertEquals("lv3", user.getUserLevel());
+ }
+}
\ No newline at end of file