Преглед изворни кода

fix(test): 修复测试编译与 getTemplates 断言;补充肠道菌群解析参考脚本

Xiaogang Liao пре 1 месец
родитељ
комит
97f5cd5ad2

+ 3 - 2
cfc-backend/src/test/java/com/etotem/cfc/config/FamilyAccessInterceptorTest.java

@@ -10,6 +10,8 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.mockito.MockitoAnnotations;
 import org.junit.jupiter.api.extension.ExtendWith;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
 import java.util.Collections;
 import java.util.Set;
 import javax.servlet.http.HttpServletResponse;
@@ -67,6 +69,7 @@ public class FamilyAccessInterceptorTest {
         request.setParameter("familyId", requestedFamilyId.toString());
         request.setAttribute("userId", userId);
 
+        when(response.getWriter()).thenReturn(new PrintWriter(new StringWriter()));
         boolean result = familyAccessInterceptor.preHandle(request, response, null);
         assertFalse(result);
         // 验证发送了 403 响应
@@ -111,8 +114,6 @@ public class FamilyAccessInterceptorTest {
     @Test
     public void testAdminPath() throws Exception {
         Long userId = 1L;
-        User user = createMockUser(userId, 1L, "admin");
-        when(userService.getEffectiveFamilyIds(userId)).thenReturn(Collections.singleton(1L));
 
         MockHttpServletRequest request = new MockHttpServletRequest();
         request.setMethod("POST");

+ 17 - 3
cfc-backend/src/test/java/com/etotem/cfc/service/DimensionScoreServiceTest.java

@@ -48,6 +48,15 @@ public class DimensionScoreServiceTest {
     @Mock
     private HealthDataSourceRecordService dataSourceRecordService;
 
+    @Mock
+    private com.etotem.cfc.mapper.FamilyMemberMapper familyMemberMapper;
+
+    @Mock
+    private com.etotem.cfc.mapper.DanAssessmentResultMapper danAssessmentResultMapper;
+
+    @Mock
+    private DimensionEnergySyncService dimensionEnergySyncService;
+
     private DimensionScoreServiceImpl service;
 
     @BeforeEach
@@ -59,6 +68,9 @@ public class DimensionScoreServiceTest {
         setField(service, "normMapper", normMapper);
         setField(service, "healthReportService", healthReportService);
         setField(service, "dataSourceRecordService", dataSourceRecordService);
+        setField(service, "familyMemberMapper", familyMemberMapper);
+        setField(service, "danAssessmentResultMapper", danAssessmentResultMapper);
+        setField(service, "dimensionEnergySyncService", dimensionEnergySyncService);
     }
 
     private void setField(Object target, String fieldName, Object value) {
@@ -80,11 +92,13 @@ public class DimensionScoreServiceTest {
         HealthDimensionVO vo = service.getHealthDimension(1L);
 
         assertEquals(1L, vo.getMemberId());
-        assertNull(vo.getHealthIndex());
+        // 产品设计:无个人数据时用 AVERAGE 默认值 65 填充,健康指数按 7 维平均
+        assertEquals(new BigDecimal("65.00"), vo.getHealthIndex());
         assertEquals(7, vo.getDimensions().size());
         for (HealthDimensionVO.DimensionItem item : vo.getDimensions()) {
-            assertEquals("none", item.getLevel());
-            assertNull(item.getScore());
+            assertEquals(new BigDecimal("65"), item.getScore());
+            assertEquals("AVERAGE", item.getDataSource());
+            assertNotNull(item.getLevel());
         }
     }
 

+ 7 - 4
cfc-backend/src/test/java/com/etotem/cfc/service/FoodRecommendServiceTest.java

@@ -9,6 +9,7 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.io.Serializable;
 import java.util.*;
 
 import static org.junit.jupiter.api.Assertions.*;
@@ -147,13 +148,15 @@ public class FoodRecommendServiceTest {
         FoodRecommendIndex existing = mockIndex(1L, 100L, "食材A", 80);
         FoodRecommendIndex existing2 = mockIndex(1L, 200L, "食材B", 75);
         when(healthReportService.getLatestReport(1L)).thenReturn(report);
-        when(reportFoodSuitabilityMapper.selectList(any())).thenReturn(Collections.emptyList()); // no suit data
+        // 新报告只含食材C,existing A/B 被移除
+        ReportFoodSuitability newSuit = mockSuit(1L, 300L, "食材C", 70);
+        when(reportFoodSuitabilityMapper.selectList(any())).thenReturn(Collections.singletonList(newSuit));
         when(foodRecommendIndexMapper.selectList(any())).thenReturn(Arrays.asList(existing, existing2));
 
         service.recalculateForUser(1L);
 
         // Both should be deleted and logged
-        verify(foodRecommendIndexMapper, times(2)).deleteById(any());
+        verify(foodRecommendIndexMapper, times(2)).deleteById(any(Serializable.class));
         verify(foodRecommendIdxLogMapper, times(2)).insert(any());
     }
 
@@ -196,8 +199,8 @@ public class FoodRecommendServiceTest {
 
     @Test
     public void getByFamily_returnsAllMemberIndices() {
-        FamilyMember m1 = mockMember(1L, 1L); // memberId=1, userId=10
-        FamilyMember m2 = mockMember(2L, 2L); // memberId=2, userId=20
+        FamilyMember m1 = mockMember(1L, 10L);
+        FamilyMember m2 = mockMember(2L, 20L);
         FoodRecommendIndex idx1 = mockIndex(10L, 100L, "食材A", 80);
         FoodRecommendIndex idx2 = mockIndex(20L, 200L, "食材B", 75);
         when(familyMemberMapper.selectList(any())).thenReturn(Arrays.asList(m1, m2));

+ 1 - 0
cfc-backend/src/test/java/com/etotem/cfc/service/FortuneServiceTest.java

@@ -79,6 +79,7 @@ class FortuneServiceTest {
     void testGetAndSaveFamilyFortune() {
         LocalDate testDate = LocalDate.of(2026, 7, 15);
         FamilyFortune testFortune = new FamilyFortune();
+        testFortune.setId(1L);
         testFortune.setFamilyId(1L);
         testFortune.setFortuneDate(testDate);
         testFortune.setDominantElement("木");

+ 8 - 4
cfc-backend/src/test/java/com/etotem/cfc/service/ProductServiceTest.java

@@ -31,7 +31,10 @@ public class ProductServiceTest {
     private UserMapper userMapper;
 
     @Mock
-    private DanshopSyncService danshopSyncService;
+    private ProductGiftRuleService productGiftRuleService;
+
+    @Mock
+    private ProductDeliveryConfigService productDeliveryConfigService;
 
     private ProductService service;
 
@@ -41,7 +44,8 @@ public class ProductServiceTest {
         service = new ProductService();
         setField(service, "productMapper", productMapper);
         setField(service, "userMapper", userMapper);
-        setField(service, "danshopSyncService", danshopSyncService);
+        setField(service, "productGiftRuleService", productGiftRuleService);
+        setField(service, "productDeliveryConfigService", productDeliveryConfigService);
     }
 
     private static void setField(Object target, String fieldName, Object value) throws Exception {
@@ -76,7 +80,7 @@ public class ProductServiceTest {
 
     @Test
     public void shelve_offShelf_success() {
-        Product product = mockProduct(1L, 100L, "approved");
+        Product product = mockProduct(1L, 100L, "on_shelf");
         when(productMapper.selectById(1L)).thenReturn(product);
 
         Result<String> result = service.shelve(1L, 100L, "unshelve");
@@ -117,7 +121,7 @@ public class ProductServiceTest {
         Result<String> result = service.shelve(1L, 100L, "shelve");
 
         assertEquals(500, result.getCode());
-        assertEquals("商品未通过审核,无法上架", result.getMessage());
+        assertEquals("商品未通过审核,无法上架", result.getMessage());
         verify(productMapper, never()).updateById(any());
     }