+ * 注意: 这是一个集成测试,它会真实地调用外部API并与数据库进行交互。 + * 在运行此测试之前,请确保 application.yml 或相关 profile 中的配置 + * (如 third-party.person.*, sso.*, 数据库连接等) 是正确且可用的。 + *
+ */ +@SpringBootTest(properties = { + "third-party.enterprise.idno=310000199308124725" +}) +@ActiveProfiles("dev") +@DisplayName("执法人员信息同步服务集成测试") +class OfficerScheduleServiceTest { + + @Autowired + private OfficerScheduleService officerScheduleService; + + @Autowired + private OfficerRepository officerRepository; + + @Test + @DisplayName("测试 scheduleTask 方法 - 完整同步流程") + void testScheduleTask() { + // GIVEN: 记录测试前的执法人员数量 + long countBefore = officerRepository.count(); + System.out.println("同步任务执行前,数据库中有 " + countBefore + " 名执法人员。"); + + // WHEN: 执行同步任务 + // THEN: 断言它不会抛出异常 + assertDoesNotThrow(() -> { + officerScheduleService.scheduleTask(); + }, "执行执法人员同步任务时,不应抛出异常"); + + // AND: 记录测试后的执法人员数量 + long countAfter = officerRepository.count(); + System.out.println("同步任务执行后,数据库中有 " + countAfter + " 名执法人员。"); + + // AND: 断言任务执行后,数据量可能增加或保持不变(如果API没有新数据或数据已存在) + assertTrue(countAfter >= countBefore, "同步后执法人员数量应大于或等于同步前"); + + System.out.println("执法人员同步任务测试成功。"); + } + +} diff --git a/server/src/test/java/com/aisino/iles/lawenforcement/service/CaseServiceTest.java b/server/src/test/java/com/aisino/iles/lawenforcement/service/CaseServiceTest.java new file mode 100644 index 0000000..fcf5baa --- /dev/null +++ b/server/src/test/java/com/aisino/iles/lawenforcement/service/CaseServiceTest.java @@ -0,0 +1,113 @@ +package com.aisino.iles.lawenforcement.service; + +import com.aisino.iles.lawenforcement.model.dto.DjbZfajxxRequestDto; +import com.aisino.iles.lawenforcement.model.Agency; +import com.aisino.iles.lawenforcement.model.Case; +import com.aisino.iles.lawenforcement.model.EnforcementInfo; +import com.aisino.iles.lawenforcement.model.Enterprise; +import com.aisino.iles.lawenforcement.model.dto.EnforcementInfoDto; +import com.aisino.iles.lawenforcement.model.enums.FlowNode; +import com.aisino.iles.lawenforcement.repository.CaseRepository; +import com.aisino.iles.lawenforcement.repository.EnforcementInfoRepository; +import com.smartlx.sso.client.model.RemoteUserInfo; +import lombok.SneakyThrows; +import org.apache.commons.beanutils.BeanUtils; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * 执法信息单元测试 + */ +@SpringBootTest +@ActiveProfiles("dev") +public class CaseServiceTest { + + @Autowired + private CaseService caseService; + + @Autowired + private CaseRepository caseRepository; + + @Autowired + private EnforcementInfoRepository enforcementInfoRepository; + + @Autowired + private EnforcementInfoService enforcementInfoService; + + /** + * 测试保存执法案件信息 + */ + @SneakyThrows + @Test + @DisplayName("测试保存执法案件信息") + @Transactional // 使用事务确保测试后数据回滚,不影响数据库 + public void testSaveLawEnforcementCase() { + // 创建测试所需的执法机构 + Agency agency = new Agency(); + agency.setAgencyId("1"); + agency.setAgencyName("测试执法机构"); + agency.setAgencyCode("TEST_AGENCY_CODE"); + + // 创建测试所需的企业 + Enterprise enterprise = new Enterprise(); +// enterprise.setEnterpriseId(UUID.randomUUID().toString()); + enterprise.setUnitName("测试企业"); + enterprise.setUnifiedSocialCode("TEST_UNIT_CODE"); + + // 创建执法信息 + EnforcementInfo enforcementInfo = new EnforcementInfo(); +// enforcementInfo.setEnforcementId(UUID.randomUUID().toString()); + enforcementInfo.setAgency(agency); + enforcementInfo.setAgencyId(agency.getAgencyId()); + enforcementInfo.setEnterprise(enterprise); + enforcementInfo.setCurrentNodeCode(FlowNode.filed); + enforcementInfo.setCreateTime(LocalDateTime.now()); + EnforcementInfoDto enforcementInfoDto = new EnforcementInfoDto(); + BeanUtils.copyProperties(enforcementInfoDto,enforcementInfo); + enforcementInfoDto.setEnterpriseIds(List.of("01jpebdtden62z6qw01e338zwm")); + // 保存执法信息 + List