* Refactor myModel::getReviewingList, and add its unit test.
This commit is contained in:
+19
-16
@@ -907,6 +907,7 @@ class myModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的审批列表。
|
||||
* Get reviewing list for me.
|
||||
*
|
||||
* @param string $browseType
|
||||
@@ -915,17 +916,16 @@ class myModel extends model
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getReviewingList($browseType, $orderBy = 'time_desc', $pager = null)
|
||||
public function getReviewingList(string $browseType, string $orderBy = 'time_desc', object $pager = null): array
|
||||
{
|
||||
$reviewList = array();
|
||||
if($browseType == 'all' or $browseType == 'demand') $reviewList = array_merge($reviewList, $this->getReviewingDemands());
|
||||
if($browseType == 'all' or $browseType == 'story') $reviewList = array_merge($reviewList, $this->getReviewingStories());
|
||||
if($browseType == 'all' or $browseType == 'testcase') $reviewList = array_merge($reviewList, $this->getReviewingCases());
|
||||
if($browseType == 'all' or $browseType == 'project') $reviewList = array_merge($reviewList, $this->getReviewingApprovals());
|
||||
if($browseType == 'all' or $browseType == 'feedback') $reviewList = array_merge($reviewList, $this->getReviewingFeedbacks());
|
||||
if($browseType == 'all' or $browseType == 'oa') $reviewList = array_merge($reviewList, $this->getReviewingOA());
|
||||
if($browseType == 'all' or !in_array($browseType, array('story', 'testcase', 'feedback', 'oa'))) $reviewList = array_merge($reviewList, $this->getReviewingFlows($browseType));
|
||||
|
||||
if($browseType == 'all' || $browseType == 'demand') $reviewList = array_merge($reviewList, $this->getReviewingDemands());
|
||||
if($browseType == 'all' || $browseType == 'story') $reviewList = array_merge($reviewList, $this->getReviewingStories());
|
||||
if($browseType == 'all' || $browseType == 'testcase') $reviewList = array_merge($reviewList, $this->getReviewingCases());
|
||||
if($browseType == 'all' || $browseType == 'project') $reviewList = array_merge($reviewList, $this->getReviewingApprovals());
|
||||
if($browseType == 'all' || $browseType == 'feedback') $reviewList = array_merge($reviewList, $this->getReviewingFeedbacks());
|
||||
if($browseType == 'all' || $browseType == 'oa') $reviewList = array_merge($reviewList, $this->getReviewingOA());
|
||||
if($browseType == 'all' || !in_array($browseType, array('story', 'testcase', 'feedback', 'oa'))) $reviewList = array_merge($reviewList, $this->getReviewingFlows($browseType));
|
||||
if(empty($reviewList)) return array();
|
||||
|
||||
$field = $orderBy;
|
||||
@@ -936,8 +936,8 @@ class myModel extends model
|
||||
$reviewGroup = array();
|
||||
foreach($reviewList as $review)
|
||||
{
|
||||
if(!isset($review->$field)) $field = 'time';
|
||||
$reviewGroup[$review->$field][] = $review;
|
||||
if(!isset($review->{$field})) $field = 'time';
|
||||
$reviewGroup[$review->{$field}][] = $review;
|
||||
}
|
||||
if($direction == 'asc') ksort($reviewGroup);
|
||||
if($direction == 'desc') krsort($reviewGroup);
|
||||
@@ -946,11 +946,14 @@ class myModel extends model
|
||||
foreach($reviewGroup as $reviews) $reviewList = array_merge($reviewList, $reviews);
|
||||
|
||||
/* Pager. */
|
||||
$pager->setRecTotal(count($reviewList));
|
||||
$pager->setPageTotal();
|
||||
$pager->setPageID($pager->pageID);
|
||||
$reviewList = array_chunk($reviewList, $pager->recPerPage);
|
||||
$reviewList = $reviewList[$pager->pageID - 1];
|
||||
if(!is_null($pager))
|
||||
{
|
||||
$pager->setRecTotal(count($reviewList));
|
||||
$pager->setPageTotal();
|
||||
$pager->setPageID($pager->pageID);
|
||||
$reviewList = array_chunk($reviewList, $pager->recPerPage);
|
||||
$reviewList = $reviewList[$pager->pageID - 1];
|
||||
}
|
||||
|
||||
return $reviewList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/my.class.php';
|
||||
|
||||
zdTable('story')->config('story_reviewing')->gen('10');
|
||||
zdTable('storyreview')->config('storyreview')->gen('10');
|
||||
zdTable('case')->gen('20');
|
||||
zdTable('demand')->config('demand_reviewing')->gen('20');
|
||||
zdTable('demandreview')->gen('20');
|
||||
zdTable('user')->gen('10');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 myModel->getReviewingList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
*/
|
||||
|
||||
global $teser;
|
||||
$tester->app->moduleName = 'my';
|
||||
$tester->app->methodName = 'getReviewingList';
|
||||
$tester->app->loadClass('pager', true);
|
||||
$pager = pager::init('10', 2, 1);
|
||||
|
||||
$my = new myTest();
|
||||
|
||||
$account = array('admin', 'user1');
|
||||
$browseType = array('all', 'createdbyme');
|
||||
$orderBy = array('id_desc', 'id_asc');
|
||||
$pageList = array(null, $pager);
|
||||
|
||||
r($my->getReviewingListTest($account[0], $browseType[0], $orderBy[0], $pageList[0])) && p() && e('demand,19;testcase,17;demand,15;testcase,13;demand,11;story,10;testcase,9;story,8;demand,7;story,6;testcase,5;story,4;demand,3;story,2;testcase,1;'); // 测试获取用户 admin 类型 all 排序 id_desc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[0], $orderBy[1], $pageList[0])) && p() && e('testcase,1;story,2;demand,3;story,4;testcase,5;story,6;demand,7;story,8;testcase,9;story,10;demand,11;testcase,13;demand,15;testcase,17;demand,19;'); // 测试获取用户 admin 类型 all 排序 id_asc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[0], $orderBy[0], $pageList[1])) && p() && e('demand,19;testcase,17;'); // 测试获取用户 admin 类型 all 排序 id_desc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[0], $orderBy[1], $pageList[1])) && p() && e('testcase,1;story,2;'); // 测试获取用户 admin 类型 all 排序 id_asc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[1], $orderBy[0], $pageList[0])) && p() && e('0'); // 测试获取用户 admin 类型 createdbyme 排序 id_desc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[1], $orderBy[1], $pageList[0])) && p() && e('0'); // 测试获取用户 admin 类型 createdbyme 排序 id_asc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[1], $orderBy[0], $pageList[1])) && p() && e('0'); // 测试获取用户 admin 类型 createdbyme 排序 id_desc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[0], $browseType[1], $orderBy[1], $pageList[1])) && p() && e('0'); // 测试获取用户 admin 类型 createdbyme 排序 id_asc 获取前两个 的待评审类型。
|
||||
|
||||
r($my->getReviewingListTest($account[1], $browseType[0], $orderBy[0], $pageList[0])) && p() && e('0'); // 测试获取用户 user1 类型 all 排序 id_desc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[1], $orderBy[0], $pageList[0])) && p() && e('0'); // 测试获取用户 user1 类型 createdbyme 排序 id_desc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[0], $orderBy[1], $pageList[0])) && p() && e('0'); // 测试获取用户 user1 类型 all 排序 id_asc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[1], $orderBy[1], $pageList[0])) && p() && e('0'); // 测试获取用户 user1 类型 createdbyme 排序 id_asc 不分页 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[0], $orderBy[0], $pageList[1])) && p() && e('0'); // 测试获取用户 user1 类型 all 排序 id_desc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[1], $orderBy[0], $pageList[1])) && p() && e('0'); // 测试获取用户 user1 类型 createdbyme 排序 id_desc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[0], $orderBy[1], $pageList[1])) && p() && e('0'); // 测试获取用户 user1 类型 all 排序 id_asc 获取前两个 的待评审类型。
|
||||
r($my->getReviewingListTest($account[1], $browseType[1], $orderBy[1], $pageList[1])) && p() && e('0'); // 测试获取用户 user1 类型 createdbyme 排序 id_asc 获取前两个 的待评审类型。
|
||||
@@ -560,4 +560,28 @@ class myTest
|
||||
foreach($menu as $menuKey => $menuName) $return .= "{$menuKey}:{$menuName},";
|
||||
return trim($return, ',');
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试获取审批类型列表。
|
||||
* Test get reviewing list.
|
||||
*
|
||||
* @param string $account
|
||||
* @param string $browseType
|
||||
* @param string $orderBy
|
||||
* @param object $pager
|
||||
* @access public
|
||||
* @return string|array
|
||||
*/
|
||||
public function getReviewingListTest(string $account, string $browseType, string $orderBy, object $pager = null): string|array
|
||||
{
|
||||
su($account);
|
||||
|
||||
$reviewList = $this->objectModel->getReviewingList($browseType, $orderBy, $pager);
|
||||
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
$return = '';
|
||||
foreach($reviewList as $review) $return .= "{$review->type},{$review->id};";
|
||||
return trim($return, ',');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user