+ [misc] Add unit tests for screenModel::isFilterChange() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:06:22 +08:00
co-authored by Claude
parent 74b8f701d7
commit 71d751f15f
2 changed files with 90 additions and 0 deletions
@@ -587,4 +587,20 @@ class screenTest
return $result;
}
/**
* Test isFilterChange method.
*
* @param mixed $oldFilters
* @param mixed $latestFilters
* @access public
* @return bool
*/
public function isFilterChangeTest($oldFilters = null, $latestFilters = null)
{
$result = $this->objectModel->isFilterChange($oldFilters, $latestFilters);
if(dao::isError()) return dao::getError();
return $result;
}
}
+74
View File
@@ -0,0 +1,74 @@
#!/usr/bin/env php
<?php
/**
title=测试 screenModel::isFilterChange();
timeout=0
cid=0
- 步骤1:最新过滤器为空 @1
- 步骤2:过滤器数量不同 @1
- 步骤3:相同的过滤器数组 @0
- 步骤4:过滤器field字段不同 @1
- 步骤5:查询筛选器from字段不同 @1
- 步骤6:select类型的typeOption字段不同 @1
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/screen.unittest.class.php';
// 2. 用户登录
su('admin');
// 3. 创建测试实例
$screenTest = new screenTest();
// 4. 准备测试数据
// 构造标准过滤器对象
$filter1 = new stdClass();
$filter1->field = 'status';
$filter1->name = '状态';
$filter1->type = 'select';
$filter2 = new stdClass();
$filter2->field = 'priority';
$filter2->name = '优先级';
$filter2->type = 'input';
$filter3 = new stdClass();
$filter3->field = 'assignedTo';
$filter3->name = '指派给';
$filter3->type = 'select';
$filter3->from = 'query';
$filter3->typeOption = 'option1';
$filter4 = new stdClass();
$filter4->field = 'assignedTo';
$filter4->name = '指派给';
$filter4->type = 'select';
$filter4->from = 'query';
$filter4->typeOption = 'option2';
$filter5 = new stdClass();
$filter5->field = 'assignedTo';
$filter5->name = '指派给';
$filter5->type = 'select';
$oldFilters = array($filter1, $filter2);
$latestFilters = array($filter1, $filter2);
$differentCountFilters = array($filter1);
$differentFieldFilters = array($filter3, $filter2);
$queryFilterOld = array($filter3);
$queryFilterNew = array($filter5);
$differentTypeOptionFilters = array($filter4);
// 5. 🔴 强制要求:必须包含至少5个测试步骤
r($screenTest->isFilterChangeTest($oldFilters, array())) && p() && e('1'); // 步骤1:最新过滤器为空
r($screenTest->isFilterChangeTest($oldFilters, $differentCountFilters)) && p() && e('1'); // 步骤2:过滤器数量不同
r($screenTest->isFilterChangeTest($oldFilters, $latestFilters)) && p() && e('0'); // 步骤3:相同的过滤器数组
r($screenTest->isFilterChangeTest($oldFilters, $differentFieldFilters)) && p() && e('1'); // 步骤4:过滤器field字段不同
r($screenTest->isFilterChangeTest($queryFilterOld, $queryFilterNew)) && p() && e('1'); // 步骤5:查询筛选器from字段不同
r($screenTest->isFilterChangeTest($queryFilterOld, $differentTypeOptionFilters)) && p() && e('1'); // 步骤6:select类型的typeOption字段不同