From 0be25dffcc4d9ea669a85b901a17e552d438ce10 Mon Sep 17 00:00:00 2001 From: wangxuepeng Date: Sat, 23 Dec 2023 17:34:06 +0800 Subject: [PATCH] * Add unit test for pivot. --- module/pivot/model.php | 4 +- module/pivot/test/model/initgroups.php | 4 +- module/pivot/test/model/processgrouprows.php | 43 +++++++++++++++++++ module/pivot/test/pivot.class.php | 44 ++++++++++++++++++++ 4 files changed, 91 insertions(+), 4 deletions(-) create mode 100755 module/pivot/test/model/processgrouprows.php diff --git a/module/pivot/model.php b/module/pivot/model.php index 0af817cf89..337924d649 100644 --- a/module/pivot/model.php +++ b/module/pivot/model.php @@ -917,7 +917,7 @@ class pivotModel extends model * @access private * @return array */ - private function processGroupRows(array $columns, string $sql, array $filters, array $groups, string $groupList, array $fields, string $showColTotal, array &$cols ,array $langs): array + public function processGroupRows(array $columns, string $sql, array $filters, array $groups, string $groupList, array $fields, string $showColTotal, array &$cols ,array $langs): array { list($sql, $connectSQL, $groupSQL, $orderSQL) = $this->initSql($sql, $filters, $groupList); $number = 0; @@ -1017,7 +1017,7 @@ class pivotModel extends model * @access private * @return array */ - public function getMergeData(array $columnRows, array &$groupsRow) + private function getMergeData(array $columnRows, array &$groupsRow) { $rowIndex = 0; foreach($columnRows as $key => $row) diff --git a/module/pivot/test/model/initgroups.php b/module/pivot/test/model/initgroups.php index 9222e9239d..6f4bb3aac9 100755 --- a/module/pivot/test/model/initgroups.php +++ b/module/pivot/test/model/initgroups.php @@ -3,7 +3,7 @@ /** -title=测试 pivotModel->processDataVar(); +title=测试 pivotModel->initGroups(). timeout=0 cid=1 @@ -27,4 +27,4 @@ $condition2 = isset($result[1]) && $result[1] == 'tt.`一级项目集`,tt.`项 $condition3 = isset($result[2]) && $result[2][0]->name == '一级项目集' && $result[2][0]->isGroup = true; $condition4 = isset($result[2]) && $result[2][1]->name == '项目名称' && $result[2][1]->isGroup = true; -r($condition1 && $condition2 && $condition3 && $condition4) && p('') && e(1); //测试生成的分组信息是否正确。 \ No newline at end of file +r($condition1 && $condition2 && $condition3 && $condition4) && p('') && e(1); //测试生成的分组信息是否正确。 diff --git a/module/pivot/test/model/processgrouprows.php b/module/pivot/test/model/processgrouprows.php new file mode 100755 index 0000000000..de27ef200a --- /dev/null +++ b/module/pivot/test/model/processgrouprows.php @@ -0,0 +1,43 @@ +#!/usr/bin/env php +initGroups(). +timeout=0 +cid=1 + +- 测试生成的表头信息是否正确。 + - @一级项目集 + - 属性8 @单位时间交付需求规模数6 +- 测试生成的数据是否正确。 + - 属性3 @3 + - 属性4 @3 + +*/ + +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/pivot.class.php'; + +zdTable('user')->gen(20); +zdTable('bug')->config('bug')->gen(20); +zdTable('product')->config('product')->gen(10); +zdTable('module')->gen(10); +zdTable('case')->gen(10); +zdTable('project')->config('project_gensheet')->gen(20); +zdTable('product')->gen(10); +zdTable('task')->gen(10); + +$pivotTest = new pivotTest(); + +$cols = array(); +list($pivot, $sql, $filterFormat, $fields, $langs) = $pivotTest->getPivotSheetConfig(1001); +list($groups, $groupList, $groupCol) = $pivotTest->initGroups($fields, $pivot->settings, $langs); + +$groupRows = $pivotTest->processGroupRowsTest($pivot->settings['columns'], $sql, $filterFormat, $groups, $groupList, $fields, 'show', $cols, $langs); + +$check = true; + +$list = get_object_vars($groupRows[0]); +r(array_keys($list)) && p('0,8') && e('一级项目集,单位时间交付需求规模数6'); //测试生成的表头信息是否正确。 +r(array_values($list)) && p('3,4') && e('3,3'); //测试生成的数据是否正确。 \ No newline at end of file diff --git a/module/pivot/test/pivot.class.php b/module/pivot/test/pivot.class.php index 2323abd533..26cb185a98 100644 --- a/module/pivot/test/pivot.class.php +++ b/module/pivot/test/pivot.class.php @@ -2,6 +2,8 @@ declare(strict_types=1); class pivotTest { + private $objectModel; + public function __construct() { global $tester; @@ -50,4 +52,46 @@ class pivotTest $sqlFile = $appPath . 'test/data/pivot.sql'; $tester->dbh->exec(file_get_contents($sqlFile)); } + + /** + * 获取透视表配置相关信息。 + * Get pivot table config info. + * + * @param int $pivotID + * @access public + * @return array + */ + public function getPivotSheetConfig(int $pivotID): array + { + $pivot = $this->objectModel->getByID($pivotID); + + list($sql, $filterFormat) = $this->objectModel->getFilterFormat($pivot->sql, $pivot->filters); + $tables = $this->loadModel('chart')->getTables($sql); + $sql = $tables['sql']; + $fields = json_decode(json_encode($pivot->fieldSettings), true); + $langs = json_decode($pivot->langs, true) ?? array(); + + return array($pivot, $sql, $filterFormat,$fields, $langs); + } + + /** + * 测试 processGroupRows。 + * Test processGroupRows. + * + * @param array $columns + * @param string $sql + * @param array $filterFormat + * @param array $groups + * @param string $groupList + * @param array $fieldS + * @param string $showColTotal + * @param array $cols + * @param array $langs + * @access public + * @return array + */ + public function processGroupRowsTest(array $columns, string $sql, array $filterFormat, array $groups, string $groupList, array $fields, string $showColTotal, array &$cols, array $langs): array + { + return $this->objectModel->processGroupRows($columns, $sql, $filterFormat, $groups, $groupList, $fields, $showColTotal, $cols, $langs); + } }