feat(通用设置): 增加批量清空标签功能
This commit is contained in:
parent
994861ae7a
commit
e48c01a8aa
|
@ -27,6 +27,8 @@ public class ApiCaseBatchEditRequest extends ApiTestCaseBatchRequest implements
|
|||
private String type;
|
||||
@Schema(description = "是否追加标签")
|
||||
private boolean append = false;
|
||||
@Schema(description = "默认不清空所有标签")
|
||||
private boolean clear = false;
|
||||
@Schema(description = "环境id")
|
||||
@Size(max = 50, message = "{api_test_case.env_id.length_range}")
|
||||
private String environmentId;
|
||||
|
|
|
@ -47,6 +47,9 @@ public class ApiDefinitionBatchUpdateRequest extends ApiDefinitionBatchRequest {
|
|||
@Schema(description = "是否追加", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean append = false;
|
||||
|
||||
@Schema(description = "是否清空")
|
||||
private boolean clear = false;
|
||||
|
||||
public List<String> getTags() {
|
||||
if (tags == null) {
|
||||
return new ArrayList<>(0);
|
||||
|
|
|
@ -27,6 +27,8 @@ public class ApiMockBatchEditRequest extends ApiTestCaseBatchRequest implements
|
|||
private String type;
|
||||
@Schema(description = "是否追加标签")
|
||||
private boolean append = false;
|
||||
@Schema(description = "默认不清空所有标签")
|
||||
private boolean clear = false;
|
||||
@Schema(description = "状态 开启/关闭")
|
||||
private boolean enable;
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@ public class ApiScenarioBatchEditRequest extends ApiScenarioBatchRequest impleme
|
|||
private String type;
|
||||
@Schema(description = "默认覆盖原标签")
|
||||
private boolean append = false;
|
||||
@Schema(description = "默认不清空所有标签")
|
||||
private boolean clear = false;
|
||||
@Schema(description = "环境id")
|
||||
@Size(max = 50, message = "{api_test_case.environment_id.length_range}")
|
||||
private String envId;
|
||||
|
|
|
@ -449,7 +449,7 @@ public class ApiDefinitionMockService {
|
|||
});
|
||||
}
|
||||
} else {
|
||||
updateMock.setTags(ServiceUtils.parseTags(request.getTags()));
|
||||
updateMock.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
mapper.updateByExampleSelective(updateMock, example);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -651,7 +651,7 @@ public class ApiDefinitionService extends MoveNodeService {
|
|||
} else {
|
||||
//替换标签
|
||||
ApiDefinition apiDefinition = new ApiDefinition();
|
||||
apiDefinition.setTags(ServiceUtils.parseTags(request.getTags()));
|
||||
apiDefinition.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
apiDefinition.setProjectId(request.getProjectId());
|
||||
apiDefinition.setUpdateTime(System.currentTimeMillis());
|
||||
apiDefinition.setUpdateUser(userId);
|
||||
|
|
|
@ -535,7 +535,7 @@ public class ApiTestCaseService extends MoveNodeService {
|
|||
});
|
||||
}
|
||||
} else {
|
||||
updateCase.setTags(ServiceUtils.parseTags(request.getTags()));
|
||||
updateCase.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
mapper.updateByExampleSelective(updateCase, example);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -331,7 +331,7 @@ public class ApiScenarioService extends MoveNodeService {
|
|||
});
|
||||
}
|
||||
} else {
|
||||
updateScenario.setTags(ServiceUtils.parseTags(request.getTags().stream().distinct().toList()));
|
||||
updateScenario.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags().stream().distinct().toList()));
|
||||
mapper.updateByExampleSelective(updateScenario, example);
|
||||
}
|
||||
}
|
||||
|
@ -583,6 +583,7 @@ public class ApiScenarioService extends MoveNodeService {
|
|||
/**
|
||||
* 当文件管理更新了关联资源的 csv 文件版本时
|
||||
* 前端文件并未更新,这里使用时,进行对比,使用较新的文件版本
|
||||
*
|
||||
* @param csvVariables
|
||||
* @param dbCsv
|
||||
*/
|
||||
|
|
|
@ -750,14 +750,24 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
|||
apiDefinitionBatchUpdateRequest.setSelectIds(List.of("1001", "1002"));
|
||||
apiDefinitionBatchUpdateRequest.setTags(new LinkedHashSet<>(List.of("tag-append", "tag-append1")));
|
||||
apiDefinitionBatchUpdateRequest.setAppend(true);
|
||||
apiDefinitionBatchUpdateRequest.setClear(false);
|
||||
this.requestPostWithOk(BATCH_UPDATE, apiDefinitionBatchUpdateRequest);
|
||||
assertBatchUpdateApiDefinition(apiDefinitionBatchUpdateRequest, List.of("1001", "1002"));
|
||||
// 修改标签,覆盖
|
||||
apiDefinitionBatchUpdateRequest.setSelectIds(List.of("1003", "1004"));
|
||||
apiDefinitionBatchUpdateRequest.setTags(new LinkedHashSet<>(List.of("tag-append", "tag-append1")));
|
||||
apiDefinitionBatchUpdateRequest.setAppend(false);
|
||||
apiDefinitionBatchUpdateRequest.setClear(false);
|
||||
this.requestPostWithOk(BATCH_UPDATE, apiDefinitionBatchUpdateRequest);
|
||||
assertBatchUpdateApiDefinition(apiDefinitionBatchUpdateRequest, List.of("1003", "1004"));
|
||||
apiDefinitionBatchUpdateRequest.setClear(true);
|
||||
this.requestPostWithOk(BATCH_UPDATE, apiDefinitionBatchUpdateRequest);
|
||||
ApiDefinitionExample apiDefinitionExample = new ApiDefinitionExample();
|
||||
apiDefinitionExample.createCriteria().andIdIn(List.of("1003", "1004"));
|
||||
List<ApiDefinition> apiDefinitions = apiDefinitionMapper.selectByExample(apiDefinitionExample);
|
||||
for (ApiDefinition definition : apiDefinitions) {
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(definition.getTags()));
|
||||
}
|
||||
// 自定义字段覆盖
|
||||
apiDefinitionBatchUpdateRequest.setType("customs");
|
||||
apiDefinitionBatchUpdateRequest.setSelectIds(List.of("1002", "1003", "1004"));
|
||||
|
@ -766,6 +776,7 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
|||
field.setValue(JSON.toJSONString(List.of("test1-batch")));
|
||||
apiDefinitionBatchUpdateRequest.setCustomField(field);
|
||||
apiDefinitionBatchUpdateRequest.setAppend(false);
|
||||
apiDefinitionBatchUpdateRequest.setClear(false);
|
||||
this.requestPostWithOk(BATCH_UPDATE, apiDefinitionBatchUpdateRequest);
|
||||
// 修改协议类型
|
||||
apiDefinitionBatchUpdateRequest.setType("method");
|
||||
|
|
|
@ -607,6 +607,7 @@ public class ApiDefinitionMockControllerTests extends BaseTest {
|
|||
request.setProjectId(DEFAULT_PROJECT_ID);
|
||||
request.setType("Tags");
|
||||
request.setAppend(true);
|
||||
request.setClear(false);
|
||||
request.setSelectAll(true);
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag3", "tag4")));
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
|
@ -623,10 +624,16 @@ public class ApiDefinitionMockControllerTests extends BaseTest {
|
|||
//覆盖标签
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1")));
|
||||
request.setAppend(false);
|
||||
request.setClear(false);
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
apiDefinitionMockMapper.selectByExample(example).forEach(apiTestCase -> {
|
||||
Assertions.assertEquals(apiTestCase.getTags(), List.of("tag1"));
|
||||
});
|
||||
request.setClear(true);
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
apiDefinitionMockMapper.selectByExample(example).forEach(apiTestCase -> {
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(apiTestCase.getTags()));
|
||||
});
|
||||
//标签为空 报错
|
||||
request.setTags(new LinkedHashSet<>());
|
||||
this.requestPost(BATCH_EDIT, request, status().is4xxClientError());
|
||||
|
|
|
@ -1621,6 +1621,7 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
request.setProjectId(DEFAULT_PROJECT_ID);
|
||||
request.setType("Tags");
|
||||
request.setAppend(true);
|
||||
request.setClear(false);
|
||||
request.setSelectAll(true);
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag3", "tag4")));
|
||||
requestPostAndReturn(BATCH_EDIT, request);
|
||||
|
@ -1654,10 +1655,17 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
//覆盖标签
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1")));
|
||||
request.setAppend(false);
|
||||
request.setClear(false);
|
||||
requestPostAndReturn(BATCH_EDIT, request);
|
||||
apiScenarioMapper.selectByExample(example).forEach(scenario -> {
|
||||
Assertions.assertEquals(scenario.getTags(), List.of("tag1"));
|
||||
});
|
||||
request.setAppend(false);
|
||||
request.setClear(true);
|
||||
requestPostAndReturn(BATCH_EDIT, request);
|
||||
apiScenarioMapper.selectByExample(example).forEach(scenario -> {
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(scenario.getTags()));
|
||||
});
|
||||
//标签为空 报错
|
||||
request.setTags(new LinkedHashSet<>());
|
||||
this.requestPost(BATCH_EDIT, request, ERROR_REQUEST_MATCHER);
|
||||
|
|
|
@ -1101,6 +1101,7 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
|||
request.setProjectId(DEFAULT_PROJECT_ID);
|
||||
request.setType("Tags");
|
||||
request.setAppend(true);
|
||||
request.setClear(false);
|
||||
request.setSelectAll(true);
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag3", "tag4")));
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
|
@ -1117,10 +1118,16 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
|||
//覆盖标签
|
||||
request.setTags(new LinkedHashSet<>(List.of("tag1")));
|
||||
request.setAppend(false);
|
||||
request.setClear(false);
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
apiTestCaseMapper.selectByExample(example).forEach(apiTestCase -> {
|
||||
Assertions.assertEquals(apiTestCase.getTags(), List.of("tag1"));
|
||||
});
|
||||
request.setClear(true);
|
||||
requestPostWithOkAndReturn(BATCH_EDIT, request);
|
||||
apiTestCaseMapper.selectByExample(example).forEach(apiTestCase -> {
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(apiTestCase.getTags()));
|
||||
});
|
||||
//标签为空 报错
|
||||
request.setTags(new LinkedHashSet<>());
|
||||
this.requestPost(BATCH_EDIT, request, ERROR_REQUEST_MATCHER);
|
||||
|
|
|
@ -16,6 +16,9 @@ public class BugBatchUpdateRequest extends BugBatchRequest{
|
|||
@Schema(description = "是否追加", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
private boolean append;
|
||||
|
||||
@Schema(description = "是否清空")
|
||||
private boolean clear;
|
||||
|
||||
@Schema(description = "更新人")
|
||||
private String updateUser;
|
||||
|
||||
|
|
|
@ -492,7 +492,7 @@ public class BugService {
|
|||
List<String> batchIds = getBatchIdsByRequest(request);
|
||||
// 批量日志{修改之前}
|
||||
List<LogDTO> logs = getBatchLogByRequest(batchIds, OperationLogType.UPDATE.name(), OperationLogModule.BUG_MANAGEMENT_INDEX, "/bug/batch-update",
|
||||
request.getProjectId(), true, request.isAppend(), request.getTags(), currentUser);
|
||||
request.getProjectId(), true, request.isAppend(), request.isClear() ? new ArrayList<>() : request.getTags(), currentUser);
|
||||
operationLogService.batchAdd(logs);
|
||||
// 目前只做标签的批量编辑
|
||||
if (request.isAppend()) {
|
||||
|
@ -513,8 +513,8 @@ public class BugService {
|
|||
sqlSession.flushStatements();
|
||||
SqlSessionUtils.closeSqlSession(sqlSession, sqlSessionFactory);
|
||||
} else {
|
||||
request.setTags(ServiceUtils.parseTags(request.getTags()));
|
||||
// 标签(覆盖)
|
||||
// 标签(清空/覆盖)
|
||||
request.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
request.setUpdateUser(currentUser);
|
||||
request.setUpdateTime(System.currentTimeMillis());
|
||||
extBugMapper.batchUpdate(request, batchIds);
|
||||
|
@ -721,6 +721,7 @@ public class BugService {
|
|||
|
||||
/**
|
||||
* 处理平台全量缺陷
|
||||
*
|
||||
* @param project 项目
|
||||
* @param request 同步请求参数
|
||||
* @param currentUser 当前用户
|
||||
|
@ -1455,6 +1456,7 @@ public class BugService {
|
|||
|
||||
/**
|
||||
* 是否插件默认模板
|
||||
*
|
||||
* @param templateId 模板ID
|
||||
* @param pluginTemplate 插件模板
|
||||
* @return 是否插件默认模板
|
||||
|
@ -1969,7 +1971,6 @@ public class BugService {
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param atomicPos 位置
|
||||
* @param batchBugMapper 批量操作缺陷
|
||||
* @param batchBugContentMapper 批量操作缺陷内容
|
||||
|
|
|
@ -51,6 +51,7 @@ import org.springframework.mock.web.MockMultipartFile;
|
|||
import org.springframework.test.context.jdbc.Sql;
|
||||
import org.springframework.test.context.jdbc.SqlConfig;
|
||||
import org.springframework.test.web.servlet.MvcResult;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.LinkedMultiValueMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
|
||||
|
@ -380,16 +381,29 @@ public class BugControllerTests extends BaseTest {
|
|||
// TAG追加
|
||||
request.setTags(List.of("TAG", "TEST_TAG"));
|
||||
request.setAppend(true);
|
||||
request.setClear(false);
|
||||
this.requestPost(BUG_BATCH_UPDATE, request, status().isOk());
|
||||
// TAG覆盖
|
||||
request.setExcludeIds(List.of("default-bug-id-tapd1"));
|
||||
request.setTags(List.of("A", "B"));
|
||||
request.setAppend(false);
|
||||
request.setClear(false);
|
||||
this.requestPost(BUG_BATCH_UPDATE, request, status().isOk());
|
||||
// 勾选部分
|
||||
request.setSelectAll(false);
|
||||
request.setSelectIds(List.of("default-bug-id"));
|
||||
this.requestPost(BUG_BATCH_UPDATE, request, status().isOk());
|
||||
//TAG追加 清空
|
||||
Bug bug = bugMapper.selectByPrimaryKey("default-bug-id");
|
||||
Assertions.assertEquals(2, bug.getTags().size());
|
||||
request.setAppend(false);
|
||||
request.setClear(true);
|
||||
this.requestPost(BUG_BATCH_UPDATE, request, status().isOk());
|
||||
bug = bugMapper.selectByPrimaryKey("default-bug-id");
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(bug.getTags()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -808,8 +808,6 @@
|
|||
WHERE
|
||||
tpfc.test_plan_id = #{request.planId}
|
||||
AND fc.deleted = #{deleted}
|
||||
AND
|
||||
fc.project_Id = #{request.projectId}
|
||||
AND
|
||||
tpfc.test_plan_collection_id = #{request.collectionId}
|
||||
</select>
|
||||
|
|
|
@ -1348,8 +1348,13 @@ public class FunctionalCaseMinderService {
|
|||
public List<FunctionalMinderTreeDTO> getCollectionMindFunctionalCase(FunctionalCaseCollectionMindRequest request, boolean deleted) {
|
||||
List<FunctionalMinderTreeDTO> list = new ArrayList<>();
|
||||
List<FunctionalCaseMindDTO> functionalCaseMindDTOList = extFunctionalCaseMapper.getMinderCollectionList(request, deleted);
|
||||
List<String> fieldIds = getFieldIds(request.getProjectId());
|
||||
List<FunctionalCaseCustomField> caseCustomFieldList = extFunctionalCaseMapper.getCaseCustomFieldListByCollection(request, deleted, fieldIds);
|
||||
List<String> projectIds = functionalCaseMindDTOList.stream().map(FunctionalCaseMindDTO::getProjectId).distinct().toList();
|
||||
List<FunctionalCaseCustomField> caseCustomFieldList = new ArrayList<>();
|
||||
for (String projectId : projectIds) {
|
||||
List<String> fieldIds = getFieldIds(projectId);
|
||||
List<FunctionalCaseCustomField> caseCustomFieldListByProjectId = extFunctionalCaseMapper.getCaseCustomFieldListByCollection(request, deleted, fieldIds);
|
||||
caseCustomFieldList.addAll(caseCustomFieldListByProjectId);
|
||||
}
|
||||
Map<String, String> priorityMap = caseCustomFieldList.stream().collect(Collectors.toMap(FunctionalCaseCustomField::getCaseId, FunctionalCaseCustomField::getValue));
|
||||
//构造父子级数据
|
||||
buildList(functionalCaseMindDTOList, list, priorityMap, "TEST_PLAN");
|
||||
|
|
|
@ -138,8 +138,6 @@ public class FunctionalCaseService {
|
|||
@Resource
|
||||
private FunctionalCaseDemandMapper functionalCaseDemandMapper;
|
||||
@Resource
|
||||
private FunctionalCaseTestMapper functionalCaseTestMapper;
|
||||
@Resource
|
||||
private ExtFunctionalCaseTestMapper extFunctionalCaseTestMapper;
|
||||
@Resource
|
||||
private BugRelationCaseMapper bugRelationCaseMapper;
|
||||
|
@ -1026,18 +1024,10 @@ public class FunctionalCaseService {
|
|||
});
|
||||
sqlSession.flushStatements();
|
||||
SqlSessionUtils.closeSqlSession(sqlSession, sqlSessionFactory);
|
||||
} else if (request.isClear()) {
|
||||
//清空标签
|
||||
FunctionalCase functionalCase = new FunctionalCase();
|
||||
functionalCase.setTags(new ArrayList<>());
|
||||
functionalCase.setProjectId(request.getProjectId());
|
||||
functionalCase.setUpdateTime(System.currentTimeMillis());
|
||||
functionalCase.setUpdateUser(userId);
|
||||
extFunctionalCaseMapper.batchUpdate(functionalCase, ids);
|
||||
}else {
|
||||
} else {
|
||||
//替换标签
|
||||
FunctionalCase functionalCase = new FunctionalCase();
|
||||
functionalCase.setTags(request.getTags());
|
||||
functionalCase.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
functionalCase.setProjectId(request.getProjectId());
|
||||
functionalCase.setUpdateTime(System.currentTimeMillis());
|
||||
functionalCase.setUpdateUser(userId);
|
||||
|
|
|
@ -14,6 +14,9 @@ public class TestPlanBatchEditRequest extends TestPlanBatchProcessRequest {
|
|||
@Schema(description = "是否追加")
|
||||
private boolean append = true;
|
||||
|
||||
@Schema(description = "是否清空")
|
||||
private boolean clear;
|
||||
|
||||
@Schema(description = "标签")
|
||||
private List<String> tags;
|
||||
|
||||
|
|
|
@ -794,7 +794,7 @@ public class TestPlanService extends TestPlanBaseUtilsService {
|
|||
} else {
|
||||
//替换标签
|
||||
TestPlan testPlan = new TestPlan();
|
||||
testPlan.setTags(ServiceUtils.parseTags(request.getTags()));
|
||||
testPlan.setTags(request.isClear() ? new ArrayList<>() : ServiceUtils.parseTags(request.getTags()));
|
||||
testPlan.setProjectId(request.getProjectId());
|
||||
testPlan.setUpdateTime(System.currentTimeMillis());
|
||||
testPlan.setUpdateUser(userId);
|
||||
|
|
|
@ -2384,6 +2384,7 @@ public class TestPlanTests extends BaseTest {
|
|||
request.setProjectId("songtianyang-fix-wx");
|
||||
request.setSelectIds(Arrays.asList("wx_test_plan_id_1"));
|
||||
request.setAppend(false);
|
||||
request.setClear(false);
|
||||
request.setTags(Arrays.asList("tag3", "tag4"));
|
||||
this.requestPostWithOk(URL_TEST_PLAN_BATCH_EDIT, request);
|
||||
//检查标签是否覆盖
|
||||
|
@ -2393,6 +2394,7 @@ public class TestPlanTests extends BaseTest {
|
|||
Assertions.assertTrue(testPlan.getTags().contains("tag4"));
|
||||
|
||||
request.setAppend(true);
|
||||
request.setClear(false);
|
||||
request.setTags(Arrays.asList("tag1", "tag2"));
|
||||
this.requestPostWithOk(URL_TEST_PLAN_BATCH_EDIT, request);
|
||||
testPlan = testPlanMapper.selectByPrimaryKey("wx_test_plan_id_1");
|
||||
|
@ -2417,6 +2419,12 @@ public class TestPlanTests extends BaseTest {
|
|||
Assertions.assertTrue(testPlan.getTags().contains("tag8"));
|
||||
Assertions.assertTrue(testPlan.getTags().contains("tag9"));
|
||||
Assertions.assertTrue(testPlan.getTags().contains("tag0"));
|
||||
request.setAppend(false);
|
||||
request.setClear(true);
|
||||
request.setSelectAll(true);
|
||||
this.requestPostWithOkAndReturn(URL_TEST_PLAN_BATCH_EDIT, request);
|
||||
testPlan = testPlanMapper.selectByPrimaryKey("wx_test_plan_id_1");
|
||||
Assertions.assertTrue(CollectionUtils.isEmpty(testPlan.getTags()));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue