* [bug#67159,done,1h,0h] Add execution testtask product dropmenu.

This commit is contained in:
wangyuting
2025-11-18 08:31:33 +08:00
parent 9b7982f02a
commit 976faa7bd8
5 changed files with 31 additions and 14 deletions
+5 -3
View File
@@ -764,6 +764,7 @@ class execution extends control
* Browse test tasks of execution.
*
* @param int $executionID
* @param int $productID
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
@@ -771,7 +772,7 @@ class execution extends control
* @access public
* @return void
*/
public function testtask(int $executionID = 0, string $orderBy = 'id_desc', int $recTotal = 0, int $recPerPage = 20, int $pageID = 1)
public function testtask(int $executionID = 0, int $productID = 0, string $orderBy = 'id_desc', int $recTotal = 0, int $recPerPage = 20, int $pageID = 1)
{
$this->loadModel('testtask');
$this->app->loadLang('testreport');
@@ -787,7 +788,7 @@ class execution extends control
/* Load pager. */
$this->app->loadClass('pager', true);
$pager = pager::init($recTotal, $recPerPage, $pageID);
$tasks = $this->testtask->getExecutionTasks($executionID, 'execution', 'product_asc,' . $sort, $pager);
$tasks = $this->testtask->getExecutionTasks($executionID, $productID, 'execution', 'product_asc,' . $sort, $pager);
$this->executionZen->assignTesttaskVars($tasks);
@@ -795,11 +796,12 @@ class execution extends control
$this->view->execution = $execution;
$this->view->project = $this->loadModel('project')->getByID($execution->project);
$this->view->executionID = $executionID;
$this->view->productID = $productID;
$this->view->executionName = $this->executions[$executionID];
$this->view->pager = $pager;
$this->view->orderBy = $orderBy;
$this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter');
$this->view->products = $this->loadModel('product')->getPairs('', 0);
$this->view->products = $this->loadModel('product')->getProducts($executionID, 'all', '', false);
$this->view->canBeChanged = common::canModify('execution', $execution); // Determines whether an object is editable.
$this->display();
+14 -1
View File
@@ -14,6 +14,18 @@ jsVar('allTasks', $lang->testtask->allTasks);
jsVar('pageSummary', sprintf($lang->testtask->allSummary, count($tasks), $waitCount, $testingCount, $blockedCount, $doneCount));
jsVar('checkedAllSummary', $lang->testtask->checkedAllSummary);
$productItems[] = array('text' => $lang->testtask->all, 'url' => createLink('execution', 'testtask', array('executionID' => $executionID)));
foreach($products as $currentProductID => $productName)
{
$productItems[] = array('text' => $productName, 'url' => createLink('execution', 'testtask', array('executionID' => $executionID, 'productID' => $currentProductID)));
}
$productDropdown = dropdown
(
to('trigger', btn($productID ? zget($products, $productID) : $lang->testtask->all, setClass('ghost'))),
set::items($productItems)
);
featureBar
(
li
@@ -24,7 +36,8 @@ featureBar
set('class', 'active'),
$lang->testtask->browse
)
)
),
to::before($productDropdown)
);
$canCreate = $canBeChanged && hasPriv('testtask', 'create');
+1 -1
View File
@@ -37,7 +37,7 @@ featureBar
$lang->testtask->browse
)
),
to::before($productDropdown),
to::before($productDropdown)
);
$canModify = common::canModify('project', $project);
+3 -1
View File
@@ -177,13 +177,14 @@ class testtaskModel extends model
* Get testtasks of a execution.
*
* @param int $executionID
* @param int $productID
* @param string $objectType
* @param string $orderBy
* @param object $pager
* @access public
* @return array
*/
public function getExecutionTasks(int $executionID, string $objectType = 'execution', string $orderBy = 'id_desc', ?object $pager = null): array
public function getExecutionTasks(int $executionID, int $productID = 0, string $objectType = 'execution', string $orderBy = 'id_desc', ?object $pager = null): array
{
if(common::isTutorialMode()) return $this->loadModel('tutorial')->getTesttasks();
@@ -194,6 +195,7 @@ class testtaskModel extends model
->where('t1.deleted')->eq('0')
->beginIF($objectType == 'execution')->andWhere('t1.execution')->eq((int)$executionID)->fi()
->beginIF($objectType == 'project')->andWhere('t1.project')->eq((int)$executionID)->fi()
->beginIF($productID)->andWhere('t1.product')->eq($productID)->fi()
->andWhere('t1.auto')->ne('unit')
->orderBy($orderBy)
->page($pager)
@@ -370,7 +370,7 @@ $testtask = $tester->loadModel('testtask');
r($testtask->getExecutionTasks(0)) && p() && e(0); // 执行 0 的测试单数量为 0。
r($testtask->getExecutionTasks(4)) && p() && e(0); // 执行 4 的测试单数量为 0。
$tasks = $testtask->getExecutionTasks(1, 'project');
$tasks = $testtask->getExecutionTasks(1, 0, 'project');
r(count($tasks)) && p() && e(12); // 项目 1 的测试单数量为 12。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,2,1,项目11版本1,测试单2,user2,2,doing'); // 项目 1 测试单 2 的详细信息。
r($tasks) && p('3:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,2,1,项目11版本1,测试单3,user3,3,done'); // 项目 1 测试单 3 的详细信息。
@@ -388,48 +388,48 @@ r($tasks) && p('12:product,productName,project,execution,build,buildName,name,ow
r($tasks) && p('13:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单13,user4,1,wait'); // 执行 3 测试单 13 的详细信息。
r($tasks) && p('14:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单14,user5,2,doing'); // 执行 3 测试单 14 的详细信息。
$tasks = $testtask->getExecutionTasks(3, 'execution');
$tasks = $testtask->getExecutionTasks(3, 0, 'execution');
r(count($tasks)) && p() && e(6); // 执行 3 的测试单数量为 6。
r($tasks) && p('12:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单12,user3,4,blocked'); // 执行 3 测试单 12 的详细信息。
r($tasks) && p('13:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单13,user4,1,wait'); // 执行 3 测试单 13 的详细信息。
r($tasks) && p('14:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单14,user5,2,doing'); // 执行 3 测试单 14 的详细信息。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_desc');
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_desc');
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(6); // 按 id 倒序排列,不分页,执行 3 的测试单数量为 6。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单19,user1,3,done'); // 按 id 倒序排列,不分页,执行 3 测试单第 1 条是 19。
r($tasks) && p('1:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单18,user9,2,doing'); // 按 id 倒序排列,不分页,执行 3 测试单第 2 条是 18。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单17,user8,1,wait'); // 按 id 倒序排列,不分页,执行 3 测试单第 3 条是 17。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_asc');
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_asc');
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(6); // 按 id 正序排列,不分页,执行 3 的测试单数量为 6。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单12,user3,4,blocked'); // 按 id 正序排列,不分页,执行 3 测试单第 1 条是 12。
r($tasks) && p('1:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单13,user4,1,wait'); // 按 id 正序排列,不分页,执行 3 测试单第 2 条是 13。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单14,user5,2,doing'); // 按 id 正序排列,不分页,执行 3 测试单第 3 条是 14。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_desc', null);
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_desc', null);
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(6); // 按 id 倒序排列,分页参数为 null,执行 3 的测试单数量为 6。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单19,user1,3,done'); // 按 id 倒序排列,分页参数为 null,执行 3 测试单第 1 条是 19。
r($tasks) && p('1:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单18,user9,2,doing'); // 按 id 倒序排列,分页参数为 null,执行 3 测试单第 2 条是 18。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单17,user8,1,wait'); // 按 id 倒序排列,分页参数为 null,执行 3 测试单第 3 条是 17。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_asc', null);
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_asc', null);
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(6); // 按 id 正序排列,分页参数为 null,执行 3 的测试单数量为 6。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单12,user3,4,blocked'); // 按 id 正序排列,分页参数为 null,执行 3 测试单第 1 条是 12。
r($tasks) && p('1:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单13,user4,1,wait'); // 按 id 正序排列,分页参数为 null,执行 3 测试单第 2 条是 13。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单14,user5,2,doing'); // 按 id 正序排列,分页参数为 null,执行 3 测试单第 3 条是 14。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_desc', $pager);
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_desc', $pager);
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(5); // 按 id 倒序排列,分页参数为每页 5 条,执行 3 的测试单数量为 5。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单19,user1,3,done'); // 按 id 倒序排列,分页参数为每页 5 条,执行 3 测试单第 1 条是 19。
r($tasks) && p('1:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单18,user9,2,doing'); // 按 id 倒序排列,分页参数为每页 5 条,执行 3 测试单第 2 条是 18。
r($tasks) && p('2:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单17,user8,1,wait'); // 按 id 倒序排列,分页参数为每页 5 条,执行 3 测试单第 3 条是 17。
$tasks = $testtask->getExecutionTasks(3, 'execution', 'id_asc', $pager);
$tasks = $testtask->getExecutionTasks(3, 0, 'execution', 'id_asc', $pager);
$tasks = array_values($tasks);
r(count($tasks)) && p() && e(5); // 按 id 正序排列,分页参数为每页 5 条,执行 3 的测试单数量为 5。
r($tasks) && p('0:product,productName,project,execution,build,buildName,name,owner,pri,status') && e('1,正常产品1,1,3,1,项目11版本1,测试单12,user3,4,blocked'); // 按 id 正序排列,分页参数为每页 5 条,执行 3 测试单第 1 条是 12。