From bda014f73b63abc8ba251d04302fb04575587c13 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 25 Mar 2022 15:28:29 +0800 Subject: [PATCH 1/2] * Add auto test of product. --- test/class/product.class.php | 280 +++++++++++++++++- test/model/product/batchgetstorystage.php | 49 +++ test/model/product/batchupdate.php | 1 - .../product/getallexecutionpairsbyproduct.php | 23 ++ .../product/getexecutionpairsbyproduct.php | 33 +++ test/model/product/getlinepairs.php | 23 ++ .../product/getprojectstatsbyproduct.php | 37 +++ test/model/product/getroadmap.php | 23 ++ test/model/product/getstatbyid.php | 23 ++ test/model/product/getstats.php | 23 ++ test/model/product/getstats4kanban.php | 27 ++ test/model/product/getteammemberpairs.php | 22 ++ test/model/product/processroadmap.php | 22 ++ test/model/product/statisticdata.php | 26 ++ test/model/product/statisticprogram.php | 33 +++ 15 files changed, 643 insertions(+), 2 deletions(-) create mode 100755 test/model/product/batchgetstorystage.php create mode 100755 test/model/product/getallexecutionpairsbyproduct.php create mode 100755 test/model/product/getexecutionpairsbyproduct.php create mode 100755 test/model/product/getlinepairs.php create mode 100755 test/model/product/getprojectstatsbyproduct.php create mode 100755 test/model/product/getroadmap.php create mode 100755 test/model/product/getstatbyid.php create mode 100755 test/model/product/getstats.php create mode 100755 test/model/product/getstats4kanban.php create mode 100755 test/model/product/getteammemberpairs.php create mode 100755 test/model/product/processroadmap.php create mode 100755 test/model/product/statisticdata.php create mode 100755 test/model/product/statisticprogram.php diff --git a/test/class/product.class.php b/test/class/product.class.php index cf4a939de3..faaf1fb037 100644 --- a/test/class/product.class.php +++ b/test/class/product.class.php @@ -741,7 +741,55 @@ class productTest public function batchGetStoryStageTest($stories) { $objects = $this->objectModel->batchGetStoryStage($stories); - a($objects); + + foreach($objects as $id => $object) $stages[$id] = $object[0]->stage; + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $stages; + } + } + + /** + * Test get project stats by product. + * + * @param int $productID + * @param string $browseType + * @access public + * @return array + */ + public function getProjectStatsByProductTest($productID, $browseType = 'all') + { + $objects = $this->objectModel->getProjectStatsByProduct($productID, $browseType); + + foreach($objects as $object) $projects[$object->id] = $object->name; + + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return isset($projects) ? $projects : array(); + } + } + + /** + * Test get executions by product and project. + * + * @param int $productID + * @param int $projectID + * @access public + * @return array + */ + public function getExecutionPairsByProductTest($productID, $projectID = 0) + { + $objects = $this->objectModel->getExecutionPairsByProduct($productID, 0, 'id_asc', $projectID); if(dao::isError()) { @@ -752,4 +800,234 @@ class productTest return $objects; } } + + /** + * Test get all executions by product. + * + * @param int $productID + * @access public + * @return array + */ + public function getAllExecutionPairsByProductTest($productID) + { + $objects = $this->objectModel->getAllExecutionPairsByProduct($productID); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test get roadmap of a proejct. + * + * @param int $productID + * @access public + * @return array + */ + public function getRoadmapTest($productID) + { + $objects = $this->objectModel->getRoadmap($productID); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test process roadmap. + * + * @param int $productID + * @access public + * @return array + */ + public function processRoadmapTest($productID) + { + global $tester; + $releases = $tester->loadModel('release')->getList($productID, '0'); + + $roadmapGroups = array('2022' => array($releases)); + + $objects = $this->objectModel->processRoadmap($roadmapGroups); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test get team members of a product from projects. + * + * @param int $productID + * @access public + * @return array + */ + public function getTeamMemberPairsTest($productID) + { + $product = $this->objectModel->getByID($productID); + $objects = $this->objectModel->getTeamMemberPairs($product); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test get product stat by id. + * + * @param int $productID + * @access public + * @return array + */ + public function getStatByIDTest($productID) + { + $objects = $this->objectModel->getStatByID($productID); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test get product stats. + * + * @access public + * @return array + */ + public function getStatsTest() + { + $objects = $this->objectModel->getStats(); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test stats for product kanban. + * + * @param string $type + * @param bool $getCount + * @access public + * @return array + */ + public function getStats4KanbanTest($type, $getCount = false) + { + $objects = $this->objectModel->getStats4Kanban(); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $getCount ? count($objects[$type]) : $objects[$type]; + } + } + + /** + * Test get product line pairs. + * + * @param int $programID + * @access public + * @return array + */ + public function getLinePairsTest($programID) + { + $objects = $this->objectModel->getLinePairs($programID); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects; + } + } + + /** + * Test statistics program data. + * + * @param object $productStats + * @param int $index + * @access public + * @return array + */ + public function statisticProgramTest($productStats, $index) + { + $objects = $this->objectModel->statisticProgram($productStats); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $objects[$index][$index]['products']; + } + } + + /** + * Test statistics product data. + * + * @param object $product + * @access public + * @return array + */ + public function statisticDataTest($product) + { + if($product->line) + { + /* Line name. */ + $productStructure[$product->program][$product->line]['lineName'] = $product->lineName; + $data = $this->objectModel->statisticData('line', $productStructure, $product); + } + + if($product->program) + { + /* Init vars. */ + /* Program name. */ + $productStructure[$product->program]['programName'] = $product->programName; + $data = $this->objectModel->statisticData('program', $productStructure, $product); + } + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $data; + } + } } diff --git a/test/model/product/batchgetstorystage.php b/test/model/product/batchgetstorystage.php new file mode 100755 index 0000000000..ce508ad850 --- /dev/null +++ b/test/model/product/batchgetstorystage.php @@ -0,0 +1,49 @@ +#!/usr/bin/env php +batchGetStoryStage(); +cid=1 +pid=1 + +*/ + +$story1 = new stdclass(); +$story1->id = 1; + +$story2 = new stdclass(); +$story2->id = 2; + +$story3 = new stdclass(); +$story3->id = 3; + +$story4 = new stdclass(); +$story4->id = 4; + +$story5 = new stdclass(); +$story5->id = 5; + +$story6 = new stdclass(); +$story6->id = 6; + +$story7 = new stdclass(); +$story7->id = 7; + +$story8 = new stdclass(); +$story8->id = 8; + +$story9 = new stdclass(); +$story9->id = 9; + +$stories1 = array($story1, $story2, $story3); +$stories2 = array($story4, $story5, $story6); +$stories3 = array($story7, $story8, $story9); + +$product = new productTest('admin'); + +r($product->batchGetStoryStageTest($stories1)) && p('1;2;3') && e('wait;planned;projected'); // 测试获取需求1 2 3的阶段 +r($product->batchGetStoryStageTest($stories2)) && p('4;5;6') && e('developing;developed;testing'); // 测试获取需求4 5 6的阶段 +r($product->batchGetStoryStageTest($stories3)) && p('7;8;9') && e('tested;verified;released'); // 测试获取需求7 8 9的阶段 diff --git a/test/model/product/batchupdate.php b/test/model/product/batchupdate.php index 6718885d30..6ff81c0489 100755 --- a/test/model/product/batchupdate.php +++ b/test/model/product/batchupdate.php @@ -9,7 +9,6 @@ title=测试 productModel->batchUpdate(); cid=1 pid=1 - */ $names = array('1' => '批量修改产品1', '2' => '正常产品2', '3' => '正常产品3'); diff --git a/test/model/product/getallexecutionpairsbyproduct.php b/test/model/product/getallexecutionpairsbyproduct.php new file mode 100755 index 0000000000..a57c05a358 --- /dev/null +++ b/test/model/product/getallexecutionpairsbyproduct.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +getAllExecutionPairsByProduct(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); + +r($product->getAllExecutionPairsByProductTest($productIDList[0])) && p('101,111,191,201,281,291,371,381,461,471,551,561,641,651') && e('项目1/迭代1,项目11/迭代11,项目1/迭代91,项目11/迭代101,项目1/迭代181,项目11/迭代191,项目1/迭代271,项目11/迭代281,项目1/迭代361,项目11/迭代371,项目1/迭代451,项目11/迭代461,项目1/迭代541,项目11/迭代551'); // 测试获取产品1的执行信息 +r($product->getAllExecutionPairsByProductTest($productIDList[1])) && p('102,112,192,202,282,292,372,382,462,472,552,562,642,652') && e('项目2/迭代2,项目12/迭代12,项目2/迭代92,项目12/迭代102,项目2/迭代182,项目12/迭代192,项目2/迭代272,项目12/迭代282,项目2/迭代362,项目12/迭代372,项目2/迭代452,项目12/迭代462,项目2/迭代542,项目12/迭代552'); // 测试获取产品2的执行信息 +r($product->getAllExecutionPairsByProductTest($productIDList[2])) && p('103,113,193,203,283,293,373,383,463,473,553,563,643,653') && e('项目3/迭代3,项目13/迭代13,项目3/迭代93,项目13/迭代103,项目3/迭代183,项目13/迭代193,项目3/迭代273,项目13/迭代283,项目3/迭代363,项目13/迭代373,项目3/迭代453,项目13/迭代463,项目3/迭代543,项目13/迭代553'); // 测试获取产品3的执行信息 +r($product->getAllExecutionPairsByProductTest($productIDList[3])) && p('104,114,194,204,284,294,374,384,464,474,554,564,644,654') && e('项目4/迭代4,项目14/迭代14,项目4/迭代94,项目14/迭代104,项目4/迭代184,项目14/迭代194,项目4/迭代274,项目14/迭代284,项目4/迭代364,项目14/迭代374,项目4/迭代454,项目14/迭代464,项目4/迭代544,项目14/迭代554'); // 测试获取产品4的执行信息 +r($product->getAllExecutionPairsByProductTest($productIDList[4])) && p('105,115,195,205,285,295,375,385,465,475,555,565,645,655') && e('项目5/迭代5,项目15/迭代15,项目5/迭代95,项目15/迭代105,项目5/迭代185,项目15/迭代195,项目5/迭代275,项目15/迭代285,项目5/迭代365,项目15/迭代375,项目5/迭代455,项目15/迭代465,项目5/迭代545,项目15/迭代555'); // 测试获取产品5的执行信息 +r($product->getAllExecutionPairsByProductTest($productIDList[5])) && p('0:') && e(''); // 测试获取不存在产品的执行信息 diff --git a/test/model/product/getexecutionpairsbyproduct.php b/test/model/product/getexecutionpairsbyproduct.php new file mode 100755 index 0000000000..e2b7f4d57c --- /dev/null +++ b/test/model/product/getexecutionpairsbyproduct.php @@ -0,0 +1,33 @@ +#!/usr/bin/env php +getExecutionPairsByProduct(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); +$projectIDList = array('11', '21', '12', '22', '13', '23', '14', '24', '15', '25'); + +$product = new productTest('admin'); + +r($product->getExecutionPairsByProductTest($productIDList[0])) && p('101;111') && e('项目1/迭代1;项目11/迭代11'); // 测试获取产品1的信息 +r($product->getExecutionPairsByProductTest($productIDList[0], $projectIDList[0])) && p('101;111') && e('迭代1;'); // 测试获取产品1 项目11的信息 +r($product->getExecutionPairsByProductTest($productIDList[0], $projectIDList[1])) && p('101;111') && e(';迭代11'); // 测试获取产品1 项目21的信息 +r($product->getExecutionPairsByProductTest($productIDList[1])) && p('102;112') && e('项目2/迭代2;项目12/迭代12'); // 测试获取产品2的信息 +r($product->getExecutionPairsByProductTest($productIDList[1], $projectIDList[2])) && p('102;112') && e('迭代2;'); // 测试获取产品2 项目12的信息 +r($product->getExecutionPairsByProductTest($productIDList[1], $projectIDList[3])) && p('102;112') && e(';迭代12'); // 测试获取产品2 项目22的信息 +r($product->getExecutionPairsByProductTest($productIDList[2])) && p('103;113') && e('项目3/迭代3;项目13/迭代13'); // 测试获取产品3的信息 +r($product->getExecutionPairsByProductTest($productIDList[2], $projectIDList[4])) && p('103;113') && e('迭代3;'); // 测试获取产品3 项目13的信息 +r($product->getExecutionPairsByProductTest($productIDList[2], $projectIDList[5])) && p('103;113') && e(';迭代13'); // 测试获取产品3 项目23的信息 +r($product->getExecutionPairsByProductTest($productIDList[3])) && p('104;114') && e('项目4/迭代4;项目14/迭代14'); // 测试获取产品4的信息 +r($product->getExecutionPairsByProductTest($productIDList[3], $projectIDList[6])) && p('104;114') && e('迭代4;'); // 测试获取产品4 项目14的信息 +r($product->getExecutionPairsByProductTest($productIDList[3], $projectIDList[7])) && p('104;114') && e(';迭代14'); // 测试获取产品4 项目24的信息 +r($product->getExecutionPairsByProducttest($productIDList[4])) && p('105;115') && e('项目5/迭代5;项目15/迭代15'); // 测试获取产品5的信息 +r($product->getExecutionPairsByProducttest($productIDList[4], $projectIDList[8])) && p('105;115') && e('迭代5;'); // 测试获取产品5 项目15的信息 +r($product->getExecutionPairsByProducttest($productIDList[4], $projectIDList[9])) && p('105;115') && e(';迭代15'); // 测试获取产品5 项目25的信息 diff --git a/test/model/product/getlinepairs.php b/test/model/product/getlinepairs.php new file mode 100755 index 0000000000..abc78dcaf8 --- /dev/null +++ b/test/model/product/getlinepairs.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +getLinePairs(); +cid=1 +pid=1 + +*/ + +$programIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); + +r($product->getLinePairsTest($programIDList[0])) && p('1,11') && e('产品线1,产品线11'); // 测试获取程序集1的信息 +r($product->getLinePairsTest($programIDList[1])) && p('2,12') && e('产品线2,产品线12'); // 测试获取程序集2的信息 +r($product->getLinePairsTest($programIDList[2])) && p('3,13') && e('产品线3,产品线13'); // 测试获取程序集3的信息 +r($product->getLinePairsTest($programIDList[3])) && p('4,14') && e('产品线4,产品线14'); // 测试获取程序集4的信息 +r($product->getLinePairsTest($programIDList[4])) && p('5,15') && e('产品线5,产品线15'); // 测试获取程序集5的信息 +r($product->getLinePairsTest($programIDList[5])) && p('1,11') && e('0'); // 测试获取不存在程序集的信息 diff --git a/test/model/product/getprojectstatsbyproduct.php b/test/model/product/getprojectstatsbyproduct.php new file mode 100755 index 0000000000..58aca93d2e --- /dev/null +++ b/test/model/product/getprojectstatsbyproduct.php @@ -0,0 +1,37 @@ +#!/usr/bin/env php +getProjectStatsByProduct(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); +$browseType = array('unclosed', 'unplan', 'allstory', 'assignedtome', 'openedbyme', 'reviewedbyme', 'reviewbyme', 'closedbyme', 'draftstory', 'activestory', 'changedstory', 'willclose', 'closedstory'); + +$product = new productTest('admin'); + +r($product->getProjectStatsByProductTest($productIDList[0])) && p('11;21') && e('项目1;项目11'); // 测试获取产品1的 browseType为all的信息 +r($product->getProjectStatsByProductTest($productIDList[0], $browseType[0])) && p() && e('0'); // 测试获取产品1的 browseType为unclosed的信息 +r($product->getProjectStatsByProductTest($productIDList[0], $browseType[1])) && p() && e('0'); // 测试获取产品1的 browseType为unplan的信息 +r($product->getProjectStatsByProductTest($productIDList[0], $browseType[2])) && p() && e('0'); // 测试获取产品1的 browseType为allstory的信息 +r($product->getProjectStatsByProductTest($productIDList[1])) && p('12;22') && e('项目2;项目12'); // 测试获取产品2的 browseType为all的信息 +r($product->getProjectStatsByProductTest($productIDList[1], $browseType[3])) && p() && e('0'); // 测试获取产品2的 browseType为assignedtome的信息 +r($product->getProjectStatsByProductTest($productIDList[1], $browseType[4])) && p() && e('0'); // 测试获取产品2的 browseType为openedbyme的信息 +r($product->getProjectStatsByProductTest($productIDList[1], $browseType[5])) && p() && e('0'); // 测试获取产品2的 browseType为reviewedbyme的信息 +r($product->getProjectStatsByProductTest($productIDList[2])) && p('13;23') && e('项目3;项目13'); // 测试获取产品3的 browseType为all的信息 +r($product->getProjectStatsByProductTest($productIDList[2], $browseType[6])) && p() && e('0'); // 测试获取产品3的 browseType为reviewbyme的信息 +r($product->getProjectStatsByProductTest($productIDList[2], $browseType[7])) && p() && e('0'); // 测试获取产品3的 browseType为closedbyme的信息 +r($product->getProjectStatsByProductTest($productIDList[2], $browseType[8])) && p() && e('0'); // 测试获取产品3的 browseType为draftstory的信息 +r($product->getProjectStatsByProductTest($productIDList[3])) && p('14;24') && e('项目4;项目14'); // 测试获取产品4的 browseType为all的信息 +r($product->getProjectStatsByProductTest($productIDList[3], $browseType[9])) && p() && e('0'); // 测试获取产品4的 browseType为activestory的信息 +r($product->getProjectStatsByProductTest($productIDList[3], $browseType[10])) && p() && e('0'); // 测试获取产品4的 browseType为changedstory的信息 +r($product->getProjectStatsByProductTest($productIDList[4])) && p('15;25') && e('项目5;项目15'); // 测试获取产品5的 browseType为all的信息 +r($product->getProjectStatsByProductTest($productIDList[4], $browseType[11])) && p() && e('0'); // 测试获取产品5的 browseType为willclose的信息 +r($product->getProjectStatsByProductTest($productIDList[4], $browseType[12])) && p() && e('0'); // 测试获取产品5的 browseType为closedstory的信息 +r($product->getProjectStatsByProductTest($productIDList[5])) && p() && e('0'); // 测试获取不存在产品的信息 diff --git a/test/model/product/getroadmap.php b/test/model/product/getroadmap.php new file mode 100755 index 0000000000..4b00b19d3a --- /dev/null +++ b/test/model/product/getroadmap.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +getRoadmap(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); + +r($product->getRoadmapTest($productIDList[0])) && p('total') && e('4'); // 测试获取产品1的roadmap数量 +r($product->getRoadmapTest($productIDList[1])) && p('total') && e('1'); // 测试获取产品2的roadmap数量 +r($product->getRoadmapTest($productIDList[2])) && p('total') && e('0'); // 测试获取产品3的roadmap数量 +r($product->getRoadmapTest($productIDList[3])) && p('total') && e('0'); // 测试获取产品4的roadmap数量 +r($product->getRoadmapTest($productIDList[4])) && p('total') && e('0'); // 测试获取产品5的roadmap数量 +r($product->getRoadmapTest($productIDList[5])) && p('total') && e('0'); // 测试获取不存在产品的roadmap数量 diff --git a/test/model/product/getstatbyid.php b/test/model/product/getstatbyid.php new file mode 100755 index 0000000000..10982edbc7 --- /dev/null +++ b/test/model/product/getstatbyid.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +getStatByID(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); + +r($product->getStatByIDTest($productIDList[0])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('正常产品1,0,4,2,4,2,14,9,1,0'); // 测试获取产品1的stat信息 +r($product->getStatByIDTest($productIDList[1])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('正常产品2,0,1,2,4,2,14,4,1,0'); // 测试获取产品2的stat信息 +r($product->getStatByIDTest($productIDList[2])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('正常产品3,0,0,2,4,2,14,4,1,0'); // 测试获取产品3的stat信息 +r($product->getStatByIDTest($productIDList[3])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('正常产品4,0,0,2,4,2,14,4,1,0'); // 测试获取产品4的stat信息 +r($product->getStatByIDTest($productIDList[4])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('正常产品5,0,0,2,4,2,14,4,1,0'); // 测试获取产品5的stat信息 +r($product->getStatByIDTest($productIDList[5])) && p('name,plans,releases,builds,cases,projects,executions,bugs,docs,progress') && e('0'); // 测试获取不存在产品的stat信息 diff --git a/test/model/product/getstats.php b/test/model/product/getstats.php new file mode 100755 index 0000000000..f089b567e6 --- /dev/null +++ b/test/model/product/getstats.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +getStats(); +cid=1 +pid=1 + +*/ + +$product = new productTest('admin'); + +r($product->getStatsTest()) && p('0:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品1,0,4,9,9,0,0,0,0,0'); // 测试获取产品1的stats信息 +r($product->getStatsTest()) && p('1:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品2,0,1,4,4,0,0,0,0,0'); // 测试获取产品2的stats信息 +r($product->getStatsTest()) && p('2:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品3,0,0,4,4,0,0,0,0,0'); // 测试获取产品3的stats信息 +r($product->getStatsTest()) && p('3:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品4,0,0,4,4,0,0,0,0,0'); // 测试获取产品4的stats信息 +r($product->getStatsTest()) && p('4:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品5,0,0,4,4,0,0,0,0,0'); // 测试获取产品5的stats信息 +r($product->getStatsTest()) && p('5:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品6,0,0,4,4,0,0,0,0,25'); // 测试获取产品6的stats信息 +r($product->getStatsTest()) && p('6:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品7,0,0,4,4,0,0,0,0,25'); // 测试获取产品7的stats信息 +r($product->getStatsTest()) && p('7:name,plans,releases,bugs,unResolved,closedBugs,fixedBugs,thisWeekBugs,assignToNull,progress') && e('正常产品8,0,0,4,4,0,0,0,0,25'); // 测试获取产品8的stats信息 diff --git a/test/model/product/getstats4kanban.php b/test/model/product/getstats4kanban.php new file mode 100755 index 0000000000..9473caf8a8 --- /dev/null +++ b/test/model/product/getstats4kanban.php @@ -0,0 +1,27 @@ +#!/usr/bin/env php +getStats4Kanban(); +cid=1 +pid=1 + +*/ + +$product = new productTest('admin'); + +$typeList = array('programList', 'productList', 'planList', 'projectList', 'executionList', 'projectProduct', 'projectLatestExecutions', 'hourList', 'releaseList'); + +r($product->getStats4KanbanTest($typeList[0])) && p('1,2,3') && e('项目集1,项目集2,项目集3'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[1])) && p('1:name;2:name;3:name') && e('正常产品1;正常产品2;正常产品3'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[3])) && p('13:name;14:name;15:name') && e('项目3;项目4;项目5'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[6])) && p('14:name;16:name;22:name') && e('迭代544;迭代546;迭代552'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[7])) && p('612:progress,totalReal;618:progress,totalReal') && e('44.44,9;100,10'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[2], true)) && p() && e('14'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[4], true)) && p() && e('22'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[5], true)) && p() && e('72'); // 测试获取产品的看板stats信息 +r($product->getStats4KanbanTest($typeList[8], true)) && p() && e('2'); // 测试获取产品的看板stats信息 + diff --git a/test/model/product/getteammemberpairs.php b/test/model/product/getteammemberpairs.php new file mode 100755 index 0000000000..2a460045ae --- /dev/null +++ b/test/model/product/getteammemberpairs.php @@ -0,0 +1,22 @@ +#!/usr/bin/env php +getTeamMemberPairs(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); + +r($product->getTeamMemberPairsTest($productIDList[0])) && p('po1,test1,dev1,admin,pm92,po2,user12') && e('po1,test1,dev1,0,1,2,3'); // 测试获取产品1的信息 +r($product->getTeamMemberPairsTest($productIDList[1])) && p('po2,test2,dev2,pm93,user3,po3,user13') && e('po2,test2,dev2,0,1,2,3'); // 测试获取产品2的信息 +r($product->getTeamMemberPairsTest($productIDList[2])) && p('po3,test3,dev3,pm94,user4,po4,user14') && e('po3,test3,dev3,0,1,2,3'); // 测试获取产品3的信息 +r($product->getTeamMemberPairsTest($productIDList[3])) && p('po4,test4,dev4,pm95,user5,po5,user15') && e('po4,test4,dev4,0,1,2,3'); // 测试获取产品4的信息 +r($product->getTeamMemberPairsTest($productIDList[4])) && p('po5,test5,dev5,pm96,user6,po6,user16') && e('po5,test5,dev5,0,1,2,3'); // 测试获取产品5的信息 diff --git a/test/model/product/processroadmap.php b/test/model/product/processroadmap.php new file mode 100755 index 0000000000..f7f7d8b41e --- /dev/null +++ b/test/model/product/processroadmap.php @@ -0,0 +1,22 @@ +#!/usr/bin/env php +processRoadmap(); +cid=1 +pid=1 + +*/ + +$productIDList = array('1', '2', '3', '4', '5', '1000001'); + +$product = new productTest('admin'); +r($product->processRoadmapTest($productIDList[0])) && p('0:name;1:name;2:name;3:name') && e('产品1正常的发布1;产品1正常的发布3;产品1正常的里程碑发布5;产品1停止维护的里程碑发布6'); // 测试获取产品1下的发布roadmap +r($product->processRoadmapTest($productIDList[1])) && p('0:name') && e('产品2发布!@#$$$%^&*()测试发布的名称到底可以有多长asdlfkjla8'); // 测试获取产品2下的发布roadmap +r($product->processRoadmapTest($productIDList[2])) && p() && e('0'); // 测试获取产品3下的发布roadmap +r($product->processRoadmapTest($productIDList[3])) && p() && e('0'); // 测试获取产品4下的发布roadmap +r($product->processRoadmapTest($productIDList[4])) && p() && e('0'); // 测试获取产品5下的发布roadmap +r($product->processRoadmapTest($productIDList[5])) && p() && e('0'); // 测试获取不存在产品下的发布roadmap diff --git a/test/model/product/statisticdata.php b/test/model/product/statisticdata.php new file mode 100755 index 0000000000..a3e4f8a125 --- /dev/null +++ b/test/model/product/statisticdata.php @@ -0,0 +1,26 @@ +#!/usr/bin/env php +statisticData(); +cid=1 +pid=1 + +*/ + +$product = new productTest('admin'); + +$productStats = $product->getStatsTest(); + +r($product->statisticDataTest($productStats[1])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集1,2,2,2,2,4,0,0,1'); // 测试获取统计数据集中产品2的信息 +r($product->statisticDataTest($productStats[2])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集2,2,2,2,2,4,0,0,0'); // 测试获取统计数据集中产品3的信息 +r($product->statisticDataTest($productStats[3])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集3,2,2,2,2,4,0,0,0'); // 测试获取统计数据集中产品4的信息 +r($product->statisticDataTest($productStats[4])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集4,2,2,2,2,4,0,0,0'); // 测试获取统计数据集中产品5的信息 +r($product->statisticDataTest($productStats[5])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集5,2,0,2,1,4,0,0,0'); // 测试获取统计数据集中产品6的信息 +r($product->statisticDataTest($productStats[6])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集6,2,0,2,1,4,0,0,0'); // 测试获取统计数据集中产品7的信息 +r($product->statisticDataTest($productStats[7])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集7,2,0,2,1,4,0,0,0'); // 测试获取统计数据集中产品8的信息 +r($product->statisticDataTest($productStats[8])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集8,2,0,2,1,4,0,1,0'); // 测试获取统计数据集中产品9的信息 +r($product->statisticDataTest($productStats[9])) && p('programName,totalRequirements,activeRequirements,totalStories,activeStories,unResolvedBugs,closedBugs,plans,releases') && e('项目集9,2,0,2,1,4,0,3,0'); // 测试获取统计数据集中产品10的信息 diff --git a/test/model/product/statisticprogram.php b/test/model/product/statisticprogram.php new file mode 100755 index 0000000000..07eeb54c67 --- /dev/null +++ b/test/model/product/statisticprogram.php @@ -0,0 +1,33 @@ +#!/usr/bin/env php +statisticProgram(); +cid=1 +pid=1 + +*/ + +$product = new productTest('admin'); + +$productStats = $product->getStatsTest(); + +r($product->statisticProgramTest($productStats, '0')) && p('1:name,plans,releases,bugs') && e('正常产品1,0,4,9'); // 测试获取统计数据集中产品1的stats信息 +r($product->statisticProgramTest($productStats, '0')) && p('12:name,plans,releases,bugs') && e('正常产品12,0,0,3'); // 测试获取统计数据集中产品12的stats信息 +r($product->statisticProgramTest($productStats, '0')) && p('45:name,plans,releases,bugs') && e('多分支产品45,2,0,3'); // 测试获取统计数据集中产品45的stats信息 +r($product->statisticProgramTest($productStats, '0')) && p('89:name,plans,releases,bugs') && e('多平台产品89,0,0,3'); // 测试获取统计数据集中产品89的stats信息 +r($product->statisticProgramTest($productStats, '0')) && p('100:name,plans,releases,bugs') && e('多平台产品100,0,0,3'); // 测试获取统计数据集中产品100的stats信息 +r($product->statisticProgramTest($productStats, '1')) && p('2:name,plans,releases,bugs') && e('正常产品2,0,1,4'); // 测试获取统计数据集中产品2的stats信息 +r($product->statisticProgramTest($productStats, '1')) && p('13:name,plans,releases,bugs') && e('正常产品13,0,0,3'); // 测试获取统计数据集中产品13的stats信息 +r($product->statisticProgramTest($productStats, '1')) && p('46:name,plans,releases,bugs') && e('多分支产品46,2,0,3'); // 测试获取统计数据集中产品46的stats信息 +r($product->statisticProgramTest($productStats, '1')) && p('90:name,plans,releases,bugs') && e('多平台产品90,0,0,3'); // 测试获取统计数据集中产品90的stats信息 +r($product->statisticProgramTest($productStats, '2')) && p('3:name,plans,releases,bugs') && e('正常产品3,0,0,4'); // 测试获取统计数据集中产品3的stats信息 +r($product->statisticProgramTest($productStats, '3')) && p('4:name,plans,releases,bugs') && e('正常产品4,0,0,4'); // 测试获取统计数据集中产品4的stats信息 +r($product->statisticProgramTest($productStats, '4')) && p('5:name,plans,releases,bugs') && e('正常产品5,0,0,4'); // 测试获取统计数据集中产品5的stats信息 +r($product->statisticProgramTest($productStats, '5')) && p('6:name,plans,releases,bugs') && e('正常产品6,0,0,4'); // 测试获取统计数据集中产品6的stats信息 +r($product->statisticProgramTest($productStats, '6')) && p('7:name,plans,releases,bugs') && e('正常产品7,0,0,4'); // 测试获取统计数据集中产品7的stats信息 +r($product->statisticProgramTest($productStats, '7')) && p('8:name,plans,releases,bugs') && e('正常产品8,0,0,4'); // 测试获取统计数据集中产品8的stats信息 +r($product->statisticProgramTest($productStats, '8')) && p('9:name,plans,releases,bugs') && e('正常产品9,1,0,4'); // 测试获取统计数据集中产品9的stats信息 From 2af66dd17ffe387259ea618640b307adbe9a4311 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Fri, 25 Mar 2022 15:29:40 +0800 Subject: [PATCH 2/2] * Fix bug. --- module/product/model.php | 1 + 1 file changed, 1 insertion(+) diff --git a/module/product/model.php b/module/product/model.php index 64e8dfed24..e3409606d0 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -1424,6 +1424,7 @@ class productModel extends model $projects = $this->dao->select('t1.project, t1.product')->from(TABLE_PROJECTPRODUCT)->alias('t1') ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') ->where('t2.deleted')->eq(0) + ->andWhere('t2.type')->eq('project') ->fetchGroup('product', 'project'); } if(empty($teams))