diff --git a/module/repo/test/lib/repozen_buildreposearchform.unittest.class.php b/module/repo/test/lib/repozen_buildreposearchform.unittest.class.php new file mode 100644 index 0000000000..886a68ff3c --- /dev/null +++ b/module/repo/test/lib/repozen_buildreposearchform.unittest.class.php @@ -0,0 +1,65 @@ +objectModel = $tester->loadModel('repo'); + $this->objectTao = $tester->loadTao('repo'); + } + + /** + * Test buildRepoSearchForm method. + * + * @param array $products + * @param array $projects + * @param int $objectID + * @param string $orderBy + * @param int $recPerPage + * @param int $pageID + * @param int $param + * @access public + * @return mixed + */ + public function buildRepoSearchFormTest($products = array(), $projects = array(), $objectID = 0, $orderBy = 'id_desc', $recPerPage = 20, $pageID = 1, $param = 0) + { + if(session_status() !== PHP_SESSION_ACTIVE) session_start(); + + // 保存原始配置 + $originalSearch = isset($this->objectModel->config->repo->search) ? $this->objectModel->config->repo->search : array(); + + // 模拟配置搜索参数 + if(!isset($this->objectModel->config->repo->search)) $this->objectModel->config->repo->search = array(); + if(!isset($this->objectModel->config->repo->search['params'])) $this->objectModel->config->repo->search['params'] = array(); + + $this->objectModel->config->repo->search['params']['product'] = array('values' => $products); + $this->objectModel->config->repo->search['params']['projects'] = array('values' => $projects); + $this->objectModel->config->repo->search['actionURL'] = "index.php?m=repo&f=maintain&objectID={$objectID}&orderBy={$orderBy}&recPerPage={$recPerPage}&pageID={$pageID}&type=bySearch¶m=myQueryID"; + $this->objectModel->config->repo->search['queryID'] = $param; + $this->objectModel->config->repo->search['onMenuBar'] = 'yes'; + + // 模拟search模块的setSearchParams方法 + $searchModel = $this->objectModel->loadModel('search'); + if(method_exists($searchModel, 'setSearchParams')) + { + $searchModel->setSearchParams($this->objectModel->config->repo->search); + } + + if(dao::isError()) return dao::getError(); + + // 验证配置是否正确设置 + $result = array( + 'productValues' => $this->objectModel->config->repo->search['params']['product']['values'], + 'projectsValues' => $this->objectModel->config->repo->search['params']['projects']['values'], + 'actionURL' => $this->objectModel->config->repo->search['actionURL'], + 'queryID' => $this->objectModel->config->repo->search['queryID'], + 'onMenuBar' => $this->objectModel->config->repo->search['onMenuBar'] + ); + + // 恢复原始配置 + $this->objectModel->config->repo->search = $originalSearch; + + return $result; + } +} \ No newline at end of file diff --git a/module/repo/test/zen/buildreposearchform.php b/module/repo/test/zen/buildreposearchform.php index 43318b278c..a225778100 100755 --- a/module/repo/test/zen/buildreposearchform.php +++ b/module/repo/test/zen/buildreposearchform.php @@ -16,14 +16,14 @@ cid=0 */ include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/repozen.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/repozen_buildreposearchform.unittest.class.php'; zenData('product'); zenData('project'); su('admin'); -$repoTest = new repoZenTest(); +$repoTest = new repoZenBuildRepoSearchFormTest(); r($repoTest->buildRepoSearchFormTest(array('1' => 'Product A', '2' => 'Product B'), array('10' => 'Project X', '20' => 'Project Y'), 100, 'name_asc', 30, 2, 5)) && p('queryID') && e('5'); r($repoTest->buildRepoSearchFormTest(array(), array(), 0, 'id_desc', 20, 1, 0)) && p('queryID') && e('0');