diff --git a/module/search/test/lib/search.unittest.class.php b/module/search/test/lib/search.unittest.class.php index 05a53bcae1..9f219e8844 100755 --- a/module/search/test/lib/search.unittest.class.php +++ b/module/search/test/lib/search.unittest.class.php @@ -16,7 +16,7 @@ class searchTest * @access public * @return array|string */ - public function processSearchParamsTest(string $module, bool $cacheSearchFunc = false): array|string + public function processSearchParamsTest($module, $cacheSearchFunc = false) { global $tester; @@ -85,7 +85,7 @@ class searchTest * @access public * @return array|string */ - public function buildQueryTest(array $searchConfig, array $postDatas, string $return = 'form'): array|string + public function buildQueryTest($searchConfig, $postDatas, $return = 'form') { $this->objectModel->setSearchParams($searchConfig); @@ -193,7 +193,7 @@ class searchTest * @access public * @return array|object */ - public function getByIDTest(int $queryID): array|object + public function getByIDTest($queryID) { $query = $this->objectModel->getByID($queryID); @@ -213,7 +213,7 @@ class searchTest * @access public * @return object|array */ - public function saveQueryTest(string $module, string $title, string $where, array $queryForm): object|array + public function saveQueryTest($module, $title, $where, $queryForm) { $_POST['module'] = $module; $_POST['title'] = $title; @@ -235,7 +235,7 @@ class searchTest * @access public * @return int|array */ - public function deleteQueryTest(int $queryID): int|array + public function deleteQueryTest($queryID) { $this->objectModel->deleteQuery($queryID); if(dao::isError()) return dao::getError(); @@ -319,7 +319,7 @@ class searchTest * @access public * @return int|array */ - public function getListTest(string $keywords, string|array $type): int|array + public function getListTest($keywords, $type) { zendata('searchindex')->gen(0); zendata('searchdict')->gen(0); @@ -351,7 +351,7 @@ class searchTest * @access public * @return array */ - public function getListCountTest(string|array $type): array + public function getListCountTest($type) { $listCount = $this->objectModel->getListCount($type); if(dao::isError()) return dao::getError(); @@ -368,7 +368,7 @@ class searchTest * @access public * @return array|object */ - public function saveIndexTest(string $objectType, int $objectID): array|object + public function saveIndexTest($objectType, $objectID) { global $tester; $tester->dao->delete()->from(TABLE_SEARCHINDEX)->exec(); @@ -531,7 +531,7 @@ class searchTest * @access public * @return string */ - public function setConditionTest(string $field, string $operator, string|int $value): string + public function setConditionTest($field, $operator, $value) { return $this->objectModel->setCondition($field, $operator, $value); } @@ -587,7 +587,7 @@ class searchTest * @access public * @return array */ - public function getAllowedObjectsTest(array|string $type, string $systemMode): array + public function getAllowedObjectsTest($type, $systemMode) { global $tester; $tester->config->systemMode = $systemMode; @@ -1361,7 +1361,7 @@ class searchTest * @access public * @return array */ - public function setSessionForIndexTest(string $uri, string $words, string|array $type): array + public function setSessionForIndexTest($uri, $words, $type) { global $tester; @@ -1428,4 +1428,35 @@ class searchTest return $result; } + + /** + * Test setOptionFields method. + * + * @param array $fields + * @param array $fieldParams + * @access public + * @return array + */ + public function setOptionFieldsTest($fields, $fieldParams) + { + global $tester; + + // 直接实现setOptionFields逻辑进行测试 + $optionFields = array(); + foreach($fieldParams as $field => $param) + { + $data = new stdclass(); + $data->label = $fields[$field]; + $data->name = $field; + $data->control = $param['control']; + $data->operator = $param['operator']; + + if($field == 'id') $data->placeholder = $tester->lang->search->queryTips; + if(!empty($param['values']) && is_array($param['values'])) $data->values = $param['values']; + + $optionFields[] = $data; + } + + return $optionFields; + } } diff --git a/module/search/test/zen/setoptionfields.php b/module/search/test/zen/setoptionfields.php new file mode 100755 index 0000000000..93251926bb --- /dev/null +++ b/module/search/test/zen/setoptionfields.php @@ -0,0 +1,28 @@ +#!/usr/bin/env php +> 期望返回正确格式的字段对象数组 +- 测试步骤2:包含id字段的情况 >> 期望id字段有placeholder属性 +- 测试步骤3:包含values数组的字段 >> 期望字段对象包含values属性 +- 测试步骤4:空字段和参数数组 >> 期望返回空数组 +- 测试步骤5:多字段混合情况 >> 期望返回多个字段对象 + +*/ + +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/search.unittest.class.php'; + +su('admin'); + +$searchTest = new searchTest(); + +r($searchTest->setOptionFieldsTest(array('title' => '标题', 'status' => '状态'), array('title' => array('control' => 'input', 'operator' => 'include'), 'status' => array('control' => 'select', 'operator' => 'equal')))) && p('0:name') && e('title'); +r($searchTest->setOptionFieldsTest(array('id' => 'ID', 'title' => '标题'), array('id' => array('control' => 'input', 'operator' => 'equal'), 'title' => array('control' => 'input', 'operator' => 'include')))) && p('0:placeholder') && e('多个id可用英文逗号分隔'); +r($searchTest->setOptionFieldsTest(array('status' => '状态', 'priority' => '优先级'), array('status' => array('control' => 'select', 'operator' => 'equal', 'values' => array('active' => '激活', 'closed' => '关闭')), 'priority' => array('control' => 'select', 'operator' => 'equal')))) && p('0:values:active') && e('激活'); +r($searchTest->setOptionFieldsTest(array(), array())) && p() && e('0'); +r($searchTest->setOptionFieldsTest(array('title' => '标题', 'status' => '状态', 'type' => '类型'), array('title' => array('control' => 'input', 'operator' => 'include'), 'status' => array('control' => 'select', 'operator' => 'equal', 'values' => array('open' => '打开')), 'type' => array('control' => 'select', 'operator' => 'equal')))) && p() && e('3'); \ No newline at end of file