refactor(接口测试): 优化接口报告通知

This commit is contained in:
wxg0103 2024-06-17 10:03:13 +08:00 committed by Craftsman
parent 83d475aeef
commit e00efb20b2
2 changed files with 26 additions and 8 deletions

View File

@ -14,6 +14,7 @@ import io.metersphere.api.mapper.ApiScenarioReportMapper;
import io.metersphere.api.mapper.ApiTestCaseMapper; import io.metersphere.api.mapper.ApiTestCaseMapper;
import io.metersphere.project.domain.Project; import io.metersphere.project.domain.Project;
import io.metersphere.project.mapper.ProjectMapper; import io.metersphere.project.mapper.ProjectMapper;
import io.metersphere.sdk.constants.ApiExecuteResourceType;
import io.metersphere.sdk.constants.ReportStatus; import io.metersphere.sdk.constants.ReportStatus;
import io.metersphere.sdk.domain.Environment; import io.metersphere.sdk.domain.Environment;
import io.metersphere.sdk.dto.api.notice.ApiNoticeDTO; import io.metersphere.sdk.dto.api.notice.ApiNoticeDTO;
@ -57,15 +58,17 @@ public class ApiReportSendNoticeService {
private EnvironmentMapper environmentMapper; private EnvironmentMapper environmentMapper;
@Resource @Resource
private ProjectMapper projectMapper; private ProjectMapper projectMapper;
private static final String API_SCENARIO = "API_SCENARIO";
private static final String API_CASE = "API_CASE";
public void sendNotice(ApiNoticeDTO noticeDTO) { public void sendNotice(ApiNoticeDTO noticeDTO) {
String noticeType; String noticeType = null;
if (StringUtils.equalsAnyIgnoreCase(noticeDTO.getResourceType(),
ApiExecuteResourceType.PLAN_RUN_API_CASE.name(), ApiExecuteResourceType.PLAN_RUN_API_SCENARIO.name())) {
return;
}
SystemParameterService systemParameterService = CommonBeanFactory.getBean(SystemParameterService.class); SystemParameterService systemParameterService = CommonBeanFactory.getBean(SystemParameterService.class);
assert systemParameterService != null; assert systemParameterService != null;
BaseSystemConfigDTO baseSystemConfigDTO = systemParameterService.getBaseInfo(); BaseSystemConfigDTO baseSystemConfigDTO = systemParameterService.getBaseInfo();
BeanMap beanMap; BeanMap beanMap = null;
String event = null; String event = null;
ApiReportShareService shareService = CommonBeanFactory.getBean(ApiReportShareService.class); ApiReportShareService shareService = CommonBeanFactory.getBean(ApiReportShareService.class);
ApiReportShareRequest shareRequest = new ApiReportShareRequest(); ApiReportShareRequest shareRequest = new ApiReportShareRequest();
@ -77,12 +80,13 @@ public class ApiReportSendNoticeService {
String reportUrl = baseSystemConfigDTO.getUrl() + "/#/api-test/report?orgId=%s&pId=%s&type=%s&reportId=%s"; String reportUrl = baseSystemConfigDTO.getUrl() + "/#/api-test/report?orgId=%s&pId=%s&type=%s&reportId=%s";
String shareUrl = baseSystemConfigDTO.getUrl() + "/#/share/%s?shareId=" + url.getId(); String shareUrl = baseSystemConfigDTO.getUrl() + "/#/share/%s?shareId=" + url.getId();
ApiScenarioReport report = new ApiScenarioReport(); ApiScenarioReport report = new ApiScenarioReport();
if (API_SCENARIO.equals(noticeDTO.getResourceType())) { if (StringUtils.equalsAnyIgnoreCase(noticeDTO.getResourceType(),
ApiExecuteResourceType.API_SCENARIO.name(), ApiExecuteResourceType.TEST_PLAN_API_SCENARIO.name())) {
ApiScenario scenario = apiScenarioMapper.selectByPrimaryKey(noticeDTO.getResourceId()); ApiScenario scenario = apiScenarioMapper.selectByPrimaryKey(noticeDTO.getResourceId());
beanMap = new BeanMap(scenario); beanMap = new BeanMap(scenario);
noticeType = NoticeConstants.TaskType.API_SCENARIO_TASK; noticeType = NoticeConstants.TaskType.API_SCENARIO_TASK;
report = apiScenarioReportMapper.selectByPrimaryKey(noticeDTO.getReportId()); report = apiScenarioReportMapper.selectByPrimaryKey(noticeDTO.getReportId());
reportUrl = String.format(reportUrl, project.getOrganizationId(), project.getId(), API_SCENARIO, report.getId()); reportUrl = String.format(reportUrl, project.getOrganizationId(), project.getId(), ApiExecuteResourceType.API_SCENARIO.name(), report.getId());
if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.SUCCESS.name())) { if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.SUCCESS.name())) {
event = NoticeConstants.Event.SCENARIO_EXECUTE_SUCCESSFUL; event = NoticeConstants.Event.SCENARIO_EXECUTE_SUCCESSFUL;
} else if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.FAKE_ERROR.name())) { } else if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.FAKE_ERROR.name())) {
@ -91,14 +95,15 @@ public class ApiReportSendNoticeService {
event = NoticeConstants.Event.SCENARIO_EXECUTE_FAILED; event = NoticeConstants.Event.SCENARIO_EXECUTE_FAILED;
} }
shareUrl = String.format(shareUrl, "shareReportScenario"); shareUrl = String.format(shareUrl, "shareReportScenario");
} else { } else if (StringUtils.equalsAnyIgnoreCase(noticeDTO.getResourceType(),
ApiExecuteResourceType.API_CASE.name(), ApiExecuteResourceType.TEST_PLAN_API_CASE.name())) {
ApiTestCase testCase = apiTestCaseMapper.selectByPrimaryKey(noticeDTO.getResourceId()); ApiTestCase testCase = apiTestCaseMapper.selectByPrimaryKey(noticeDTO.getResourceId());
beanMap = new BeanMap(testCase); beanMap = new BeanMap(testCase);
// TODO 是否需要区分场景和用例 // TODO 是否需要区分场景和用例
noticeType = NoticeConstants.TaskType.API_DEFINITION_TASK; noticeType = NoticeConstants.TaskType.API_DEFINITION_TASK;
ApiReport apiReport = apiReportMapper.selectByPrimaryKey(noticeDTO.getReportId()); ApiReport apiReport = apiReportMapper.selectByPrimaryKey(noticeDTO.getReportId());
reportUrl = String.format(reportUrl, project.getOrganizationId(), project.getId(), API_CASE, apiReport.getId()); reportUrl = String.format(reportUrl, project.getOrganizationId(), project.getId(), ApiExecuteResourceType.API_CASE.name(), apiReport.getId());
BeanUtils.copyBean(report, apiReport); BeanUtils.copyBean(report, apiReport);
if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.SUCCESS.name())) { if (StringUtils.endsWithIgnoreCase(noticeDTO.getReportStatus(), ReportStatus.SUCCESS.name())) {
event = NoticeConstants.Event.CASE_EXECUTE_SUCCESSFUL; event = NoticeConstants.Event.CASE_EXECUTE_SUCCESSFUL;

View File

@ -6,6 +6,7 @@ import io.metersphere.api.mapper.ApiTestCaseMapper;
import io.metersphere.api.service.ApiReportSendNoticeService; import io.metersphere.api.service.ApiReportSendNoticeService;
import io.metersphere.api.service.definition.ApiReportService; import io.metersphere.api.service.definition.ApiReportService;
import io.metersphere.api.service.scenario.ApiScenarioReportService; import io.metersphere.api.service.scenario.ApiScenarioReportService;
import io.metersphere.sdk.constants.ApiExecuteResourceType;
import io.metersphere.sdk.constants.ReportStatus; import io.metersphere.sdk.constants.ReportStatus;
import io.metersphere.sdk.domain.Environment; import io.metersphere.sdk.domain.Environment;
import io.metersphere.sdk.dto.api.notice.ApiNoticeDTO; import io.metersphere.sdk.dto.api.notice.ApiNoticeDTO;
@ -123,6 +124,12 @@ public class ApiReportSendNoticeTests extends BaseTest {
noticeDTO.setReportId("send-api-case-report-id2"); noticeDTO.setReportId("send-api-case-report-id2");
apiReportSendNoticeService.sendNotice(noticeDTO); apiReportSendNoticeService.sendNotice(noticeDTO);
noticeDTO.setResourceType(ApiExecuteResourceType.PLAN_RUN_API_CASE.name());
apiReportSendNoticeService.sendNotice(noticeDTO);
noticeDTO.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_CASE.name());
apiReportSendNoticeService.sendNotice(noticeDTO);
ApiScenario apiScenario = new ApiScenario(); ApiScenario apiScenario = new ApiScenario();
apiScenario.setId("send-scenario-id"); apiScenario.setId("send-scenario-id");
@ -190,5 +197,11 @@ public class ApiReportSendNoticeTests extends BaseTest {
noticeDTO.setReportStatus(ReportStatus.FAKE_ERROR.name()); noticeDTO.setReportStatus(ReportStatus.FAKE_ERROR.name());
noticeDTO.setReportId("send-scenario-report-id2"); noticeDTO.setReportId("send-scenario-report-id2");
apiReportSendNoticeService.sendNotice(noticeDTO); apiReportSendNoticeService.sendNotice(noticeDTO);
noticeDTO.setResourceType(ApiExecuteResourceType.PLAN_RUN_API_SCENARIO.name());
apiReportSendNoticeService.sendNotice(noticeDTO);
noticeDTO.setResourceType(ApiExecuteResourceType.TEST_PLAN_API_SCENARIO.name());
apiReportSendNoticeService.sendNotice(noticeDTO);
} }
} }