* code for task #45676.
This commit is contained in:
@@ -203,6 +203,7 @@ CREATE TABLE IF NOT EXISTS `zt_bug` (
|
||||
`caseVersion` smallint(6) NOT NULL DEFAULT '1',
|
||||
`result` mediumint(8) unsigned NOT NULL,
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
`mr` mediumint(8) unsigned NOT NULL,
|
||||
`entry` varchar(255) NOT NULL,
|
||||
`lines` varchar(10) NOT NULL,
|
||||
`v1` varchar(40) NOT NULL,
|
||||
@@ -1250,6 +1251,12 @@ CREATE TABLE IF NOT EXISTS `zt_task` (
|
||||
`lastEditedBy` varchar(30) NOT NULL,
|
||||
`lastEditedDate` datetime NOT NULL,
|
||||
`activatedDate` date NOT NULL,
|
||||
`repo` mediumint(8) unsigned NOT NULL,
|
||||
`mr` mediumint(8) unsigned NOT NULL,
|
||||
`entry` varchar(255) NOT NULL,
|
||||
`lines` varchar(10) NOT NULL,
|
||||
`v1` varchar(40) NOT NULL,
|
||||
`v2` varchar(40) NOT NULL,
|
||||
`deleted` enum('0','1') NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `execution` (`execution`),
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<td><?php echo html::input("names[$i]", $member->name, "class='form-control' readonly");?></td>
|
||||
<td><?php echo html::select("levels[$i]", array(''=>'') + $this->lang->gitlab->accessLevels, $member->access_level, "class='form-control chosen'");?></td>
|
||||
<td>
|
||||
<?php /* 50 represents the owner role. */ ?>
|
||||
<?php if($member->access_level == '50'):?>
|
||||
<input type="text" value="" class="form-control disabled" disabled autocomplete="off" />
|
||||
<?php echo html::input("expires[$i]", $member->expires_at, "class='form-control form-date hidden'");?>
|
||||
|
||||
@@ -573,7 +573,7 @@ class mrModel extends model
|
||||
if($singleDiff->state == 'empty') continue;
|
||||
$commits = $singleDiff->commits;
|
||||
$diffs = $singleDiff->diffs;
|
||||
foreach ($diffs as $index => $diff)
|
||||
foreach($diffs as $index => $diff)
|
||||
{
|
||||
if(empty($commits[$index])) continue;
|
||||
/* Make sure every file with same commitID is unique in $lines. */
|
||||
@@ -793,11 +793,13 @@ class mrModel extends model
|
||||
*/
|
||||
public function getReview($repoID, $MRID, $revision = '')
|
||||
{
|
||||
if(empty($repoID) OR empty($MRID)) return array();
|
||||
|
||||
$reviews = array();
|
||||
$bugs = $this->dao->select('t1.*, t2.realname')->from(TABLE_BUG)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.openedBy = t2.account')
|
||||
->where('t1.repo')->eq($repoID)
|
||||
->andWhere('t1.mr')->eq($MRID)
|
||||
->where('t1.repo')->eq((int)$repoID)
|
||||
->andWhere('t1.mr')->eq((int)$MRID)
|
||||
->beginIF($revision)->andWhere('t1.v2')->eq($revision)->fi()
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->fetchAll('id');
|
||||
@@ -813,8 +815,8 @@ class mrModel extends model
|
||||
|
||||
$tasks = $this->dao->select('t1.*, t2.realname')->from(TABLE_TASK)->alias('t1')
|
||||
->leftJoin(TABLE_USER)->alias('t2')->on('t1.openedBy = t2.account')
|
||||
->where('t1.repo')->eq($repoID)
|
||||
->andWhere('t1.mr')->eq($MRID)
|
||||
->where('t1.repo')->eq((int)$repoID)
|
||||
->andWhere('t1.mr')->eq((int)$MRID)
|
||||
->beginIF($revision)->andWhere('t1.v2')->eq($revision)->fi()
|
||||
->andWhere('t1.deleted')->eq(0)
|
||||
->fetchAll('id');
|
||||
@@ -914,7 +916,7 @@ class mrModel extends model
|
||||
unset($data->commentText);
|
||||
|
||||
$this->loadModel('bug');
|
||||
foreach(explode(',', $this->config->bug->create->requiredFields) as $requiredField)
|
||||
foreach(explode(',', $this->config->bug->create->requiredFields . ',repo,mr') as $requiredField)
|
||||
{
|
||||
$requiredField = trim($requiredField);
|
||||
if(empty($requiredField)) continue;
|
||||
@@ -923,7 +925,7 @@ class mrModel extends model
|
||||
{
|
||||
$fieldName = $requiredField;
|
||||
if(isset($this->lang->bug->$requiredField)) $fieldName = $this->lang->bug->$requiredField;
|
||||
dao::$errors[] = sprintf($this->lang->error->notempty, $fieldName);
|
||||
dao::$errors[$requiredField][] = sprintf($this->lang->error->notempty, $fieldName);
|
||||
}
|
||||
}
|
||||
if(dao::isError()) return array('result' => 'fail', 'message' => dao::getError());
|
||||
@@ -992,7 +994,7 @@ class mrModel extends model
|
||||
if($task->assignedTo) $task->assignedDate = $now;
|
||||
|
||||
$this->loadModel('task');
|
||||
foreach(explode(',', $this->config->task->create->requiredFields) as $requiredField)
|
||||
foreach(explode(',', $this->config->task->create->requiredFields . ',repo,mr') as $requiredField)
|
||||
{
|
||||
$requiredField = trim($requiredField);
|
||||
if(empty($requiredField)) continue;
|
||||
@@ -1001,7 +1003,7 @@ class mrModel extends model
|
||||
{
|
||||
$fieldName = $requiredField;
|
||||
if(isset($this->lang->task->$requiredField)) $fieldName = $this->lang->task->$requiredField;
|
||||
dao::$errors[] = sprintf($this->lang->error->notempty, $fieldName);
|
||||
dao::$errors[$requiredField][] = sprintf($this->lang->error->notempty, $fieldName);
|
||||
}
|
||||
}
|
||||
if(dao::isError()) return array('result' => 'fail', 'message' => dao::getError());
|
||||
@@ -1082,10 +1084,11 @@ class mrModel extends model
|
||||
*/
|
||||
public function getLastReviewInfo($repoID)
|
||||
{
|
||||
$lastReview = new stdclass();
|
||||
$lastReview->bug = $this->dao->select('*')->from(TABLE_BUG)->where('repo')->eq($repoID)->orderby('id_desc')->fetch();
|
||||
$lastReview->task = $this->dao->select('*')->from(TABLE_TASK)->where('repo')->eq($repoID)->orderby('id_desc')->fetch();
|
||||
if(empty($repoID)) return null;
|
||||
|
||||
$lastReview = new stdclass();
|
||||
$lastReview->bug = $this->dao->select('*')->from(TABLE_BUG)->where('repo')->eq((int)$repoID)->orderby('id_desc')->fetch();
|
||||
$lastReview->task = $this->dao->select('*')->from(TABLE_TASK)->where('repo')->eq((int)$repoID)->orderby('id_desc')->fetch();
|
||||
return $lastReview;
|
||||
}
|
||||
|
||||
|
||||
@@ -735,6 +735,10 @@ class upgradeModel extends model
|
||||
$this->updateObjectBranch();
|
||||
$this->updateProjectStories();
|
||||
$this->appendExec('15_7_1');
|
||||
case '16_0_beta1':
|
||||
$this->saveLogs('Execute 16_0_beta1');
|
||||
$this->adjustPriv16_0_beta1();
|
||||
$this->appendExec('16_0_beta1');
|
||||
}
|
||||
|
||||
$this->deletePatch();
|
||||
@@ -5404,4 +5408,24 @@ class upgradeModel extends model
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjust priv 16_0_beta1.
|
||||
*
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function adjustPriv16_0_beta1()
|
||||
{
|
||||
$groups = $this->dao->select('`group`')->from(TABLE_GROUPPRIV)->where('module')->eq('mr')->andWhere('method')->eq('addBug')->fetchPairs('group', 'group');
|
||||
foreach($groups as $groupID)
|
||||
{
|
||||
$groupPriv = new stdclass();
|
||||
$groupPriv->group = $groupID;
|
||||
$groupPriv->module = 'mr';
|
||||
$groupPriv->method = 'addReview';
|
||||
$this->dao->replace(TABLE_GROUPPRIV)->data($groupPriv)->exec();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
30
test/model/mr/getdiffs.php
Normal file
30
test/model/mr/getdiffs.php
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 mrModel::getDiffs();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
使用空的MR >> return null
|
||||
使用正确的MR >> return normal
|
||||
|
||||
*/
|
||||
|
||||
$mrModel = $tester->loadModel('mr');
|
||||
|
||||
$MR = '';
|
||||
$result = $mrModel->getDiffs($MR);
|
||||
if(empty($result)) $result = 'return null';
|
||||
r($result) && p() && e('return null'); //使用空的MR
|
||||
|
||||
$MR = $tester->dao->select('*')->from(TABLE_MR)->orderBy('id_desc')->limit(1)->fetch();
|
||||
$result = $mrModel->getDiffs($MR);
|
||||
if(!empty($result))
|
||||
{
|
||||
$first = reset($result);
|
||||
if(isset($first->fileName) and is_array($first->contents)) $result = 'return normal';
|
||||
}
|
||||
r($result) && p() && e('return normal'); //使用正确的MR
|
||||
28
test/model/mr/getlastreviewinfo.php
Normal file
28
test/model/mr/getlastreviewinfo.php
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 mrModel::getLastReviewInfo();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
使用空的repoID >> return null
|
||||
使用正确的repoID >> return normal
|
||||
|
||||
*/
|
||||
|
||||
$mrModel = $tester->loadModel('mr');
|
||||
|
||||
$repoID = 0;
|
||||
|
||||
$result = $mrModel->getLastReviewInfo($repoID);
|
||||
if(empty($result)) $result = 'return null';
|
||||
r($result) && p() && e('return null'); //使用空的repoID
|
||||
|
||||
$repo = $tester->dao->select('*')->from(TABLE_REPO)->orderBy('id_desc')->limit(1)->fetch();
|
||||
$repoID = $repo->id;
|
||||
$result = $mrModel->getLastReviewInfo($repoID);
|
||||
if(isset($result->bug) and isset($result->task)) $result = 'return normal';
|
||||
r($result) && p() && e('return normal'); //使用正确的repoID
|
||||
41
test/model/mr/getreview.php
Normal file
41
test/model/mr/getreview.php
Normal file
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 mrModel::getReview();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
使用空的repoID, MRID, revision >> return null
|
||||
使用正确的repoID, MRID >> return normal
|
||||
使用正确的repoID, MRID, 错误的revision >> return null
|
||||
|
||||
*/
|
||||
|
||||
$mrModel = $tester->loadModel('mr');
|
||||
|
||||
$repoID = 0;
|
||||
$MRID = 0;
|
||||
$revision = '';
|
||||
|
||||
$result = $mrModel->getReview($repoID, $MRID, $revision);
|
||||
if(empty($result)) $result = 'return null';
|
||||
r($result) && p() && e('return null'); //使用空的repoID, MRID, revision
|
||||
|
||||
$MR = $tester->dao->select('*')->from(TABLE_MR)->orderBy('id_desc')->limit(1)->fetch();
|
||||
$repoID = $MR->repoID;
|
||||
$MRID = $MR->id;
|
||||
$result = $mrModel->getReview($repoID, $MRID, $revision);
|
||||
if(!empty($result))
|
||||
{
|
||||
$first = reset($result);
|
||||
if(isset($first['bug']) or isset($first['task'])) $result = 'return normal';
|
||||
}
|
||||
r($result) && p() && e('return normal'); //使用正确的repoID, MRID
|
||||
|
||||
$revision = '123qwe';
|
||||
$result = $mrModel->getReview($repoID, $MRID, $revision);
|
||||
if(empty($result)) $result = 'return null';
|
||||
r($result) && p() && e('return null'); //使用正确的repoID, MRID, 错误的revision
|
||||
44
test/model/mr/savebug.php
Normal file
44
test/model/mr/savebug.php
Normal file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 mrModel::saveBug();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
使用空的repoID, MRID >> return false
|
||||
使用正确的repoID, MRID。空的title。 >> return false
|
||||
使用正确的repoID, MRID。POST数据正确。 >> Test Bug Review
|
||||
|
||||
*/
|
||||
|
||||
$mrModel = $tester->loadModel('mr');
|
||||
|
||||
$MR = $tester->dao->select('*')->from(TABLE_MR)->orderBy('id_desc')->limit(1)->fetch();
|
||||
$_POST = array();
|
||||
$_POST['title'] = 'Test Bug Review';
|
||||
$_POST['commentText'] = 'Test Bug Review';
|
||||
$_POST['module'] = '1';
|
||||
$_POST['begin'] = '8';
|
||||
$_POST['end'] = '8';
|
||||
$_POST['product'] = '1';
|
||||
$_POST['assignedTo'] = '';
|
||||
|
||||
$repoID = 0;
|
||||
$MRID = 0;
|
||||
$v1 = 0;
|
||||
$v2 = '';
|
||||
$result = $mrModel->saveBug($repoID, $MRID, $v1, $v2);
|
||||
if($result['result'] == 'fail' and isset($result['message']['mr']) and isset($result['message']['repo'])) $result = 'return false';
|
||||
r($result) && p() && e('return false'); //使用空的repoID, MRID
|
||||
|
||||
$_POST['title'] = '';
|
||||
$result = $mrModel->saveBug($MR->repoID, $MR->id, $v1, $v2);
|
||||
if($result['result'] == 'fail' and isset($result['message']['title'])) $result = 'return false';
|
||||
r($result) && p() && e('return false'); //使用正确的repoID, MRID。空的title。
|
||||
|
||||
$_POST['title'] = 'Test Bug Review';
|
||||
$result = $mrModel->saveBug($MR->repoID, $MR->id, $v1, $v2);
|
||||
r($result) && p('title') && e('Test Bug Review'); //使用正确的repoID, MRID。POST数据正确。
|
||||
45
test/model/mr/savetask.php
Normal file
45
test/model/mr/savetask.php
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
|
||||
|
||||
/**
|
||||
|
||||
title=测试 mrModel::saveTask();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
使用空的repoID, MRID >> return false
|
||||
使用正确的repoID, MRID。空的title。 >> return false
|
||||
使用正确的repoID, MRID。POST数据正确。 >> Test Task Review
|
||||
|
||||
*/
|
||||
|
||||
$mrModel = $tester->loadModel('mr');
|
||||
|
||||
$MR = $tester->dao->select('*')->from(TABLE_MR)->orderBy('id_desc')->limit(1)->fetch();
|
||||
$_POST = array();
|
||||
$_POST['title'] = 'Test Task Review';
|
||||
$_POST['commentText'] = 'Test Task Review';
|
||||
$_POST['taskModule'] = '1';
|
||||
$_POST['taskExecution'] = '1';
|
||||
$_POST['begin'] = '8';
|
||||
$_POST['end'] = '8';
|
||||
$_POST['taskAssignedTo'] = '';
|
||||
$_POST['entry'] = '';
|
||||
|
||||
$repoID = 0;
|
||||
$MRID = 0;
|
||||
$v1 = 0;
|
||||
$v2 = '';
|
||||
$result = $mrModel->saveTask($repoID, $MRID, $v1, $v2);
|
||||
if($result['result'] == 'fail' and isset($result['message']['mr']) and isset($result['message']['repo'])) $result = 'return false';
|
||||
r($result) && p() && e('return false'); //使用空的repoID, MRID
|
||||
|
||||
$_POST['title'] = '';
|
||||
$result = $mrModel->saveTask($MR->repoID, $MR->id, $v1, $v2);
|
||||
if($result['result'] == 'fail' and isset($result['message']['name'])) $result = 'return false';
|
||||
r($result) && p() && e('return false'); //使用正确的repoID, MRID。空的title。
|
||||
|
||||
$_POST['title'] = 'Test Task Review';
|
||||
$result = $mrModel->saveTask($MR->repoID, $MR->id, $v1, $v2);
|
||||
r($result) && p('title') && e('Test Task Review'); //使用正确的repoID, MRID。POST数据正确。
|
||||
Reference in New Issue
Block a user