From db3d08efbd181e353e1b67ab6aefef655a165448 Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Fri, 19 Mar 2021 09:47:41 +0800 Subject: [PATCH 01/26] chore: sync --- backend/src/main/java/io/metersphere/xpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index efd6af73b7..adefde265f 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit efd6af73b7c5cc53cd4515772000bc1436c49837 +Subproject commit adefde265ff12d4ea909353c3f46008f8a8e17e7 From fb08b185b78861dbde2aee93e53e423974c9eae9 Mon Sep 17 00:00:00 2001 From: Coooder-X <55648333+Coooder-X@users.noreply.github.com> Date: Fri, 19 Mar 2021 10:11:29 +0800 Subject: [PATCH 02/26] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89)?= =?UTF-8?q?:=20=E5=88=A0=E9=99=A4=E7=94=A8=E4=BE=8B=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E7=9A=84=E6=98=AF=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E6=94=B9=E6=88=90=E7=94=A8=E4=BE=8B=20(#1664)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(测试跟踪): 测试用例下载模版增加标签列 * fix(接口定义): 扩大请求头键长度 * fix: schedule表对旧数据name字段兼容的补充 * fix(接口定义): 删除用例提示的是删除接口,改成用例 --- .../components/api/definition/components/case/ApiCaseItem.vue | 3 +-- frontend/src/i18n/en-US.js | 1 + frontend/src/i18n/zh-CN.js | 1 + frontend/src/i18n/zh-TW.js | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue index f39fce3b76..b1743f0720 100644 --- a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue +++ b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue @@ -194,7 +194,7 @@ this.$emit('batchEditCase'); }, deleteCase(index, row) { - this.$alert(this.$t('api_test.definition.request.delete_confirm') + ' ' + row.name + " ?", '', { + this.$alert(this.$t('api_test.definition.request.delete_case_confirm') + ' ' + row.name + " ?", '', { confirmButtonText: this.$t('commons.confirm'), callback: (action) => { if (action === 'confirm') { @@ -317,7 +317,6 @@ } else { this.saveCase(row); } - }, showInput(row) { // row.type = "create"; diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index 86cff09907..af75fd4080 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -624,6 +624,7 @@ export default { res_param: "Response content", batch_delete: "Batch deletion", delete_confirm: "Confirm deletion", + delete_case_confirm: "Confirm case deletion", delete_confirm_step: "Confirm deletion step", assertions_rule: "Assertion rule", response_header: "Response header", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index e4d609b0af..75775fe6e4 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -625,6 +625,7 @@ export default { res_param: "响应内容", batch_delete: "批量删除", delete_confirm: "确认删除接口", + delete_case_confirm: "确认删除用例", delete_confirm_step: "确认删除步骤", assertions_rule: "断言规则", response_header: "响应头", diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index c28d257f3d..8057211e0b 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -624,6 +624,7 @@ export default { res_param: "響應內容", batch_delete: "批量刪除", delete_confirm: "確認刪除接口", + delete_case_confirm: "確認刪除用例", delete_confirm_step: "確認刪除步驟", assertions_rule: "斷言規則", response_header: "響應頭", From 553a25881c9796ae030c176af1441dd44bb17788 Mon Sep 17 00:00:00 2001 From: Coooder-X <55648333+Coooder-X@users.noreply.github.com> Date: Fri, 19 Mar 2021 10:11:46 +0800 Subject: [PATCH 03/26] =?UTF-8?q?fix(=E6=8E=A5=E5=8F=A3=E5=AE=9A=E4=B9=89)?= =?UTF-8?q?:=20=E8=BE=93=E5=85=A5=E7=94=A8=E4=BE=8B=E5=90=8D=E7=A7=B0?= =?UTF-8?q?=EF=BC=8C=E8=AE=A9=E9=BC=A0=E6=A0=87=E7=A7=BB=E5=BC=80=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E8=87=AA=E5=8A=A8=E4=BF=9D=E5=AD=98=20=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E6=8A=98=E5=8F=A0=E9=A1=B5=E9=9D=A2=E4=B9=9F=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E5=BC=B9=E5=87=BA=E6=8F=90=E7=A4=BA=20(#1665)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(测试跟踪): 测试用例下载模版增加标签列 * fix(接口定义): 扩大请求头键长度 * fix: schedule表对旧数据name字段兼容的补充 * fix(接口定义): 输入用例名称,让鼠标移开后台自动保存 不用折叠页面也不用弹出提示 --- .../components/api/definition/components/case/ApiCaseItem.vue | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue index b1743f0720..af20e63c9b 100644 --- a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue +++ b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue @@ -305,10 +305,6 @@ row.id = data.id; row.createTime = data.createTime; row.updateTime = data.updateTime; - if (!row.message) { - this.$success(this.$t('commons.save_success')); - this.$emit('refresh'); - } }); }, saveTestCase(row) { From 937d33e955b569162f72eb63e91a3ee11ef5d176 Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Fri, 19 Mar 2021 10:28:52 +0800 Subject: [PATCH 04/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E9=A6=96=E9=A1=B5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/track/home/components/CaseCountCard.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/business/components/track/home/components/CaseCountCard.vue b/frontend/src/business/components/track/home/components/CaseCountCard.vue index fe96b3d429..fcac031ba3 100644 --- a/frontend/src/business/components/track/home/components/CaseCountCard.vue +++ b/frontend/src/business/components/track/home/components/CaseCountCard.vue @@ -94,8 +94,8 @@ 未通过 {{"\xa0\xa0"}} - - {{trackCountData.passCount}} + + {{trackCountData.unPassCount}} @@ -103,8 +103,8 @@ 已通过 {{"\xa0\xa0"}} - - {{trackCountData.unPassCount}} + + {{trackCountData.passCount}} From fadc55470703993805fcca184e87d0c803eff0b3 Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Fri, 19 Mar 2021 10:30:30 +0800 Subject: [PATCH 05/26] =?UTF-8?q?refactor(=E6=80=A7=E8=83=BD=E6=B5=8B?= =?UTF-8?q?=E8=AF=95):=20k8s=20job=E8=AE=BE=E7=BD=AE=E5=8F=8D=E4=BA=B2?= =?UTF-8?q?=E5=92=8C=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/main/java/io/metersphere/xpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index adefde265f..3623e15de5 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit adefde265ff12d4ea909353c3f46008f8a8e17e7 +Subproject commit 3623e15de5cfc9837a46850ff462f9c9194e9892 From 04bf8111f5fed822837b3823fa8e9a32bdd0cc4a Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Fri, 19 Mar 2021 10:47:44 +0800 Subject: [PATCH 06/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E6=8A=A5=E5=91=8A=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E6=89=80=E5=B1=9E=E9=A1=B9=E7=9B=AE=E6=98=BE=E7=A4=BA=E9=94=99?= =?UTF-8?q?=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/metersphere/track/service/TestPlanService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index 1b1a647ea8..bc850fe47d 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -551,8 +551,8 @@ public class TestPlanService { queryTestPlanRequest.setId(planId); TestPlanDTO testPlan = extTestPlanMapper.list(queryTestPlanRequest).get(0); - String projectName = getProjectNameByPlanId(planId); - testPlan.setProjectName(projectName); + Project project = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + testPlan.setProjectName(project.getName()); TestCaseReport testCaseReport = testCaseReportMapper.selectByPrimaryKey(testPlan.getReportId()); JSONObject content = JSONObject.parseObject(testCaseReport.getContent()); @@ -708,8 +708,8 @@ public class TestPlanService { queryTestPlanRequest.setId(planId); TestPlanDTO testPlan = extTestPlanMapper.list(queryTestPlanRequest).get(0); - String projectName = getProjectNameByPlanId(planId); - testPlan.setProjectName(projectName); + Project project = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + testPlan.setProjectName(project.getName()); TestCaseReport testCaseReport = testCaseReportMapper.selectByPrimaryKey(testPlan.getReportId()); JSONObject content = JSONObject.parseObject(testCaseReport.getContent()); From 8812a17cdb2672b24d9de5433b0ef1ae3366f40d Mon Sep 17 00:00:00 2001 From: "Captain.B" Date: Fri, 19 Mar 2021 11:03:43 +0800 Subject: [PATCH 07/26] chore: sync --- backend/src/main/java/io/metersphere/xpack | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index 3623e15de5..245845e07b 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit 3623e15de5cfc9837a46850ff462f9c9194e9892 +Subproject commit 245845e07bf3fe2f60311eeb78f8f109301a2d39 From cd8c7a9124a6798618d0836202b586905045efae Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Fri, 19 Mar 2021 11:05:30 +0800 Subject: [PATCH 08/26] =?UTF-8?q?refactor:=20=E5=85=B3=E8=81=94=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=A1=B9=E7=9B=AE=E9=BB=98=E8=AE=A4=E4=B8=BA=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../track/plan/components/TestPlanList.vue | 2 -- .../view/comonents/base/TestCaseRelevanceBase.vue | 14 +++++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/frontend/src/business/components/track/plan/components/TestPlanList.vue b/frontend/src/business/components/track/plan/components/TestPlanList.vue index eae5fdf3bc..2447032590 100644 --- a/frontend/src/business/components/track/plan/components/TestPlanList.vue +++ b/frontend/src/business/components/track/plan/components/TestPlanList.vue @@ -310,8 +310,6 @@ export default { } item.passRate=item.passRate+'%' }) - console.log(this.tableData) - }); }, copyData(status) { diff --git a/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue b/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue index 21d51de87e..c3c1a9dd0b 100644 --- a/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue +++ b/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue @@ -34,6 +34,7 @@ import MsDialogFooter from '../../../../../common/components/MsDialogFooter' import SelectMenu from "../../../../common/SelectMenu"; import RelevanceDialog from "./RelevanceDialog"; + import {getCurrentProjectID} from "@/common/js/utils"; export default { name: "TestCaseRelevanceBase", @@ -93,10 +94,17 @@ this.result = this.$get("/project/listAll", res => { let data = res.data; if (data) { + const index = data.findIndex(d => d.id === getCurrentProjectID()); this.projects = data; - this.projectId = data[0].id; - this.projectName = data[0].name; - this.changeProject(data[0]); + if (index !== -1) { + this.projectId = data[index].id; + this.projectName = data[index].name; + this.changeProject(data[index]); + } else { + this.projectId = data[0].id; + this.projectName = data[0].name; + this.changeProject(data[0]); + } } }) }, From 17453e926890c7bc3d44dba0f494cc92c3021b9e Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Fri, 19 Mar 2021 11:31:01 +0800 Subject: [PATCH 09/26] =?UTF-8?q?fix(=E7=94=A8=E4=BE=8B=E8=AF=84=E5=AE=A1)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E8=AF=84=E5=AE=A1=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E7=AD=9B=E9=80=89=E6=97=A0=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml index a520d29d33..2e56a206ce 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml @@ -161,12 +161,12 @@ #{value} - - and test_case_review_test_case.status in + + and test_case.review_status in #{value} - + From 87334f4b5eafc6392132c79ab410f5e69ddb93d5 Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Fri, 19 Mar 2021 12:00:36 +0800 Subject: [PATCH 10/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92)?= =?UTF-8?q?:=20=E6=9F=A5=E8=AF=A2=E7=BC=BA=E9=99=B7=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=E6=8D=95=E8=8E=B7=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../functional/FunctionalTestCaseEdit.vue | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue b/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue index cfa3aa69c9..c4d3b1f1e5 100644 --- a/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue @@ -591,17 +591,23 @@ export default { const project = res.data; if (project.tapdId) { this.hasTapdId = true; - this.result = this.$get("/issues/tapd/user/" + this.testCase.caseId, response => { - this.users = response.data; + this.result = this.$get("/issues/tapd/user/" + this.testCase.caseId).then(response => { + this.users = response.data.data; + }).catch(() => { + console.log("get tapd user error."); }) } if (project.zentaoId) { this.hasZentaoId = true; - this.result = this.$get("/issues/zentao/builds/" + this.testCase.caseId, response => { - this.Builds = response.data; + this.result = this.$get("/issues/zentao/builds/" + this.testCase.caseId).then(response => { + this.Builds = response.data.data; + }).catch(() => { + console.log("get zentao builds error."); }) - this.result = this.$get("/issues/zentao/user/" + this.testCase.caseId, response => { - this.zentaoUsers = response.data; + this.result = this.$get("/issues/zentao/user/" + this.testCase.caseId).then(response => { + this.zentaoUsers = response.data.data; + }).catch(() => { + console.log("get zentao user error."); }) } }) @@ -649,8 +655,10 @@ export default { this.testCase.zentaoAssigned = ""; }, getIssues(caseId) { - this.result = this.$get("/issues/get/" + caseId, response => { - this.issues = response.data; + this.result = this.$get("/issues/get/" + caseId).then(response => { + this.issues = response.data.data; + }).catch(() => { + console.log("get issues error") }) }, closeIssue(row) { From 07ecb9702268dcf1eeb95d2a57b751838ab81fde Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Fri, 19 Mar 2021 13:44:46 +0800 Subject: [PATCH 11/26] =?UTF-8?q?refactor:=20=E8=84=91=E5=9B=BE=E5=85=A8?= =?UTF-8?q?=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/components/MsDrawer.vue | 27 ++++++------ .../common/components/MsFullScreenButton.vue | 37 +++++++++++++++++ .../common/components/MsModuleMinder.vue | 41 ++++++++++++++++--- .../track/plan/components/TestPlanList.vue | 2 - 4 files changed, 86 insertions(+), 21 deletions(-) create mode 100644 frontend/src/business/components/common/components/MsFullScreenButton.vue diff --git a/frontend/src/business/components/common/components/MsDrawer.vue b/frontend/src/business/components/common/components/MsDrawer.vue index fa675d267f..472c8007ad 100644 --- a/frontend/src/business/components/common/components/MsDrawer.vue +++ b/frontend/src/business/components/common/components/MsDrawer.vue @@ -8,8 +8,7 @@
- - +
@@ -23,9 +22,10 @@ import MsRight2LeftDragBar from "./dragbar/MsRight2LeftDragBar"; import MsLeft2RightDragBar from "./dragbar/MsLeft2RightDragBar"; import MsBottom2TopDragBar from "./dragbar/MsBottom2TopDragBar"; + import MsFullScreenButton from "@/business/components/common/components/MsFullScreenButton"; export default { name: "MsDrawer", - components: {MsBottom2TopDragBar, MsLeft2RightDragBar, MsRight2LeftDragBar}, + components: {MsFullScreenButton, MsBottom2TopDragBar, MsLeft2RightDragBar, MsRight2LeftDragBar}, data() { return { x: 0, @@ -74,6 +74,15 @@ mounted() { this.init(); }, + watch: { + isFullScreen() { + if (this.isFullScreen) { + this.fullScreen() + } else { + this.unFullScreen(); + } + } + }, methods: { init() { // todo 其他方向待优化 @@ -123,12 +132,10 @@ this.originalH = this.h; this.w = document.body.clientWidth; this.h = document.body.clientHeight; - this.isFullScreen = true; }, unFullScreen() { this.w = this.originalW; this.h = this.originalH; - this.isFullScreen = false; }, close() { this.$emit('close') @@ -206,18 +213,10 @@ color: red; } - .alt-ico { + /deep/ .alt-ico { position: absolute; - font-size: 15px; right: 40px; top: 15px; - color: #8c939d; } - .alt-ico:hover { - color: black; - font-size: 18px; - } - - diff --git a/frontend/src/business/components/common/components/MsFullScreenButton.vue b/frontend/src/business/components/common/components/MsFullScreenButton.vue new file mode 100644 index 0000000000..44ddc031cb --- /dev/null +++ b/frontend/src/business/components/common/components/MsFullScreenButton.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/frontend/src/business/components/common/components/MsModuleMinder.vue b/frontend/src/business/components/common/components/MsModuleMinder.vue index 9f879a88fc..ac8df743b5 100644 --- a/frontend/src/business/components/common/components/MsModuleMinder.vue +++ b/frontend/src/business/components/common/components/MsModuleMinder.vue @@ -1,10 +1,10 @@ - + {{ $t("project.create") }} From 78506f814f121cd9d1f774d02a40b8f56a11bf6c Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Sat, 20 Mar 2021 10:44:30 +0800 Subject: [PATCH 23/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E6=9F=90=E4=BA=9B=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E6=9C=AA=E5=AF=BC=E5=87=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/domain/TestCaseExcelData.java | 4 +-- .../excel/domain/TestCaseExcelDataCn.java | 8 ++--- .../excel/domain/TestCaseExcelDataTw.java | 8 ++--- .../excel/domain/TestCaseExcelDataUs.java | 8 ++--- .../excel/listener/TestCaseDataListener.java | 6 ++-- .../track/service/TestCaseService.java | 36 ++++++++++--------- .../db/migration/V78__v1.8_release.sql | 4 ++- 7 files changed, 40 insertions(+), 34 deletions(-) diff --git a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelData.java b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelData.java index 8c344e6e3f..161486e0fc 100644 --- a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelData.java +++ b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelData.java @@ -20,8 +20,8 @@ public class TestCaseExcelData { private String priority; @ExcelIgnore private String tags; - @ExcelIgnore - private String method; +// @ExcelIgnore +// private String method; @ExcelIgnore private String prerequisite; @ExcelIgnore diff --git a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataCn.java b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataCn.java index 847dcd845e..218a59e01e 100644 --- a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataCn.java +++ b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataCn.java @@ -45,10 +45,10 @@ public class TestCaseExcelDataCn extends TestCaseExcelData { @Length(min = 0, max = 1000) private String tags; - @NotBlank(message = "{cannot_be_null}") - @ExcelProperty("测试方式") - @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") - private String method; +// @NotBlank(message = "{cannot_be_null}") +// @ExcelProperty("测试方式") +// @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") +// private String method; @ColumnWidth(50) @ExcelProperty("前置条件") diff --git a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataTw.java b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataTw.java index 4137f4e76c..d60c24fa2a 100644 --- a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataTw.java +++ b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataTw.java @@ -45,10 +45,10 @@ public class TestCaseExcelDataTw extends TestCaseExcelData { @Length(min = 0, max = 1000) private String tags; - @NotBlank(message = "{cannot_be_null}") - @ExcelProperty("測試方式") - @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") - private String method; +// @NotBlank(message = "{cannot_be_null}") +// @ExcelProperty("測試方式") +// @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") +// private String method; @ColumnWidth(50) @ExcelProperty("前置條件") diff --git a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataUs.java b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataUs.java index 1795d0545a..6916c3a5ec 100644 --- a/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataUs.java +++ b/backend/src/main/java/io/metersphere/excel/domain/TestCaseExcelDataUs.java @@ -46,10 +46,10 @@ public class TestCaseExcelDataUs extends TestCaseExcelData { @Length(min = 0, max = 1000) private String tags; - @NotBlank(message = "{cannot_be_null}") - @ExcelProperty("Method") - @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") - private String method; +// @NotBlank(message = "{cannot_be_null}") +// @ExcelProperty("Method") +// @Pattern(regexp = "(^manual$)|(^auto$)", message = "{test_case_method_validate}") +// private String method; @ColumnWidth(50) @ExcelProperty("Prerequisite") diff --git a/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java b/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java index 6ec7448a8f..0e5bf1d6ae 100644 --- a/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java +++ b/backend/src/main/java/io/metersphere/excel/listener/TestCaseDataListener.java @@ -53,9 +53,9 @@ public class TestCaseDataListener extends EasyExcelListener { } } - if (StringUtils.equals(data.getType(), TestCaseConstants.Type.Functional.getValue()) && StringUtils.equals(data.getMethod(), TestCaseConstants.Method.Auto.getValue())) { - stringBuilder.append(Translator.get("functional_method_tip") + "; "); - } +// if (StringUtils.equals(data.getType(), TestCaseConstants.Type.Functional.getValue()) && StringUtils.equals(data.getMethod(), TestCaseConstants.Method.Auto.getValue())) { +// stringBuilder.append(Translator.get("functional_method_tip") + "; "); +// } if (!userIds.contains(data.getMaintainer())) { stringBuilder.append(Translator.get("user_not_exists") + ":" + data.getMaintainer() + "; "); diff --git a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java index 808fda0cc8..85e342970a 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestCaseService.java @@ -131,8 +131,8 @@ public class TestCaseService { .andNodePathEqualTo(testCase.getNodePath()) .andTypeEqualTo(testCase.getType()) .andMaintainerEqualTo(testCase.getMaintainer()) - .andPriorityEqualTo(testCase.getPriority()) - .andMethodEqualTo(testCase.getMethod()); + .andPriorityEqualTo(testCase.getPriority()); +// .andMethodEqualTo(testCase.getMethod()); // if (StringUtils.isNotBlank(testCase.getNodeId())) { // criteria.andNodeIdEqualTo(testCase.getTestId()); @@ -432,7 +432,7 @@ public class TestCaseService { List list = new ArrayList<>(); StringBuilder path = new StringBuilder(""); List types = TestCaseConstants.Type.getValues(); - List methods = TestCaseConstants.Method.getValues(); +// List methods = TestCaseConstants.Method.getValues(); SessionUser user = SessionUtils.getUser(); for (int i = 1; i <= 5; i++) { TestCaseExcelData data = new TestCaseExcelData(); @@ -442,11 +442,11 @@ public class TestCaseService { data.setPriority("P" + i % 4); String type = types.get(i % 3); data.setType(type); - if (StringUtils.equals(TestCaseConstants.Type.Functional.getValue(), type)) { - data.setMethod(TestCaseConstants.Method.Manual.getValue()); - } else { - data.setMethod(methods.get(i % 2)); - } +// if (StringUtils.equals(TestCaseConstants.Type.Functional.getValue(), type)) { +// data.setMethod(TestCaseConstants.Method.Manual.getValue()); +// } else { +// data.setMethod(methods.get(i % 2)); +// } data.setPrerequisite(Translator.get("preconditions_optional")); data.setStepDesc("1. " + Translator.get("step_tip_separate") + "\n2. " + Translator.get("step_tip_order") + "\n3. " + Translator.get("step_tip_optional")); @@ -461,7 +461,7 @@ public class TestCaseService { explain.setName(Translator.get("do_not_modify_header_order")); explain.setNodePath(Translator.get("module_created_automatically")); explain.setType(Translator.get("options") + "(functional、performance、api)"); - explain.setMethod(Translator.get("options") + "(manual、auto)"); +// explain.setMethod(Translator.get("options") + "(manual、auto)"); explain.setPriority(Translator.get("options") + "(P0、P1、P2、P3)"); explain.setMaintainer(Translator.get("please_input_workspace_member")); @@ -483,7 +483,11 @@ public class TestCaseService { private List generateTestCaseExcel(TestCaseBatchRequest request) { ServiceUtils.getSelectAllIds(request, request.getCondition(), (query) -> extTestCaseMapper.selectIds(query)); - List orderList = ServiceUtils.getDefaultOrder(request.getOrders()); + QueryTestCaseRequest condition = request.getCondition(); + List orderList = new ArrayList<>(); + if (condition != null) { + orderList = ServiceUtils.getDefaultOrder(condition.getOrders()); + } OrderRequest order = new OrderRequest(); order.setName("sort"); order.setType("desc"); @@ -499,10 +503,10 @@ public class TestCaseService { data.setNodePath(t.getNodePath()); data.setPriority(t.getPriority()); data.setType(t.getType()); - data.setMethod(t.getMethod()); +// data.setMethod(t.getMethod()); data.setPrerequisite(t.getPrerequisite()); data.setTags(t.getTags()); - if (t.getMethod().equals("manual")) { + if (StringUtils.equals(t.getMethod(), "manual") || StringUtils.isBlank(t.getMethod())) { String steps = t.getSteps(); String setp = ""; setp = steps; @@ -530,19 +534,19 @@ public class TestCaseService { result.setLength(0); data.setRemark(t.getRemark()); - } else if (t.getMethod().equals("auto") && t.getType().equals("api")) { + } else if ("auto".equals(t.getMethod()) && "api".equals(t.getType())) { data.setStepDesc(""); data.setStepResult(""); - if (t.getTestId() != null && t.getTestId().equals("other")) { + if (t.getTestId() != null && "other".equals(t.getTestId())) { data.setRemark(t.getOtherTestName()); } else { data.setRemark("[" + t.getApiName() + "]" + "\n" + t.getRemark()); } - } else if (t.getMethod().equals("auto") && t.getType().equals("performance")) { + } else if ("auto".equals(t.getMethod()) && "performance".equals(t.getType())) { data.setStepDesc(""); data.setStepResult(""); - if (t.getTestId() != null && t.getTestId().equals("other")) { + if (t.getTestId() != null && "other".equals(t.getTestId())) { data.setRemark(t.getOtherTestName()); } else { data.setRemark(t.getPerformName()); diff --git a/backend/src/main/resources/db/migration/V78__v1.8_release.sql b/backend/src/main/resources/db/migration/V78__v1.8_release.sql index 9d4ff537cf..3b0558731e 100644 --- a/backend/src/main/resources/db/migration/V78__v1.8_release.sql +++ b/backend/src/main/resources/db/migration/V78__v1.8_release.sql @@ -161,4 +161,6 @@ UPDATE file_metadata JOIN (SELECT file_id, project_id SET file_metadata.project_id = temp.project_id; -- add execution_times testPlan alter table test_plan - add execution_times int null; \ No newline at end of file + add execution_times int null; + +alter table test_case modify method varchar(15) null comment 'Test case method type'; \ No newline at end of file From e740d55ac865b69c0597eab89455875f604ef4db Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Sat, 20 Mar 2021 11:02:15 +0800 Subject: [PATCH 24/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E5=85=B3=E8=81=94=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E5=88=97=E8=A1=A8=E5=B1=95=E7=A4=BA=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../track/controller/TestPlanApiCaseController.java | 4 +--- .../track/service/TestPlanApiCaseService.java | 13 ++++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/io/metersphere/track/controller/TestPlanApiCaseController.java b/backend/src/main/java/io/metersphere/track/controller/TestPlanApiCaseController.java index f3fcecf316..4865aa12b8 100644 --- a/backend/src/main/java/io/metersphere/track/controller/TestPlanApiCaseController.java +++ b/backend/src/main/java/io/metersphere/track/controller/TestPlanApiCaseController.java @@ -33,9 +33,7 @@ public class TestPlanApiCaseController { @PostMapping("/relevance/list/{goPage}/{pageSize}") public Pager> relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiTestCaseRequest request) { - Page page = PageHelper.startPage(goPage, pageSize, true); - request.setWorkspaceId(SessionUtils.getCurrentWorkspaceId()); - return PageUtils.setPageInfo(page, testPlanApiCaseService.relevanceList(request)); + return testPlanApiCaseService.relevanceList(goPage, pageSize, request); } @GetMapping("/delete/{id}") diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java index 4f5ae37971..df789f41ad 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java @@ -2,6 +2,8 @@ package io.metersphere.track.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; import io.metersphere.api.dto.definition.ApiTestCaseDTO; import io.metersphere.api.dto.definition.ApiTestCaseRequest; import io.metersphere.api.dto.definition.RunDefinitionRequest; @@ -18,7 +20,10 @@ import io.metersphere.base.domain.TestPlanApiCase; import io.metersphere.base.domain.TestPlanApiCaseExample; import io.metersphere.base.mapper.TestPlanApiCaseMapper; import io.metersphere.base.mapper.ext.ExtTestPlanApiCaseMapper; +import io.metersphere.commons.utils.PageUtils; +import io.metersphere.commons.utils.Pager; import io.metersphere.commons.utils.ServiceUtils; +import io.metersphere.commons.utils.SessionUtils; import io.metersphere.track.request.testcase.TestPlanApiCaseBatchRequest; import org.apache.jmeter.testelement.TestElement; import org.springframework.context.annotation.Lazy; @@ -61,13 +66,15 @@ public class TestPlanApiCaseService { return extTestPlanApiCaseMapper.getExecResultByPlanId(plan); } - public List relevanceList(ApiTestCaseRequest request) { + public Pager> relevanceList(int goPage, int pageSize, ApiTestCaseRequest request) { List ids = apiTestCaseService.selectIdsNotExistsInPlan(request.getProjectId(), request.getPlanId()); + Page page = PageHelper.startPage(goPage, pageSize, true); if (CollectionUtils.isEmpty(ids)) { - return new ArrayList<>(); + return PageUtils.setPageInfo(page, new ArrayList<>()); } request.setIds(ids); - return apiTestCaseService.listSimple(request); + request.setWorkspaceId(SessionUtils.getCurrentWorkspaceId()); + return PageUtils.setPageInfo(page, apiTestCaseService.listSimple(request)); } public int delete(String id) { From b92364ff6ff809d455aa5943a3af4814fb815ba7 Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Sat, 20 Mar 2021 12:06:51 +0800 Subject: [PATCH 25/26] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA)?= =?UTF-8?q?:=20=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E6=95=B0=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/mapper/ext/ExtTestCaseMapper.xml | 18 ++--- .../track/service/TrackService.java | 73 +++++++++++++++---- 2 files changed, 69 insertions(+), 22 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml index edb7e5ec9b..aeef002a4e 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestCaseMapper.xml @@ -372,20 +372,20 @@ diff --git a/backend/src/main/java/io/metersphere/track/service/TrackService.java b/backend/src/main/java/io/metersphere/track/service/TrackService.java index 3bcdf1cf79..f870907533 100644 --- a/backend/src/main/java/io/metersphere/track/service/TrackService.java +++ b/backend/src/main/java/io/metersphere/track/service/TrackService.java @@ -1,13 +1,19 @@ package io.metersphere.track.service; +import io.metersphere.api.dto.automation.ScenarioStatus; import io.metersphere.base.domain.*; import io.metersphere.base.mapper.*; import io.metersphere.base.mapper.ext.ExtTestCaseMapper; +import io.metersphere.base.mapper.ext.ExtTestPlanTestCaseMapper; +import io.metersphere.commons.constants.TestPlanTestCaseStatus; import io.metersphere.commons.utils.DateUtils; +import io.metersphere.commons.utils.MathUtils; import io.metersphere.performance.base.ChartsData; +import io.metersphere.track.dto.TestPlanDTOWithMetric; import io.metersphere.track.response.BugStatustics; import io.metersphere.track.response.TestPlanBugCount; import io.metersphere.track.response.TrackCountResult; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; @@ -28,13 +34,13 @@ public class TrackService { @Resource private TestPlanMapper testPlanMapper; @Resource - private TestPlanTestCaseMapper testPlanTestCaseMapper; + private ExtTestPlanTestCaseMapper extTestPlanTestCaseMapper; @Resource - private TestPlanLoadCaseMapper testPlanLoadCaseMapper; + private TestPlanApiCaseService testPlanApiCaseService; @Resource - private TestPlanApiCaseMapper testPlanApiCaseMapper; + private TestPlanScenarioCaseService testPlanScenarioCaseService; @Resource - private TestPlanApiScenarioMapper testPlanApiScenarioMapper; + private TestPlanLoadCaseService testPlanLoadCaseService; public List countPriority(String projectId) { return extTestCaseMapper.countPriority(projectId); @@ -132,11 +138,13 @@ public class TrackService { int planBugSize = getPlanBugSize(plan.getId()); testPlanBug.setBugSize(planBugSize); - testPlanBug.setPassRage(getPlanPassRage(plan.getId(), planCaseSize)); + double planPassRage = getPlanPassRage(plan.getId()); + testPlanBug.setPassRage(planPassRage + "%"); list.add(testPlanBug); totalBugSize += planBugSize; totalCaseSize += planCaseSize; + } bugStatustics.setList(list); @@ -156,13 +164,52 @@ public class TrackService { return extTestCaseMapper.getTestPlanBug(planId); } - private String getPlanPassRage(String planId, int totalSize) { - if (totalSize == 0) { - return "-"; - } - int passSize = extTestCaseMapper.getTestPlanPassCase(planId); - float rage = (float) passSize * 100 / totalSize; - DecimalFormat df = new DecimalFormat("0.0"); - return df.format(rage) + "%"; + private double getPlanPassRage(String planId) { + TestPlanDTOWithMetric testPlan = new TestPlanDTOWithMetric(); + testPlan.setTested(0); + testPlan.setPassed(0); + testPlan.setTotal(0); + + List functionalExecResults = extTestPlanTestCaseMapper.getExecResultByPlanId(planId); + functionalExecResults.forEach(item -> { + if (!StringUtils.equals(item, TestPlanTestCaseStatus.Prepare.name()) + && !StringUtils.equals(item, TestPlanTestCaseStatus.Underway.name())) { + testPlan.setTested(testPlan.getTested() + 1); + if (StringUtils.equals(item, TestPlanTestCaseStatus.Pass.name())) { + testPlan.setPassed(testPlan.getPassed() + 1); + } + } + }); + + List apiExecResults = testPlanApiCaseService.getExecResultByPlanId(planId); + apiExecResults.forEach(item -> { + if (StringUtils.isNotBlank(item)) { + testPlan.setTested(testPlan.getTested() + 1); + if (StringUtils.equals(item, "success")) { + testPlan.setPassed(testPlan.getPassed() + 1); + } + } + }); + + List scenarioExecResults = testPlanScenarioCaseService.getExecResultByPlanId(planId); + scenarioExecResults.forEach(item -> { + if (StringUtils.isNotBlank(item)) { + testPlan.setTested(testPlan.getTested() + 1); + if (StringUtils.equals(item, ScenarioStatus.Success.name())) { + testPlan.setPassed(testPlan.getPassed() + 1); + } + } + }); + + List loadResults = testPlanLoadCaseService.getStatus(planId); + loadResults.forEach(item -> { + if (StringUtils.isNotBlank(item)) { + testPlan.setTested(testPlan.getTested() + 1); + if (StringUtils.equals(item, "success")) { + testPlan.setPassed(testPlan.getPassed() + 1); + } + } + }); + return MathUtils.getPercentWithDecimal(testPlan.getTested() == 0 ? 0 : testPlan.getPassed() * 1.0 / testPlan.getTested()); } } From 807bdfe841b967396c509d23824447daa8ba6336 Mon Sep 17 00:00:00 2001 From: shiziyuan9527 Date: Sat, 20 Mar 2021 12:46:46 +0800 Subject: [PATCH 26/26] =?UTF-8?q?fix(=E7=B3=BB=E7=BB=9F=E8=AE=BE=E7=BD=AE)?= =?UTF-8?q?:=20=E4=B8=BB=E9=A2=98=E8=89=B2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/common/components/MsTabButton.vue | 6 +++--- .../components/track/plan/view/TestPlanView.vue | 5 ++++- .../track/review/view/TestCaseReviewView.vue | 5 ++++- frontend/src/common/css/main.css | 12 ++++++------ 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/frontend/src/business/components/common/components/MsTabButton.vue b/frontend/src/business/components/common/components/MsTabButton.vue index 45431edd4f..d3c5def1d5 100644 --- a/frontend/src/business/components/common/components/MsTabButton.vue +++ b/frontend/src/business/components/common/components/MsTabButton.vue @@ -103,16 +103,16 @@ export default { .active { border: solid 1px #6d317c; - background-color: var(--color); + background-color: var(--primary_color); color: #FFFFFF; } .case-button { - border-left: solid 1px var(--color); + border-left: solid 1px var(--primary_color); } .item{ - border: solid 1px var(--color); + border: solid 1px var(--primary_color); } diff --git a/frontend/src/business/components/track/plan/view/TestPlanView.vue b/frontend/src/business/components/track/plan/view/TestPlanView.vue index adece5b6d9..570ad8f804 100644 --- a/frontend/src/business/components/track/plan/view/TestPlanView.vue +++ b/frontend/src/business/components/track/plan/view/TestPlanView.vue @@ -10,7 +10,7 @@ @dataChange="changePlan"/>