Merge branch 'master' into 20.x

This commit is contained in:
Yagami
2020-08-26 16:10:36 +08:00
701 changed files with 33172 additions and 3307 deletions
+71 -30
View File
@@ -81,7 +81,7 @@ class testcaseModel extends model
if($importPriv)
{
$link = helper::createLink('testcase', 'import', "productID=$productID&branch=$branch");
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->importFile, '', "class='export'") . '</li>';
$pageActions .= '<li>' . html::a($link, $this->lang->testcase->fileImport, '', "class='export'") . '</li>';
}
if($importFromLibPriv)
{
@@ -267,12 +267,13 @@ class testcaseModel extends model
$type = $cases->type[$i] == 'ditto' ? $type : $cases->type[$i];
$pri = $cases->pri[$i] == 'ditto' ? $pri : $cases->pri[$i];
$cases->module[$i] = (int)$module;
$cases->story[$i] = (int)$story;
$cases->story[$i] = !empty($storyID) ? $storyID : (int)$story;
$cases->type[$i] = $type;
$cases->pri[$i] = $pri;
}
$this->loadModel('story');
$extendFields = $this->getFlowExtendFields();
$storyVersions = array();
$forceNotReview = $this->forceNotReview();
$data = array();
@@ -287,7 +288,7 @@ class testcaseModel extends model
$data[$i]->type = $cases->type[$i];
$data[$i]->pri = $cases->pri[$i];
$data[$i]->stage = empty($cases->stage[$i]) ? '' : implode(',', $cases->stage[$i]);
$data[$i]->story = $storyID ? $storyID : $cases->story[$i];
$data[$i]->story = $cases->story[$i];
$data[$i]->color = $cases->color[$i];
$data[$i]->title = $cases->title[$i];
$data[$i]->precondition = $cases->precondition[$i];
@@ -305,6 +306,13 @@ class testcaseModel extends model
$storyVersions[$caseStory] = $data[$i]->storyVersion;
}
foreach($extendFields as $extendField)
{
$data[$i]->{$extendField->field} = htmlspecialchars($this->post->{$extendField->field}[$i]);
$message = $this->checkFlowRule($extendField, $data[$i]->{$extendField->field});
if($message) die(js::alert($message));
}
foreach(explode(',', $this->config->testcase->create->requiredFields) as $field)
{
$field = trim($field);
@@ -325,7 +333,10 @@ class testcaseModel extends model
die(js::reload('parent'));
}
$caseID = $this->dao->lastInsertID();
$caseID = $this->dao->lastInsertID();
$this->executeHooks($caseID);
$this->loadModel('score')->create('testcase', 'create', $caseID);
$actionID = $this->loadModel('action')->create('case', $caseID, 'Opened');
}
@@ -841,15 +852,16 @@ class testcaseModel extends model
}
/* Initialize cases from the post data.*/
$extendFields = $this->getFlowExtendFields();
foreach($caseIDList as $caseID)
{
$case = new stdclass();
$case->lastEditedBy = $this->app->user->account;
$case->lastEditedDate = $now;
$case->pri = $data->pris[$caseID];
$case->status = $data->statuses[$caseID];
$case->branch = $data->branches[$caseID];
$case->module = $data->modules[$caseID];
$case->status = $data->statuses[$caseID];
$case->story = $data->stories[$caseID];
$case->color = $data->color[$caseID];
$case->title = $data->title[$caseID];
@@ -858,6 +870,13 @@ class testcaseModel extends model
$case->type = $data->types[$caseID];
$case->stage = empty($data->stages[$caseID]) ? '' : implode(',', $data->stages[$caseID]);
foreach($extendFields as $extendField)
{
$case->{$extendField->field} = htmlspecialchars($this->post->{$extendField->field}[$caseID]);
$message = $this->checkFlowRule($extendField, $case->{$extendField->field});
if($message) die(js::alert($message));
}
$cases[$caseID] = $case;
unset($case);
}
@@ -874,6 +893,8 @@ class testcaseModel extends model
if(!dao::isError())
{
$this->executeHooks($caseID);
unset($oldCase->steps);
$allChanges[$caseID] = common::createChanges($oldCase, $case);
}
@@ -1103,7 +1124,8 @@ class testcaseModel extends model
foreach(explode(',', $this->config->testcase->appendFields) as $appendField)
{
if(empty($appendField)) continue;
$caseData->$appendField = $_POST[$appendField][$key];
$caseData->$appendField = zget($_POST[$appendField], $key, '');
if(is_array($caseData->$appendField)) $caseData->$appendField = join(',', $caseData->$appendField);
}
}
@@ -1125,7 +1147,6 @@ class testcaseModel extends model
if($caseID)
{
$stepChanged = false;
$steps = array();
$oldStep = isset($oldSteps[$caseID]) ? $oldSteps[$caseID] : array();
$oldCase = $oldCases[$caseID];
@@ -1139,8 +1160,8 @@ class testcaseModel extends model
if(empty($desc)) continue;
$step = new stdclass();
$step->type = $data->stepType[$key][$id];
$step->desc = htmlspecialchars($desc);
$step->expect = htmlspecialchars(trim($this->post->expect[$key][$id]));
$step->desc = htmlspecialchars($desc);
$step->expect = htmlspecialchars(trim($this->post->expect[$key][$id]));
$steps[] = $step;
}
@@ -1188,8 +1209,8 @@ class testcaseModel extends model
$stepData->parent = ($stepData->type == 'item') ? $parentStepID : 0;
$stepData->case = $caseID;
$stepData->version = $version;
$stepData->desc = htmlspecialchars($step['desc']);
$stepData->expect = htmlspecialchars($step['expect']);
$stepData->desc = $step['desc'];
$stepData->expect = $step['expect'];
$this->dao->insert(TABLE_CASESTEP)->data($stepData)->autoCheck()->exec();
if($stepData->type == 'group') $parentStepID = $this->dao->lastInsertID();
if($stepData->type == 'step') $parentStepID = 0;
@@ -1216,20 +1237,23 @@ class testcaseModel extends model
{
$caseID = $this->dao->lastInsertID();
$parentStepID = 0;
foreach($this->post->desc[$key] as $id => $desc)
if($this->post->desc)
{
$desc = trim($desc);
if(empty($desc)) continue;
$stepData = new stdclass();
$stepData->type = ($data->stepType[$key][$id] == 'item' and $parentStepID == 0) ? 'step' : $data->stepType[$key][$id];
$stepData->parent = ($stepData->type == 'item') ? $parentStepID : 0;
$stepData->case = $caseID;
$stepData->version = 1;
$stepData->desc = htmlspecialchars($desc);
$stepData->expect = htmlspecialchars($this->post->expect[$key][$id]);
$this->dao->insert(TABLE_CASESTEP)->data($stepData)->autoCheck()->exec();
if($stepData->type == 'group') $parentStepID = $this->dao->lastInsertID();
if($stepData->type == 'step') $parentStepID = 0;
foreach($this->post->desc[$key] as $id => $desc)
{
$desc = trim($desc);
if(empty($desc)) continue;
$stepData = new stdclass();
$stepData->type = ($data->stepType[$key][$id] == 'item' and $parentStepID == 0) ? 'step' : $data->stepType[$key][$id];
$stepData->parent = ($stepData->type == 'item') ? $parentStepID : 0;
$stepData->case = $caseID;
$stepData->version = 1;
$stepData->desc = htmlspecialchars($desc);
$stepData->expect = htmlspecialchars($this->post->expect[$key][$id]);
$this->dao->insert(TABLE_CASESTEP)->data($stepData)->autoCheck()->exec();
if($stepData->type == 'group') $parentStepID = $this->dao->lastInsertID();
if($stepData->type == 'step') $parentStepID = 0;
}
}
$this->action->create('case', $caseID, 'Opened');
}
@@ -1238,8 +1262,8 @@ class testcaseModel extends model
if($this->post->isEndPage)
{
unlink($this->session->importFile);
unset($_SESSION['importFile']);
unlink($this->session->fileImport);
unset($_SESSION['fileImport']);
}
}
@@ -1369,6 +1393,15 @@ class testcaseModel extends model
*/
public function printCell($col, $case, $users, $branches, $modulePairs = array(), $browseType = '', $mode = 'datatable')
{
$canBatchRun = common::hasPriv('testtask', 'batchRun');
$canBatchEdit = common::hasPriv('testcase', 'batchEdit');
$canBatchDelete = common::hasPriv('testcase', 'batchDelete');
$canBatchCaseTypeChange = common::hasPriv('testcase', 'batchCaseTypeChange');
$canBatchConfirmStoryChange = common::hasPriv('testcase', 'batchConfirmStoryChange');
$canBatchChangeModule = common::hasPriv('testcase', 'batchChangeModule');
$canBatchAction = ($canBatchRun or $canBatchEdit or $canBatchDelete or $canBatchCaseTypeChange or $canBatchConfirmStoryChange or $canBatchChangeModule);
$canView = common::hasPriv('testcase', 'view');
$caseLink = helper::createLink('testcase', 'view', "caseID=$case->id&version=$case->version");
$account = $this->app->user->account;
@@ -1397,7 +1430,14 @@ class testcaseModel extends model
switch($id)
{
case 'id':
echo html::checkbox('caseIDList', array($case->id => '')) . html::a(helper::createLink('testcase', 'view', "caseID=$case->id"), sprintf('%03d', $case->id));
if($canBatchAction)
{
echo html::checkbox('caseIDList', array($case->id => '')) . html::a(helper::createLink('testcase', 'view', "caseID=$case->id"), sprintf('%03d', $case->id));
}
else
{
printf('%03d', $case->id);
}
break;
case 'pri':
echo "<span class='label-pri label-pri-" . $case->pri . "' title='" . zget($this->lang->testcase->priList, $case->pri, $case->pri) . "'>";
@@ -1582,7 +1622,7 @@ class testcaseModel extends model
if(!isset($this->config->testcase->forceReview)) return true;
if(strpos(",{$this->config->testcase->forceReview},", ",{$this->app->user->account},") === false) return true;
}
if($this->config->testcase->needReview && strpos(",{$this->config->testcase->forceNotReview},", ",{$this->app->user->account},") !== false) return true;
if($this->config->testcase->needReview && isset($this->config->testcase->forceNotReview) && strpos(",{$this->config->testcase->forceNotReview},", ",{$this->app->user->account},") !== false) return true;
return false;
}
@@ -1643,8 +1683,9 @@ class testcaseModel extends model
$data = fixer::input('post')->get();
foreach($data->steps as $key => $desc)
{
$desc = trim($desc);
if(!empty($desc)) $steps[] = array('desc' => $desc, 'type' => $data->stepType[$key], 'expect' => trim($data->expects[$key]));
$desc = trim($desc);
$stepType = isset($data->stepType[$key]) ? $data->stepType[$key] : 'step';
if(!empty($desc)) $steps[] = array('desc' => $desc, 'type' => $stepType, 'expect' => trim($data->expects[$key]));
}
/* If step count changed, case changed. */