package com.sztzjy.linkCommerce.service.impl; import com.sztzjy.linkCommerce.config.exception.handler.ServiceException; import com.sztzjy.linkCommerce.config.security.JwtUser; import com.sztzjy.linkCommerce.entity.dto.IndustryDemandAnalysisStepOneValidationRequest; import com.sztzjy.linkCommerce.entity.dto.IndustryDemandAnalysisStepOneValidationResult; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; class IndustryDemandAnalysisStepOneServiceImplTest { @Test void validateAcceptsAllFourPestDimensions() { IndustryDemandAnalysisStepOneServiceImpl service = new IndustryDemandAnalysisStepOneServiceImpl(); IndustryDemandAnalysisStepOneValidationResult result = service.validate(completedRequest(), student()); assertTrue(result.isValid()); } @Test void validateRejectsMissingDimensionAndNonStudent() { IndustryDemandAnalysisStepOneServiceImpl service = new IndustryDemandAnalysisStepOneServiceImpl(); IndustryDemandAnalysisStepOneValidationRequest missingTechnology = completedRequest(); missingTechnology.setTechnology(" "); assertThrows(ServiceException.class, () -> service.validate(missingTechnology, student())); assertThrows(ServiceException.class, () -> service.validate(completedRequest(), teacher())); } private IndustryDemandAnalysisStepOneValidationRequest completedRequest() { IndustryDemandAnalysisStepOneValidationRequest request = new IndustryDemandAnalysisStepOneValidationRequest(); request.setPolitical("行业相关政策、认证和数据合规要求。"); request.setEconomic("市场规模、供应链成本与商业模式信息。"); request.setSocial("用户健康管理需求和消费趋势变化。"); request.setTechnology("设备互联、AI算法和平台能力信息。"); return request; } private JwtUser student() { JwtUser user = new JwtUser(); user.setUserId("stu-1"); user.setRoleId(4); return user; } private JwtUser teacher() { JwtUser user = student(); user.setRoleId(3); return user; } }