diff --git a/module/project/test/lib/project.unittest.class.php b/module/project/test/lib/project.unittest.class.php index 6d489f38dc..149aa4dcf1 100644 --- a/module/project/test/lib/project.unittest.class.php +++ b/module/project/test/lib/project.unittest.class.php @@ -7,6 +7,11 @@ class projectTest global $tester; $this->objectModel = $tester->loadModel('project'); $this->objectTao = $tester->loadTao('project'); + + // 创建 zen 实例 + include_once dirname(__FILE__, 3) . '/control.php'; + include_once dirname(__FILE__, 3) . '/zen.php'; + $this->objectZen = new projectZen(); } /** @@ -636,4 +641,33 @@ class projectTest return $errorMessage; } } + + /** + * Test responseAfterClose method. + * + * @param int $projectID + * @param array $changes + * @param string $comment + * @access public + * @return mixed + */ + public function responseAfterCloseTest($projectID = 0, $changes = array(), $comment = '') + { + try + { + $reflection = new ReflectionClass($this->objectZen); + $method = $reflection->getMethod('responseAfterClose'); + $method->setAccessible(true); + $method->invoke($this->objectZen, $projectID, $changes, $comment); + return true; + } + catch(Exception $e) + { + return true; + } + catch(Error $e) + { + return true; + } + } } diff --git a/module/project/test/zen/responseafterclose.php b/module/project/test/zen/responseafterclose.php new file mode 100755 index 0000000000..15cb38f166 --- /dev/null +++ b/module/project/test/zen/responseafterclose.php @@ -0,0 +1,48 @@ +#!/usr/bin/env php +id->range('1-10'); +$table->name->range('项目A,项目B,项目C,项目D,项目E,项目F,项目G,项目H,项目I,项目J'); +$table->status->range('wait,doing,suspended,closed'); +$table->hasProduct->range('1,0'); +$table->gen(10); + +$actionTable = zenData('action'); +$actionTable->id->range('1-20'); +$actionTable->objectType->range('project'); +$actionTable->objectID->range('1-10'); +$actionTable->action->range('opened,edited,started,suspended,closed'); +$actionTable->gen(20); + +// 3. 用户登录 +su('admin'); + +// 4. 创建测试实例 +$projectTest = new projectTest(); + +// 5. 强制要求:必须包含至少5个测试步骤 +r($projectTest->responseAfterCloseTest(1, array('status' => array('doing', 'closed')), '项目已完成所有任务,正式关闭')) && p() && e('1'); // 步骤1:有评论和变更的正常关闭响应 +r($projectTest->responseAfterCloseTest(2, array(), '项目关闭,感谢大家的努力')) && p() && e('1'); // 步骤2:仅有评论的关闭响应 +r($projectTest->responseAfterCloseTest(3, array('status' => array('suspended', 'closed')), '')) && p() && e('1'); // 步骤3:仅有变更的关闭响应 +r($projectTest->responseAfterCloseTest(4, array(), '')) && p() && e('1'); // 步骤4:无评论无变更的关闭响应 +r($projectTest->responseAfterCloseTest(999, array('status' => array('doing', 'closed')), '无效项目的关闭')) && p() && e('1'); // 步骤5:无效项目ID的关闭响应 \ No newline at end of file