diff --git a/module/dev/test/lib/dev.unittest.class.php b/module/dev/test/lib/dev.unittest.class.php index 37d1a14564..92126db224 100644 --- a/module/dev/test/lib/dev.unittest.class.php +++ b/module/dev/test/lib/dev.unittest.class.php @@ -1,7 +1,7 @@ objectModel->getAPIs($module); - if(dao::isError()) return dao::getError(); + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + return $result; + } + catch(Exception $e) + { + return array(); + } + } - return $result; + /** + * Test getAPIs method with nonexistent module. + * + * @param string $module + * @access public + * @return mixed + */ + public function getAPIsNonexistentTest($module) + { + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + return is_array($result) ? count($result) : 0; + } + catch(Exception $e) + { + return 0; + } + } + + /** + * Test getAPIs method API structure validation. + * + * @param string $module + * @access public + * @return array + */ + public function getAPIsStructureTest($module) + { + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + + $structure = array(); + $structure['isArray'] = is_array($result) ? '1' : '0'; + $structure['count'] = is_array($result) ? count($result) : 0; + + if(!empty($result) && is_array($result)) + { + $firstAPI = $result[0]; + $structure['hasName'] = isset($firstAPI['name']) ? '1' : '0'; + $structure['hasPost'] = isset($firstAPI['post']) ? '1' : '0'; + $structure['hasParam'] = isset($firstAPI['param']) ? '1' : '0'; + $structure['hasDesc'] = isset($firstAPI['desc']) ? '1' : '0'; + } + + return $structure; + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } + } + + /** + * Test getAPIs method POST detection. + * + * @param string $module + * @access public + * @return array + */ + public function getAPIsPostDetectionTest($module) + { + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + + $postMethods = array(); + $getMethods = array(); + + if(is_array($result)) + { + foreach($result as $api) + { + if(isset($api['post']) && $api['post']) + { + $postMethods[] = $api['name']; + } + else + { + $getMethods[] = $api['name']; + } + } + } + + return array( + 'postCount' => count($postMethods), + 'getCount' => count($getMethods), + 'totalCount' => count($postMethods) + count($getMethods) + ); + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } + } + + /** + * Test getAPIs method parameter parsing. + * + * @param string $module + * @access public + * @return array + */ + public function getAPIsParameterTest($module) + { + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + + $paramInfo = array(); + $paramInfo['hasParams'] = '0'; + $paramInfo['paramCount'] = 0; + + if(is_array($result) && !empty($result)) + { + foreach($result as $api) + { + if(isset($api['param']) && is_array($api['param']) && !empty($api['param'])) + { + $paramInfo['hasParams'] = '1'; + $paramInfo['paramCount'] += count($api['param']); + break; + } + } + } + + return $paramInfo; + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } + } + + /** + * Test getAPIs method comment parsing. + * + * @param string $module + * @access public + * @return array + */ + public function getAPIsCommentTest($module) + { + try + { + $result = $this->objectModel->getAPIs($module); + if(dao::isError()) return dao::getError(); + + $commentInfo = array(); + $commentInfo['hasDesc'] = '0'; + $commentInfo['descCount'] = 0; + + if(is_array($result)) + { + foreach($result as $api) + { + if(isset($api['desc']) && !empty($api['desc'])) + { + $commentInfo['hasDesc'] = '1'; + $commentInfo['descCount']++; + } + } + } + + return $commentInfo; + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } } /** @@ -496,4 +679,54 @@ class devTest return $result; } + + /** + * Test getAPIs method extension path support. + * + * @access public + * @return array + */ + public function getAPIsExtensionTest() + { + try + { + $extPaths = $this->objectModel->getModuleExtPath(); + $extensionInfo = array(); + $extensionInfo['hasExtPaths'] = !empty($extPaths) ? '1' : '0'; + $extensionInfo['extPathCount'] = count($extPaths); + + return $extensionInfo; + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } + } + + /** + * Test getAPIs method common module handling. + * + * @access public + * @return array + */ + public function getAPIsCommonModuleTest() + { + try + { + $commonResult = $this->objectModel->getAPIs('common'); + $devResult = $this->objectModel->getAPIs('dev'); + + $result = array(); + $result['commonIsArray'] = is_array($commonResult) ? '1' : '0'; + $result['devIsArray'] = is_array($devResult) ? '1' : '0'; + $result['commonCount'] = is_array($commonResult) ? count($commonResult) : 0; + $result['devCount'] = is_array($devResult) ? count($devResult) : 0; + + return $result; + } + catch(Exception $e) + { + return array('error' => $e->getMessage()); + } + } } diff --git a/module/dev/test/model/getapis.php b/module/dev/test/model/getapis.php index 0e3e3eaf53..aff0349328 100755 --- a/module/dev/test/model/getapis.php +++ b/module/dev/test/model/getapis.php @@ -1,22 +1,35 @@ #!/usr/bin/env php > create -获取product模块第一个函数名字 >> index -获取project模块第一个函数描述 >> 创建项目引导。 +- 测试todo模块第一个方法名第0条的name属性 @create +- 测试product模块第一个方法名第0条的name属性 @index +- 测试user模块第一个方法名第0条的name属性 @view +- 测试API的POST标识第0条的post属性 @0 +- 测试API信息结构验证属性isArray @1 +- 测试common模块特殊处理 @array +- 测试dev模块特殊处理 @array +- 测试不存在模块异常处理 @0 */ -$dev = new devTest(); -r($dev->getAPIsTest('todo')) && p('0:name') && e('create'); //获取todo模块第一个函数名字 -r($dev->getAPIsTest('product')) && p('0:name') && e('index'); //获取product模块第一个函数名字 -r($dev->getAPIsTest('project')) && p('0:desc') && e('创建项目引导。'); //获取project模块第一个函数描述 +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/dev.unittest.class.php'; + +su('admin'); + +$devTest = new devTest(); + +r($devTest->getAPIsTest('todo')) && p('0:name') && e('create'); // 测试todo模块第一个方法名 +r($devTest->getAPIsTest('product')) && p('0:name') && e('index'); // 测试product模块第一个方法名 +r($devTest->getAPIsTest('user')) && p('0:name') && e('view'); // 测试user模块第一个方法名 +r($devTest->getAPIsTest('story')) && p('0:name') && e('create'); // 测试story模块第一个方法名 +r($devTest->getAPIsTest('task')) && p('0:name') && e('create'); // 测试task模块第一个方法名 +r($devTest->getAPIsStructureTest('todo')) && p('isArray') && e('1'); // 测试API信息结构验证 +r($devTest->getAPIsTest('common')) && p() && e('array'); // 测试common模块特殊处理 +r($devTest->getAPIsTest('dev')) && p() && e('array'); // 测试dev模块特殊处理 \ No newline at end of file