fix(接口测试): 修复场景执行时处理环境的HTTP匹配规则问题

This commit is contained in:
WangXu10 2024-11-21 17:03:22 +08:00 committed by Craftsman
parent 76c398734f
commit 0e730c9bd6
1 changed files with 16 additions and 9 deletions

View File

@ -7,6 +7,9 @@ import io.metersphere.api.controller.result.ApiResultCode;
import io.metersphere.api.domain.*;
import io.metersphere.api.dto.*;
import io.metersphere.api.dto.debug.ApiResourceRunRequest;
import io.metersphere.api.dto.definition.ApiModuleDTO;
import io.metersphere.api.dto.definition.EnvApiModuleRequest;
import io.metersphere.api.dto.definition.EnvApiTreeDTO;
import io.metersphere.api.dto.request.MsScenario;
import io.metersphere.api.dto.request.controller.MsScriptElement;
import io.metersphere.api.dto.request.http.MsHTTPElement;
@ -937,16 +940,20 @@ public class ApiScenarioRunService {
// 获取勾选了包含子模块的模块ID
HttpConfigModuleMatchRule moduleMatchRule = httpConfig.getModuleMatchRule();
List<SelectModule> selectModules = moduleMatchRule.getModules();
List<String> containChildModuleIds = selectModules.stream()
.filter(SelectModule::getContainChildModule)
.map(SelectModule::getModuleId)
.toList();
// 查询子模块ID, 并去重
Set<String> moduleIds = apiDefinitionModuleService.getModuleIdsByParentIds(containChildModuleIds)
.stream()
.collect(Collectors.toSet());
selectModules.forEach(selectModule -> moduleIds.add(selectModule.getModuleId()));
EnvApiModuleRequest envApiModuleRequest = new EnvApiModuleRequest();
envApiModuleRequest.setProjectId(envInfoDTO.getProjectId());
List<ApiModuleDTO> apiModuleDTOS = selectModules.stream().map(selectModule -> {
ApiModuleDTO apiModuleDTO = new ApiModuleDTO();
apiModuleDTO.setModuleId(selectModule.getModuleId());
apiModuleDTO.setContainChildModule(selectModule.getContainChildModule());
return apiModuleDTO;
}).toList();
envApiModuleRequest.setSelectedModules(apiModuleDTOS);
EnvApiTreeDTO envApiTreeDTO = apiDefinitionModuleService.envTree(envApiModuleRequest);
List<ApiModuleDTO> selectedModules = envApiTreeDTO.getSelectedModules();
List<String> moduleIds = selectedModules.stream().map(ApiModuleDTO::getModuleId).toList();
// 重新设置选中的模块ID
moduleMatchRule.setModules(null);