diff --git a/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/PermissionConstants.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/PermissionConstants.java index 98631e09f2..17ba024cb5 100644 --- a/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/PermissionConstants.java +++ b/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/PermissionConstants.java @@ -312,8 +312,8 @@ public class PermissionConstants { public static final String TEST_PLAN_READ_ASSOCIATION = "PROJECT_TEST_PLAN:READ+ASSOCIATION"; public static final String TEST_PLAN_REPORT_READ = "PROJECT_TEST_PLAN_REPORT:READ"; - public static final String TEST_PLAN_REPORT_READ_ADD = "PROJECT_TEST_PLAN_REPORT:READ+ADD"; public static final String TEST_PLAN_REPORT_READ_UPDATE = "PROJECT_TEST_PLAN_REPORT:READ+UPDATE"; + public static final String TEST_PLAN_REPORT_READ_SHARE = "PROJECT_TEST_PLAN_REPORT:READ+SHARE"; public static final String TEST_PLAN_REPORT_READ_DELETE = "PROJECT_TEST_PLAN_REPORT:READ+DELETE"; /*------ end: TEST_PLAN ------*/ diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/constants/ShareInfoType.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/ShareInfoType.java similarity index 80% rename from backend/services/api-test/src/main/java/io/metersphere/api/constants/ShareInfoType.java rename to backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/ShareInfoType.java index 8cf24c2f8d..f2aca298c5 100644 --- a/backend/services/api-test/src/main/java/io/metersphere/api/constants/ShareInfoType.java +++ b/backend/framework/sdk/src/main/java/io/metersphere/sdk/constants/ShareInfoType.java @@ -1,4 +1,4 @@ -package io.metersphere.api.constants; +package io.metersphere.sdk.constants; /** * @author: LAN diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiReportShareService.java b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiReportShareService.java index 1d17be8139..d097b95a1a 100644 --- a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiReportShareService.java +++ b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiReportShareService.java @@ -1,6 +1,5 @@ package io.metersphere.api.service; -import io.metersphere.api.constants.ShareInfoType; import io.metersphere.api.domain.ApiReport; import io.metersphere.api.domain.ApiScenarioReport; import io.metersphere.api.dto.share.ApiReportShareDTO; @@ -11,6 +10,7 @@ import io.metersphere.api.mapper.ApiScenarioReportMapper; import io.metersphere.project.domain.ProjectApplication; import io.metersphere.project.domain.ProjectApplicationExample; import io.metersphere.project.mapper.ProjectApplicationMapper; +import io.metersphere.sdk.constants.ShareInfoType; import io.metersphere.sdk.domain.ShareInfo; import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.mapper.ShareInfoMapper; diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiShareService.java b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiShareService.java index e11f7e70b8..adc3b5b7a9 100644 --- a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiShareService.java +++ b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiShareService.java @@ -1,13 +1,13 @@ package io.metersphere.api.service; import io.metersphere.api.constants.ApiDefinitionDocType; -import io.metersphere.api.constants.ShareInfoType; import io.metersphere.api.dto.definition.ApiDefinitionDocDTO; import io.metersphere.api.dto.definition.ApiDefinitionDocRequest; import io.metersphere.api.dto.share.ShareInfoDTO; import io.metersphere.api.mapper.ExtShareInfoMapper; import io.metersphere.api.service.definition.ApiDefinitionService; import io.metersphere.api.utils.ApiDataUtils; +import io.metersphere.sdk.constants.ShareInfoType; import io.metersphere.sdk.domain.ShareInfo; import io.metersphere.sdk.mapper.ShareInfoMapper; import io.metersphere.sdk.util.BeanUtils; diff --git a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiReportControllerTests.java b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiReportControllerTests.java index d92f665d19..49cee3b3bd 100644 --- a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiReportControllerTests.java +++ b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiReportControllerTests.java @@ -1,6 +1,5 @@ package io.metersphere.api.controller; -import io.metersphere.api.constants.ShareInfoType; import io.metersphere.api.domain.*; import io.metersphere.api.dto.definition.ApiReportBatchRequest; import io.metersphere.api.dto.definition.ApiReportDTO; @@ -17,10 +16,7 @@ import io.metersphere.api.utils.ApiDataUtils; import io.metersphere.project.domain.ProjectApplication; import io.metersphere.project.domain.ProjectApplicationExample; import io.metersphere.project.mapper.ProjectApplicationMapper; -import io.metersphere.sdk.constants.ApiExecuteResourceType; -import io.metersphere.sdk.constants.ApiReportStatus; -import io.metersphere.sdk.constants.PermissionConstants; -import io.metersphere.sdk.constants.SessionConstants; +import io.metersphere.sdk.constants.*; import io.metersphere.sdk.domain.Environment; import io.metersphere.sdk.domain.EnvironmentExample; import io.metersphere.sdk.domain.EnvironmentGroup; diff --git a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiScenarioReportControllerTests.java b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiScenarioReportControllerTests.java index 86ede6a53a..7064603641 100644 --- a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiScenarioReportControllerTests.java +++ b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiScenarioReportControllerTests.java @@ -1,7 +1,6 @@ package io.metersphere.api.controller; import io.metersphere.api.constants.ApiScenarioStepType; -import io.metersphere.api.constants.ShareInfoType; import io.metersphere.api.domain.*; import io.metersphere.api.dto.definition.ApiReportBatchRequest; import io.metersphere.api.dto.definition.ApiReportPageRequest; @@ -21,6 +20,7 @@ import io.metersphere.project.mapper.ProjectApplicationMapper; import io.metersphere.sdk.constants.ApiReportStatus; import io.metersphere.sdk.constants.PermissionConstants; import io.metersphere.sdk.constants.SessionConstants; +import io.metersphere.sdk.constants.ShareInfoType; import io.metersphere.sdk.domain.Environment; import io.metersphere.sdk.domain.EnvironmentExample; import io.metersphere.sdk.domain.EnvironmentGroup; diff --git a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiShareControllerTests.java b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiShareControllerTests.java index b88209a7b3..30c79091a4 100644 --- a/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiShareControllerTests.java +++ b/backend/services/api-test/src/test/java/io/metersphere/api/controller/ApiShareControllerTests.java @@ -1,7 +1,6 @@ package io.metersphere.api.controller; import io.metersphere.api.constants.ApiDefinitionDocType; -import io.metersphere.api.constants.ShareInfoType; import io.metersphere.api.controller.result.ApiResultCode; import io.metersphere.api.domain.ApiDefinition; import io.metersphere.api.domain.ApiDefinitionBlob; @@ -17,6 +16,7 @@ import io.metersphere.api.mapper.ExtShareInfoMapper; import io.metersphere.api.utils.ApiDataUtils; import io.metersphere.plugin.api.spi.AbstractMsTestElement; import io.metersphere.sdk.constants.PermissionConstants; +import io.metersphere.sdk.constants.ShareInfoType; import io.metersphere.sdk.domain.ShareInfo; import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.mapper.ShareInfoMapper; diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/controller/TestPlanReportShareController.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/controller/TestPlanReportShareController.java new file mode 100644 index 0000000000..fada9a8020 --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/controller/TestPlanReportShareController.java @@ -0,0 +1,43 @@ +package io.metersphere.plan.controller; + +import io.metersphere.plan.dto.TestPlanShareInfo; +import io.metersphere.plan.dto.request.TestPlanReportShareRequest; +import io.metersphere.plan.dto.response.TestPlanShareResponse; +import io.metersphere.plan.service.TestPlanReportShareService; +import io.metersphere.sdk.constants.PermissionConstants; +import io.metersphere.system.security.CheckOwner; +import io.metersphere.system.utils.SessionUtils; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/test-plan/report/share") +@Tag(name = "测试计划-分享") +public class TestPlanReportShareController { + + @Resource + private TestPlanReportShareService testPlanReportShareService; + + @PostMapping("/gen") + @Operation(summary = "测试计划-报告-分享") + @RequiresPermissions(PermissionConstants.TEST_PLAN_REPORT_READ_SHARE) + @CheckOwner(resourceId = "#request.getProjectId()", resourceType = "project") + public TestPlanShareInfo genReportShareInfo(@RequestBody TestPlanReportShareRequest request) { + return testPlanReportShareService.gen(request, SessionUtils.getUserId()); + } + + @GetMapping("/get/{id}") + @Operation(summary = "接口测试-接口报告-获取分享链接") + public TestPlanShareResponse get(@PathVariable String id) { + return testPlanReportShareService.get(id); + } + + @GetMapping("/get-share-time/{id}") + @Operation(summary = "接口测试-接口报告-获取分享链接的有效时间") + public String getShareTime(@PathVariable String id) { + return testPlanReportShareService.getShareTime(id); + } +} diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/TestPlanShareInfo.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/TestPlanShareInfo.java new file mode 100644 index 0000000000..8e54c8ba47 --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/TestPlanShareInfo.java @@ -0,0 +1,14 @@ +package io.metersphere.plan.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class TestPlanShareInfo { + + @Schema(description = "分享ID") + private String id; + + @Schema(description = "分享链接") + private String shareUrl; +} diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/request/TestPlanReportShareRequest.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/request/TestPlanReportShareRequest.java new file mode 100644 index 0000000000..9aaa111d76 --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/request/TestPlanReportShareRequest.java @@ -0,0 +1,27 @@ +package io.metersphere.plan.dto.request; + +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +@Data +public class TestPlanReportShareRequest { + + @Schema(description = "分享类型 资源的类型 Single, Batch, API_SHARE_REPORT, TEST_PLAN_SHARE_REPORT") + private String shareType; + + @Schema(description = "语言") + private String lang; + + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "{share_info.project_id.not_blank}", groups = {Created.class}) + @Size(min = 1, max = 50, message = "{share_info.project_id.length_range}", groups = {Created.class, Updated.class}) + private String projectId; + + @Schema(description = "分享扩展数据 资源的ID" ,requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "{share_info.project_id.not_blank}") + private String reportId; +} diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/response/TestPlanShareResponse.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/response/TestPlanShareResponse.java new file mode 100644 index 0000000000..cf5f3ce1ad --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/dto/response/TestPlanShareResponse.java @@ -0,0 +1,25 @@ +package io.metersphere.plan.dto.response; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +public class TestPlanShareResponse { + + @Schema(description = "分享id") + private String id; + + @Schema(description = "分享类型 资源的类型 Single, Batch, API_SHARE_REPORT, TEST_PLAN_SHARE_REPORT") + private String shareType; + + @Schema(description = "语言") + private String lang; + + private String projectId; + + @Schema(description = "分享扩展数据 资源ID" ,requiredMode = Schema.RequiredMode.REQUIRED) + private String reportId; + + @Schema(description = "分享链接是否被删") + private Boolean deleted; +} diff --git a/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanReportShareService.java b/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanReportShareService.java new file mode 100644 index 0000000000..ada9144225 --- /dev/null +++ b/backend/services/test-plan/src/main/java/io/metersphere/plan/service/TestPlanReportShareService.java @@ -0,0 +1,133 @@ +package io.metersphere.plan.service; + +import io.metersphere.plan.domain.TestPlanReport; +import io.metersphere.plan.dto.TestPlanShareInfo; +import io.metersphere.plan.dto.request.TestPlanReportShareRequest; +import io.metersphere.plan.dto.response.TestPlanShareResponse; +import io.metersphere.plan.mapper.TestPlanReportMapper; +import io.metersphere.project.domain.ProjectApplication; +import io.metersphere.project.domain.ProjectApplicationExample; +import io.metersphere.project.mapper.ProjectApplicationMapper; +import io.metersphere.sdk.constants.ShareInfoType; +import io.metersphere.sdk.domain.ShareInfo; +import io.metersphere.sdk.mapper.ShareInfoMapper; +import io.metersphere.sdk.util.BeanUtils; +import io.metersphere.sdk.util.Translator; +import io.metersphere.system.dto.user.UserDTO; +import io.metersphere.system.mapper.BaseUserMapper; +import io.metersphere.system.uid.IDGenerator; +import jakarta.annotation.Resource; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.context.i18n.LocaleContextHolder; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TestPlanReportShareService { + + @Resource + private BaseUserMapper baseUserMapper; + @Resource + private ShareInfoMapper shareInfoMapper; + @Resource + private TestPlanReportMapper testPlanReportMapper; + @Resource + private ProjectApplicationMapper projectApplicationMapper; + + /** + * 生成计划报告分享信息 + * @param shareRequest 分享请求参数 + * @param currentUser 当前用户 + * @return 计划报告分享信息 + */ + public TestPlanShareInfo gen(TestPlanReportShareRequest shareRequest, String currentUser) { + UserDTO userDTO = baseUserMapper.selectById(currentUser); + String lang = userDTO.getLanguage() == null ? LocaleContextHolder.getLocale().toString() : userDTO.getLanguage(); + ShareInfo request = new ShareInfo(); + BeanUtils.copyBean(request, shareRequest); + request.setLang(lang); + request.setCreateUser(currentUser); + request.setCustomData(shareRequest.getReportId().getBytes()); + request.setShareType(ShareInfoType.TEST_PLAN_SHARE_REPORT.name()); + ShareInfo shareInfo = createShareInfo(request); + return conversionShareInfoToDTO(shareInfo); + } + + /** + * 获取分享信息 + * @param id 分享ID + * @return 分享信息 + */ + public TestPlanShareResponse get(String id) { + ShareInfo shareInfo = checkResource(id); + TestPlanShareResponse dto = new TestPlanShareResponse(); + BeanUtils.copyBean(dto, shareInfo); + dto.setReportId(new String(shareInfo.getCustomData())); + //检查报告ID是否存在 + dto.setDeleted(false); + TestPlanReport testPlanReport = testPlanReportMapper.selectByPrimaryKey(dto.getReportId()); + if (testPlanReport == null) { + dto.setDeleted(true); + } + return dto; + } + + /** + * 获取项目计划报告分享有效期 + * @param projectId 项目ID + * @return 有效期 + */ + public String getShareTime(String projectId) { + ProjectApplicationExample example = new ProjectApplicationExample(); + example.createCriteria().andProjectIdEqualTo(projectId).andTypeEqualTo(ShareInfoType.TEST_PLAN_SHARE_REPORT.name()); + List projectApplications = projectApplicationMapper.selectByExample(example); + if (CollectionUtils.isEmpty(projectApplications)) { + return "1D"; + } else { + return projectApplications.getFirst().getTypeValue(); + } + } + + /** + * 校验分享的资源是否存在 + * @param id 分享ID + * @return 分享资源信息 + */ + private ShareInfo checkResource(String id) { + ShareInfo shareInfo = shareInfoMapper.selectByPrimaryKey(id); + if (shareInfo == null) { + throw new RuntimeException(Translator.get("connection_expired")); + } + return shareInfo; + } + + /** + * 创建分享信息 + * @param shareInfo 分享的信息 + * @return 分享信息 + */ + private ShareInfo createShareInfo(ShareInfo shareInfo) { + long createTime = System.currentTimeMillis(); + shareInfo.setId(IDGenerator.nextStr()); + shareInfo.setCreateTime(createTime); + shareInfo.setUpdateTime(createTime); + shareInfoMapper.insert(shareInfo); + return shareInfo; + } + + /** + * 设置分享信息并返回 + * @param shareInfo 分享信息 + * @return 计划报告分享信息返回 + */ + private TestPlanShareInfo conversionShareInfoToDTO(ShareInfo shareInfo) { + TestPlanShareInfo testPlanShareInfo = new TestPlanShareInfo(); + if (shareInfo.getCustomData() != null) { + String url = "?shareId=" + shareInfo.getId(); + testPlanShareInfo.setId(shareInfo.getId()); + testPlanShareInfo.setShareUrl(url); + } + return testPlanShareInfo; + } +} diff --git a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanBugControllerTests.java b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanBugControllerTests.java index 7ba8f8218d..054a794386 100644 --- a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanBugControllerTests.java +++ b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanBugControllerTests.java @@ -19,6 +19,7 @@ import org.springframework.test.web.servlet.MvcResult; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Map; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -63,6 +64,7 @@ public class TestPlanBugControllerTests extends BaseTest { || StringUtils.contains(bug.getNum(), request.getKeyword())); // 数据为空 request.setKeyword("oasis-1"); + request.setSort(Map.of("b.create_time", "asc")); this.requestPost(TEST_PLAN_BUG_PAGE, request); } diff --git a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanReportControllerTests.java b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanReportControllerTests.java index 9abcc2ce44..666b162da6 100644 --- a/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanReportControllerTests.java +++ b/backend/services/test-plan/src/test/java/io/metersphere/plan/controller/TestPlanReportControllerTests.java @@ -1,10 +1,9 @@ package io.metersphere.plan.controller; -import io.metersphere.plan.dto.request.TestPlanReportBatchRequest; -import io.metersphere.plan.dto.request.TestPlanReportDeleteRequest; -import io.metersphere.plan.dto.request.TestPlanReportEditRequest; -import io.metersphere.plan.dto.request.TestPlanReportPageRequest; +import io.metersphere.plan.dto.TestPlanShareInfo; +import io.metersphere.plan.dto.request.*; import io.metersphere.plan.dto.response.TestPlanReportPageResponse; +import io.metersphere.sdk.constants.ShareInfoType; import io.metersphere.sdk.util.JSON; import io.metersphere.system.base.BaseTest; import io.metersphere.system.controller.handler.ResultHolder; @@ -19,6 +18,7 @@ import org.springframework.test.web.servlet.MvcResult; import java.nio.charset.StandardCharsets; import java.util.List; +import java.util.Locale; import java.util.Map; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -32,6 +32,9 @@ public class TestPlanReportControllerTests extends BaseTest { private static final String RENAME_PLAN_REPORT = "/test-plan/report/rename"; private static final String DELETE_PLAN_REPORT = "/test-plan/report/delete"; private static final String BATCH_DELETE_PLAN_REPORT = "/test-plan/report/batch-delete"; + private static final String GEN_AND_SHARE = "/test-plan/report/share/gen"; + private static final String GET_SHARE_INFO = "/test-plan/report/share/get"; + private static final String GET_SHARE_TIME = "/test-plan/report/share/get-share-time"; @Test @Order(1) @@ -107,6 +110,39 @@ public class TestPlanReportControllerTests extends BaseTest { @Test @Order(5) + void testSharePlanReport() throws Exception { + TestPlanReportShareRequest shareRequest = new TestPlanReportShareRequest(); + shareRequest.setReportId("test-plan-report-id-1"); + shareRequest.setProjectId("100001100001"); + shareRequest.setShareType(ShareInfoType.TEST_PLAN_SHARE_REPORT.name()); + this.requestPost(GEN_AND_SHARE, shareRequest); + shareRequest.setLang(Locale.SIMPLIFIED_CHINESE.getLanguage()); + MvcResult mvcResult = this.requestPost(GEN_AND_SHARE, shareRequest).andReturn(); + String sortData = mvcResult.getResponse().getContentAsString(StandardCharsets.UTF_8); + ResultHolder sortHolder = JSON.parseObject(sortData, ResultHolder.class); + TestPlanShareInfo shareInfo = JSON.parseObject(JSON.toJSONString(sortHolder.getData()), TestPlanShareInfo.class); + Assertions.assertNotNull(shareInfo); + this.requestGet(GET_SHARE_INFO + "/" + shareInfo.getId()); + } + + @Test + @Order(6) + void testGetShareInfo() throws Exception { + // 报告被删除 + this.requestGet(GET_SHARE_INFO + "/share-1"); + // 分享链接未找到 + this.requestGet(GET_SHARE_INFO + "/share-2", status().is5xxServerError()); + } + + @Test + @Order(7) + void testGetShareTime() throws Exception { + this.requestGet(GET_SHARE_TIME + "/100001100001"); + this.requestGet(GET_SHARE_TIME + "/100001100002"); + } + + @Test + @Order(8) void testDeletePlanReport() throws Exception { TestPlanReportDeleteRequest request = new TestPlanReportDeleteRequest(); request.setId("test-plan-report-id-1"); @@ -115,7 +151,7 @@ public class TestPlanReportControllerTests extends BaseTest { } @Test - @Order(6) + @Order(9) void testBatchDeletePlanReport() throws Exception { TestPlanReportBatchRequest request = new TestPlanReportBatchRequest(); request.setProjectId("100001100001"); diff --git a/backend/services/test-plan/src/test/resources/dml/init_test_plan_report.sql b/backend/services/test-plan/src/test/resources/dml/init_test_plan_report.sql index b02f301ff6..51596cb414 100644 --- a/backend/services/test-plan/src/test/resources/dml/init_test_plan_report.sql +++ b/backend/services/test-plan/src/test/resources/dml/init_test_plan_report.sql @@ -11,4 +11,10 @@ INSERT INTO `test_plan_report`(`id`, `test_plan_id`, `name`, `create_user`, `cre ('test-plan-report-id-1', 'test-plan-id-for991', '测试一下计划报告1', 'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'MANUAL', 'PENDING', '-', '99.99', 100.00), ('test-plan-report-id-2', 'test-plan-id-for991', '测试一下计划报告1', 'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'MANUAL', 'PENDING', '-', '99.99', 100.00), ('test-plan-report-id-3', 'test-plan-id-for992', '测试一下计划报告3', 'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'MANUAL', 'PENDING', '-', '99.99', 100.00), -('test-plan-report-id-4', 'test-plan-id-for992', '测试一下计划报告4', 'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'MANUAL', 'PENDING', '-', '99.99', 100.00); \ No newline at end of file +('test-plan-report-id-4', 'test-plan-id-for992', '测试一下计划报告4', 'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'MANUAL', 'PENDING', '-', '99.99', 100.00); + +-- 计划报告分享信息 +INSERT INTO project_application (`project_id`, `type`, `type_value`) VALUES + ('100001100001', 'TEST_PLAN_SHARE_REPORT', '1D'); +INSERT INTO `share_info`(`id`, `create_time`, `create_user`, `update_time`, `share_type`, `custom_data`, `lang`, `project_id`) VALUES +('share-1', CURRENT_TIMESTAMP, 'admin', CURRENT_TIMESTAMP, 'TEST_PLAN_SHARE_REPORT', 0x31303531363635363936353436383137, 'zh_CN', '100001100001'); \ No newline at end of file