From bcd3856e7fd657ae58a45569450a76851e4e899c Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 17 Dec 2024 10:53:59 +0800 Subject: [PATCH] * [task#134153,done,1h] change version if title/precondition/files is changed. --- module/file/model.php | 1 + module/testcase/control.php | 3 +++ module/testcase/model.php | 2 +- module/testcase/tao.php | 4 ++-- module/testcase/zen.php | 13 ++++++++++--- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/module/file/model.php b/module/file/model.php index 24d78f27bc..11bf6de9f2 100755 --- a/module/file/model.php +++ b/module/file/model.php @@ -1415,6 +1415,7 @@ class fileModel extends model $this->updateObjectID($this->post->uid, $oldObject->id, $objectType); $addedFiles = $this->saveUpload($objectType, $oldObject->id, $extra, $filesName, $labelsName); + if(!isset($oldObject->files)) $oldObject->files = array(); $files = array_diff(array_keys($oldObject->files), array_keys($deleteFiles)); $files = array_merge($files, array_keys($addedFiles)); diff --git a/module/testcase/control.php b/module/testcase/control.php index ac905a1986..e6161cae6f 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -561,8 +561,11 @@ class testcase extends control /* 更新用例。 */ /* Update cases. */ + $caseFiles = $this->testcase->getRelatedFiles($caseIdList); foreach($editedCases as $caseID => $case) { + if(!isset($case->files)) $case->files = zget($caseFiles, $caseID, array()); + if(!isset($cases[$caseID]->files)) $cases[$caseID]->files = zget($caseFiles, $caseID, array()); $changes = $this->testcase->update($case, $cases[$caseID], zget($testtasks, $caseID, array())); $this->executeHooks($caseID); diff --git a/module/testcase/model.php b/module/testcase/model.php index 256c0d7ec7..74986f78ea 100755 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -248,7 +248,7 @@ class testcaseModel extends model { if(!$caseIdList) return array(); - return $this->dao->select('*')->from(TABLE_CASE) + return $this->dao->select('*,precondition')->from(TABLE_CASE) ->where('deleted')->eq(0) ->andWhere('id')->in($caseIdList) ->beginIF($query)->andWhere($query)->fi() diff --git a/module/testcase/tao.php b/module/testcase/tao.php index 0bc6d27a3f..c4e7bf3f3e 100644 --- a/module/testcase/tao.php +++ b/module/testcase/tao.php @@ -336,7 +336,7 @@ class testcaseTao extends testcaseModel */ protected function getRelatedFiles(array $caseIdList): array { - return $this->dao->select('*')->from(TABLE_FILE)->where('objectType')->eq('testcase')->andWhere('objectID')->in($caseIdList)->andWhere('extra')->ne('editor')->fetchGroup('objectID'); + return $this->dao->select('*')->from(TABLE_FILE)->where('objectType')->eq('testcase')->andWhere('objectID')->in($caseIdList)->andWhere('extra')->ne('editor')->fetchGroup('objectID', 'id'); } /** @@ -398,7 +398,7 @@ class testcaseTao extends testcaseModel $requiredFields = $this->config->testcase->edit->requiredFields; if(!empty($case->lib)) $requiredFields = str_replace(',story,', ',', ",$requiredFields,"); - $this->dao->update(TABLE_CASE)->data($case, 'deleteFiles,uid,stepChanged,comment,steps,expects,stepType,linkBug,renameFiles') + $this->dao->update(TABLE_CASE)->data($case, 'deleteFiles,uid,stepChanged,comment,steps,expects,stepType,linkBug,renameFiles,files') ->autoCheck() ->batchCheck($requiredFields, 'notempty') ->checkFlow() diff --git a/module/testcase/zen.php b/module/testcase/zen.php index f0bcf665ed..92c20bafdb 100755 --- a/module/testcase/zen.php +++ b/module/testcase/zen.php @@ -1496,9 +1496,9 @@ class testcaseZen extends testcase $caseIdList = array_keys($oldCases); if(empty($caseIdList)) return array(); - $now = helper::now(); - $account = $this->app->user->account; - $cases = form::batchData($this->config->testcase->form->batchEdit)->get(); + $now = helper::now(); + $account = $this->app->user->account; + $cases = form::batchData($this->config->testcase->form->batchEdit)->get(); foreach($cases as $caseID => $case) { $oldCase = $oldCases[$caseID]; @@ -1506,6 +1506,12 @@ class testcaseZen extends testcase $case->product = $oldCase->product; $case->lastEditedBy = $account; $case->lastEditedDate = $now; + if(!isset($case->precondition)) $case->precondition = $oldCase->precondition; + + $versionChanged = false; + if($case->title && $case->title != $oldCase->title) $versionChanged = true; + if($case->precondition && $case->precondition != $oldCase->precondition) $versionChanged = true; + if($versionChanged) $case->version = $oldCase->version + 1; } return $cases; } @@ -3202,6 +3208,7 @@ class testcaseZen extends testcase if($this->post->title && $case->title != $this->post->title) $stepChanged = true; if($this->post->precondition && $case->precondition != $this->post->precondition) $stepChanged = true; + if(!empty($_FILES['files']['name'][0])) $stepChanged = true; return array($stepChanged, $status); }