diff --git a/module/chart/model.php b/module/chart/model.php index f129b77a25..9dcd0446c2 100644 --- a/module/chart/model.php +++ b/module/chart/model.php @@ -608,9 +608,9 @@ class chartModel extends model * * @param string $sql * @access public - * @return array + * @return array|false */ - public function getTables(string $sql): array + public function getTables(string $sql): array|false { $processedSql = trim($sql, ';'); $processedSql = str_replace(array("\r\n", "\n"), ' ', $processedSql); @@ -674,4 +674,3 @@ class chartModel extends model return $sql; } } - diff --git a/module/chart/test/chart.class.php b/module/chart/test/chart.class.php index abfb90256b..5ffa2af9ac 100644 --- a/module/chart/test/chart.class.php +++ b/module/chart/test/chart.class.php @@ -55,9 +55,9 @@ class chartTest * @access public * @return string */ - public function isClickableTest(int $chartID): string + public function isClickableTest(int $chartID, string $action): string { $chart = $this->objectModel->getByID($chartID); - return $this->objectModel->isClickable($chart) ? 'true' : 'false'; + return $this->objectModel->isClickable($chart, $action) ? 'true' : 'false'; } } diff --git a/module/chart/test/model/getbyid.php b/module/chart/test/model/getbyid.php index 325bf2fd39..255c15dabe 100644 --- a/module/chart/test/model/getbyid.php +++ b/module/chart/test/model/getbyid.php @@ -16,5 +16,5 @@ su('admin'); global $tester; $chart = $tester->loadModel('chart'); -r($chart->getByID(10086)) && p() && e('0'); //测试获取一个不存在的ID 的图表 +r($chart->getByID(10086)) && p() && e('0'); //测试获取一个不存在的ID 的图表 r($chart->getByID(1018)) && p('id,name,stage') && e('1018,宏观数据-一级项目集个数,published'); //测试获取宏观数据-一级项目集个数图表 diff --git a/module/chart/test/model/getdefaultcharts.php b/module/chart/test/model/getdefaultcharts.php index 7bf5dab789..188bc761f3 100644 --- a/module/chart/test/model/getdefaultcharts.php +++ b/module/chart/test/model/getdefaultcharts.php @@ -20,3 +20,4 @@ $chart = $tester->loadModel('chart'); r($chart->getDefaultCharts(36)) && p() && e('0'); //测试传入的分组是子分组时,返回空数据 r($chart->getDefaultCharts(123)) && p() && e('0'); //测试查询不存在的分组 r($chart->getDefaultCharts(35)) && p('0:currentGroup') && e(45); //获取组织分组下第一个图表的当前分组ID +r($chart->getDefaultCharts(35)) && p('0:id,name') && e('1043,宏观数据-公司项目集状态分布'); //获取组织分组下第一个图表的ID和名称 diff --git a/module/chart/test/model/getfieldoptions.php b/module/chart/test/model/getfieldoptions.php index 4b78cff03d..357d64e222 100644 --- a/module/chart/test/model/getfieldoptions.php +++ b/module/chart/test/model/getfieldoptions.php @@ -17,26 +17,16 @@ zdTable('dept')->gen(5); zdTable('bug')->gen(5); su('admin'); -$type = array(); -$type[''] = ''; -$type['user'] = 'user'; -$type['product'] = 'product'; -$type['project'] = 'project'; -$type['dept'] = 'dept'; -$type['option'] = 'option'; -$type['object'] = 'object'; -$type['string'] = 'string'; - global $tester; $chart = $tester->loadModel('chart'); -r($chart->getFieldOptions($type[''], '', '', '')) && p() && e('0'); //测试参数全部为空 -r($chart->getFieldOptions($type['user'], '', '', '')) && p('admin') && e('A:admin'); //测试查询用户 -r($chart->getFieldOptions($type['product'], '', '', '')) && p('1') && e('正常产品1'); //测试查询产品 -r($chart->getFieldOptions($type['project'], '', '', '')) && p('11') && e('项目11'); //测试查询项目 -r($chart->getFieldOptions($type['dept'], '', '', '')) && p('1') && e('/产品部1'); //测试查询部门 +r($chart->getFieldOptions('', '', '', '')) && p() && e('0'); //测试参数全部为空 +r($chart->getFieldOptions('user', '', '', '')) && p('admin') && e('A:admin'); //测试查询用户 +r($chart->getFieldOptions('product', '', '', '')) && p('1') && e('正常产品1'); //测试查询产品 +r($chart->getFieldOptions('project', '', '', '')) && p('11') && e('项目11'); //测试查询项目 +r($chart->getFieldOptions('dept', '', '', '')) && p('1') && e('/产品部1'); //测试查询部门 -r($chart->getFieldOptions($type['option'], 'bug', 'status', '')) && p('active') && e('激活'); //测试查询bug状态 -r($chart->getFieldOptions($type['object'], 'bug', 'title', '')) && p('1') && e('BUG1'); //测试查询bug名称 +r($chart->getFieldOptions('option', 'bug', 'status', '')) && p('active') && e('激活'); //测试查询bug状态 +r($chart->getFieldOptions('object', 'bug', 'title', '')) && p('1') && e('BUG1'); //测试查询bug名称 -r($chart->getFieldOptions($type['string'], '', 'title', 'select * from zt_bug')) && p('BUG1') && e('BUG1'); //测试使用sql查询 +r($chart->getFieldOptions('string', '', 'title', 'select * from zt_bug')) && p('BUG1') && e('BUG1'); //测试使用sql查询 diff --git a/module/chart/test/model/gettables.php b/module/chart/test/model/gettables.php index 6a6c2171bf..5bcca705b8 100644 --- a/module/chart/test/model/gettables.php +++ b/module/chart/test/model/gettables.php @@ -24,20 +24,34 @@ $sql[3] = 'select t1.id as storyID,t2.name as productName from zt_story as t1 le $sql[4] = 'select * from zt_story where id = 1;'; $sql[5] = 'select * from zt_story limit 10;'; $sql[6] = 'select * from zt_story group by product;'; +$sql[7] = 'select * where table;'; -r($chart->getTables($sql[0])) && p('tables:0') && e('zt_story'); //测试普通SQL语句获取表是否正确 -r($chart->getTables($sql[0])) && p('fields:*') && e('*'); //测试普通SQL语句获取字段是否正确 +r($chart->getTables($sql[0])) && p('tables:0') && e('zt_story'); //测试普通SQL语句获取表是否正确 +r($chart->getTables($sql[0])) && p('fields:*') && e('*'); //测试普通SQL语句获取字段是否正确 +r($chart->getTables($sql[0])) && p('sql') && e('select * from zt_story;'); //测试普通SQL语句获取sql是否正确 + +r($chart->getTables($sql[1])) && p('tables:0') && e('zt_story'); //测试普通SQL语句获取表是否正确 r($chart->getTables($sql[1])) && p('fields:id,name') && e('id,name'); //测试普通SQL语句获取查询字段是否正确 +r($chart->getTables($sql[1])) && p('sql', '-') && e('select id,name from zt_story;'); //测试普通SQL语句获取sql是否正确 -r($chart->getTables($sql[2])) && p('tables:0,1') && e('zt_story,zt_product'); //测试联表SQL语句获取表是否正确 -r($chart->getTables($sql[2])) && p('fields:id,name') && e('t1.id,t2.name'); //测试联表SQL语句获取字段是否正确 +r($chart->getTables($sql[2])) && p('tables:0,1') && e('zt_story,zt_product'); //测试联表SQL语句获取表是否正确 +r($chart->getTables($sql[2])) && p('fields:id,name') && e('t1.id,t2.name'); //测试联表SQL语句获取字段是否正确 +r($chart->getTables($sql[2])) && p('sql', '-') && e('select t1.id,t2.name from zt_story as t1 left join zt_product as t2 on t1.product = t2.id;'); //测试联表SQL语句获取sql是否正确 + +r($chart->getTables($sql[3])) && p('tables:0,1') && e('zt_story,zt_product'); //测试联表SQL语句获取重定义字段是否正确 r($chart->getTables($sql[3])) && p('fields:storyID,productName') && e('t1.id,t2.name'); //测试联表SQL语句获取重定义字段是否正确 +r($chart->getTables($sql[3])) && p('sql', '-') && e('select t1.id as storyID,t2.name as productName from zt_story as t1 left join zt_product as t2 on t1.product = t2.id;'); //测试联表SQL语句获取sql是否正确 r($chart->getTables($sql[4])) && p('tables:0') && e('zt_story'); //测试sql中有where获取表是否正确 r($chart->getTables($sql[4])) && p('fields:*') && e('*'); //测试sql中有where获取字段是否正确 +r($chart->getTables($sql[4])) && p('sql') && e('select * from zt_story where id = 1;'); //测试sql中有where获取sql是否正确 r($chart->getTables($sql[5])) && p('tables:0') && e('zt_story'); //测试sql中有limit获取表是否正确 r($chart->getTables($sql[5])) && p('fields:*') && e('*'); //测试sql中有limit获取字段是否正确 +r($chart->getTables($sql[5])) && p('sql') && e('select * from zt_story limit 10;'); //测试sql中有limit获取sql是否正确 r($chart->getTables($sql[6])) && p('tables:0') && e('zt_story'); //测试sql中有group by获取表是否正确 r($chart->getTables($sql[6])) && p('fields:*') && e('*'); //测试sql中有group by获取字段是否正确 +r($chart->getTables($sql[6])) && p('sql') && e('select * from zt_story group by product;'); //测试sql中有group by获取sql是否正确 + +r($chart->getTables($sql[7])) && p('') && e('0'); //测试异常sql语句 diff --git a/module/chart/test/model/gettreemenu.php b/module/chart/test/model/gettreemenu.php index d4b0b00e44..72fbeb07c6 100644 --- a/module/chart/test/model/gettreemenu.php +++ b/module/chart/test/model/gettreemenu.php @@ -17,8 +17,8 @@ su('admin'); global $tester; $chart = $tester->loadModel('chart'); -r($chart->getTreeMenu(0)) && P() && e('0'); //测试ID为0时是否返回空 -r($chart->getTreeMenu(36)) && P() && e('0'); //测试传入子分组时是否返回空 -r($chart->getTreeMenu(30)) && P() && e('0'); //测试获取的分组为空 +r($chart->getTreeMenu(0)) && p() && e('0'); //测试ID为0时是否返回空 +r($chart->getTreeMenu(36)) && p() && e('0'); //测试传入子分组时是否返回空 +r($chart->getTreeMenu(30)) && p() && e('0'); //测试获取的分组为空 -r($chart->getTreeMenu(32)) && P("1:id,parent,name") && e("36_1102,36,年度排行-产品-完成需求规模榜"); //测试产品分组下的图表树 +r($chart->getTreeMenu(32)) && p("1:id,parent,name") && e("36_1102,36,年度排行-产品-完成需求规模榜"); //测试产品分组下的图表树 diff --git a/module/chart/test/model/isclickable.php b/module/chart/test/model/isclickable.php index 486aa1ea23..7dd59d8c97 100644 --- a/module/chart/test/model/isclickable.php +++ b/module/chart/test/model/isclickable.php @@ -15,5 +15,9 @@ zdTable('user')->gen(5); su('admin'); $chart = new chartTest(); -r($chart->isClickableTest(1001)) && p() && e('false'); //测试内置报表的操作按钮是否不可点击 -r($chart->isClickableTest(1077)) && p() && e('true'); //测试非内置报表的操作按钮是否可点击 +r($chart->isClickableTest(1001, 'design')) && p() && e('false'); //测试内置报表的设计按钮是否不可点击 +r($chart->isClickableTest(1001, 'edit')) && p() && e('false'); //测试内置报表的编辑按钮是否不可点击 +r($chart->isClickableTest(1001, 'delete')) && p() && e('false'); //测试内置报表的删除按钮是否不可点击 +r($chart->isClickableTest(1077, 'design')) && p() && e('true'); //测试非内置报表的设计按钮是否可点击 +r($chart->isClickableTest(1077, 'edit')) && p() && e('true'); //测试非内置报表的编辑按钮是否可点击 +r($chart->isClickableTest(1077, 'delete')) && p() && e('true'); //测试非内置报表的删除按钮是否可点击 diff --git a/module/chart/test/model/processchart.php b/module/chart/test/model/processchart.php index 0e49391a9e..5751cb941e 100644 --- a/module/chart/test/model/processchart.php +++ b/module/chart/test/model/processchart.php @@ -19,4 +19,6 @@ $chart = new chartTest(); r($chart->processChartTest('decodeLangs')) && p('langs[name]:zh-cn') && e('项目名称'); //测试解密langs字段 r($chart->processChartTest('decodeFilters')) && p('filters[0]:field') && e('closedDate'); //测试解密filters字段 r($chart->processChartTest('decodeSettings')) && p('settings[0]:type') && e('cluBarY'); //测试解密settings字段 -r($chart->processChartTest('sqlNull')) && p('sql') && e('N/A'); //测试sql字段为null的情况 + +r($chart->processChartTest('sqlNull')) && p('sql') && e('~~'); //测试sql字段为null的情况 +r($chart->processChartTest('trimSQL')) && p('sql') && e("SELECT id FROM zt_project WHERE type='program' AND parent=0 AND deleted='0'"); //测试sql字段为null的情况