signinCalendar+apifix
Change-Id: I9c64341669a4eff45f871f1c7a19045049d4c376
diff --git a/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java b/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java
index 298c4ac..48eec66 100644
--- a/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java
+++ b/src/test/java/com/example/g8backend/service/SigninServiceImplTest.java
@@ -1,5 +1,6 @@
package com.example.g8backend.service;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.g8backend.entity.User;
import com.example.g8backend.entity.UserSignin;
import com.example.g8backend.mapper.UserMapper;
@@ -11,6 +12,10 @@
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.time.LocalDate;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@@ -78,4 +83,104 @@
assertEquals(10, user.getSigninCount());
assertEquals("lv3", user.getUserLevel());
}
+ @Test
+ public void testGetSigninsByDateRange_NormalCase() {
+ // 模拟输入参数
+ Long userId = 1L;
+ LocalDate startDate = LocalDate.of(2023, 10, 1);
+ LocalDate endDate = LocalDate.of(2023, 10, 31);
+
+ // 构建模拟数据
+ UserSignin signin1 = new UserSignin();
+ signin1.setSigninId(1L);
+ signin1.setUserId(userId);
+ signin1.setSigninDate(LocalDate.of(2023, 10, 5));
+
+ UserSignin signin2 = new UserSignin();
+ signin2.setSigninId(2L);
+ signin2.setUserId(userId);
+ signin2.setSigninDate(LocalDate.of(2023, 10, 15));
+
+ List<UserSignin> mockSignins = Arrays.asList(signin1, signin2);
+
+ when(userSigninMapper.selectList(any(QueryWrapper.class))).thenReturn(mockSignins);
+
+ // 执行方法
+ List<UserSignin> result = signinService.getSigninsByDateRange(userId, startDate, endDate);
+
+ // 断言结果
+ assertEquals(2, result.size());
+ assertEquals(LocalDate.of(2023, 10, 5), result.get(0).getSigninDate());
+ assertEquals(LocalDate.of(2023, 10, 15), result.get(1).getSigninDate());
+ verify(userSigninMapper).selectList(any(QueryWrapper.class));
+ }
+
+ @Test
+ public void testGetSigninsByDateRange_NoRecords() {
+ Long userId = 1L;
+ LocalDate startDate = LocalDate.of(2023, 11, 1);
+ LocalDate endDate = LocalDate.of(2023, 11, 30);
+
+ when(userSigninMapper.selectList(any())).thenReturn(Collections.emptyList());
+
+ List<UserSignin> result = signinService.getSigninsByDateRange(userId, startDate, endDate);
+
+ assertTrue(result.isEmpty());
+ }
+
+ @Test
+ public void testGetSigninsByDateRange_SingleDay() {
+ Long userId = 1L;
+ LocalDate date = LocalDate.of(2023, 10, 10);
+
+ UserSignin signin = new UserSignin();
+ signin.setSigninId(3L);
+ signin.setUserId(userId);
+ signin.setSigninDate(date);
+
+ // 修正:返回包含模拟数据的列表
+ when(userSigninMapper.selectList(any(QueryWrapper.class))).thenReturn(Collections.singletonList(signin));
+
+ List<UserSignin> result = signinService.getSigninsByDateRange(userId, date, date);
+
+ assertEquals(1, result.size());
+ assertEquals(date, result.get(0).getSigninDate());
+ }
+ @Test
+ public void testGetSigninsByDateRange_InvalidDateOrder() {
+ Long userId = 1L;
+ LocalDate startDate = LocalDate.of(2023, 10, 31);
+ LocalDate endDate = LocalDate.of(2023, 10, 1);
+
+ when(userSigninMapper.selectList(any())).thenReturn(Collections.emptyList());
+
+ List<UserSignin> result = signinService.getSigninsByDateRange(userId, startDate, endDate);
+
+ assertTrue(result.isEmpty());
+ }
+
+ public void testGetSigninsByDateRange_SortedOrder() {
+ Long userId = 1L;
+ LocalDate startDate = LocalDate.of(2023, 10, 1);
+ LocalDate endDate = LocalDate.of(2023, 10, 31);
+
+ // 模拟数据并按日期升序排列
+ UserSignin signin1 = new UserSignin();
+ signin1.setSigninId(1L);
+ signin1.setSigninDate(LocalDate.of(2023, 10, 5));
+
+ UserSignin signin2 = new UserSignin();
+ signin2.setSigninId(2L);
+ signin2.setSigninDate(LocalDate.of(2023, 10, 15));
+
+ List<UserSignin> mockSignins = Arrays.asList(signin1, signin2); // 直接提供已排序的数据
+
+ when(userSigninMapper.selectList(any(QueryWrapper.class))).thenReturn(mockSignins);
+
+ List<UserSignin> result = signinService.getSigninsByDateRange(userId, startDate, endDate);
+
+ // 验证顺序
+ assertEquals(LocalDate.of(2023, 10, 5), result.get(0).getSigninDate());
+ assertEquals(LocalDate.of(2023, 10, 15), result.get(1).getSigninDate());
+ }
}
\ No newline at end of file