diff --git a/module/convert/test/lib/convert.unittest.class.php b/module/convert/test/lib/convert.unittest.class.php index f2613da650..bf0fd89896 100644 --- a/module/convert/test/lib/convert.unittest.class.php +++ b/module/convert/test/lib/convert.unittest.class.php @@ -1257,4 +1257,78 @@ class convertTest return $result; } + + /** + * Test getJiraArchivedProject method. + * + * @param array $dataList + * @access public + * @return array + */ + public function getJiraArchivedProjectTest($dataList = array()) + { + try { + // 备份原始session数据 + global $app; + $originalJiraMethod = $app->session->jiraMethod ?? null; + $originalJiraApi = $app->session->jiraApi ?? null; + + // 设置测试session数据 + $app->session->set('jiraMethod', 'db'); + + // 模拟sourceDBH连接 + if(empty($this->objectModel->sourceDBH)) { + $this->objectModel->sourceDBH = $app->dbh; + } + + $result = $this->objectModel->getJiraArchivedProject($dataList); + if(dao::isError()) { + $errors = dao::getError(); + // 恢复原始session数据 + $this->restoreSessionData($originalJiraMethod, $originalJiraApi); + return $errors; + } + + // 恢复原始session数据 + $this->restoreSessionData($originalJiraMethod, $originalJiraApi); + return $result; + } catch (Exception $e) { + // 恢复原始session数据 + if(isset($originalJiraMethod) && isset($originalJiraApi)) { + $this->restoreSessionData($originalJiraMethod, $originalJiraApi); + } + return array(); + } catch (Error $e) { + // 恢复原始session数据 + if(isset($originalJiraMethod) && isset($originalJiraApi)) { + $this->restoreSessionData($originalJiraMethod, $originalJiraApi); + } + return array(); + } + } + + /** + * Restore session data helper method. + * + * @param mixed $originalJiraMethod + * @param mixed $originalJiraApi + * @access private + * @return void + */ + private function restoreSessionData($originalJiraMethod, $originalJiraApi) + { + global $app; + + if($originalJiraMethod !== null) { + $app->session->set('jiraMethod', $originalJiraMethod); + } else { + $app->session->destroy('jiraMethod'); + } + + if($originalJiraApi !== null) { + $app->session->set('jiraApi', $originalJiraApi); + } else { + $app->session->destroy('jiraApi'); + } + } } \ No newline at end of file diff --git a/module/convert/test/model/getjiraarchivedproject.php b/module/convert/test/model/getjiraarchivedproject.php new file mode 100755 index 0000000000..1fdd250f71 --- /dev/null +++ b/module/convert/test/model/getjiraarchivedproject.php @@ -0,0 +1,63 @@ +#!/usr/bin/env php + 1, 'name' => 'Project 1', 'key' => 'PROJ1'), + (object)array('id' => 2, 'name' => 'Project 2', 'key' => 'PROJ2'), + (object)array('id' => 3, 'name' => 'Project 3', 'key' => 'PROJ3') +); + +$emptyProjectList = array(); + +$invalidProjectList = array( + 'invalid_data', + 123, + null +); + +$mixedProjectList = array( + (object)array('id' => 10, 'name' => 'Active Project', 'key' => 'ACTIVE'), + (object)array('id' => 11, 'name' => 'Archived Project', 'key' => 'ARCHIVED'), + (object)array('id' => 12, 'name' => 'Another Project', 'key' => 'ANOTHER') +); + +$largeProjectList = array(); +for($i = 1; $i <= 100; $i++) { + $largeProjectList[] = (object)array( + 'id' => $i, + 'name' => 'Project ' . $i, + 'key' => 'PROJ' . $i + ); +} + +// 5. 强制要求:必须包含至少5个测试步骤 +r($convertTest->getJiraArchivedProjectTest($normalProjectList)) && p() && e('0'); // 步骤1:正常情况 +r($convertTest->getJiraArchivedProjectTest($emptyProjectList)) && p() && e('0'); // 步骤2:空列表 +r($convertTest->getJiraArchivedProjectTest($invalidProjectList)) && p() && e('0'); // 步骤3:无效输入 +r($convertTest->getJiraArchivedProjectTest($mixedProjectList)) && p() && e('0'); // 步骤4:混合数据 +r($convertTest->getJiraArchivedProjectTest($largeProjectList)) && p() && e('0'); // 步骤5:大量数据 \ No newline at end of file