diff --git a/test/model/product/create.php b/test/model/product/create.php new file mode 100755 index 0000000000..9fb1e49504 --- /dev/null +++ b/test/model/product/create.php @@ -0,0 +1,56 @@ +#!/usr/bin/env php +create(); +cid=1 +pid=1 + +*/ + +$config = new stdClass(); +$config->createFields->product = array('program' => '', 'name' => '', 'code' => '', 'PO' => '', 'QD' => '', 'RD' => '', 'type' => 'normal', 'status' => 'normal', 'desc' => '', 'acl' => 'private'); + +function createObject($module = '', $param = array()) +{ + global $config; + foreach($config->createFields->$module as $field => $defaultValue) $_POST[$field] = $defaultValue; + + foreach($param as $key => $value) $_POST[$key] = $value; + + global $tester; + $objectModel = $tester->loadModel($module); + $objectID = $objectModel->create(); + unset($_POST); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + $object = $objectModel->getByID($objectID); + return $object; + } +} + +$create1 = array('name' => 'case1', 'code' => 'testcase1'); +$create2 = array('name' => 'case2'); +$create3 = array('name' => 'case1', 'code' => 'testcase1'); +$create4 = array('code' => 'testcase1'); +$create5 = array('name' => 'case3', 'code' => 'testcase3'); +$create6 = array('program' => '3', 'name' => 'case4', 'code' => 'testcase4'); +$create7 = array('program' => '4', 'name' => 'case5', 'code' => 'testcase5', 'type' => 'branch', 'status' => 'closed'); + +r(createObject('product', $create1)) && p('name') && e('case1'); // 测试正常的创建 +r(createObject('product', $create2)) && p('code:0') && e('『code』不能为空。'); // 测试不填产品代号的情况 +r(createObject('product', $create3)) && p('code:0') && e('『code』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试创建重复的产品 +r(createObject('product', $create4)) && p('name:0') && e('『name』不能为空。'); // 测试不填产品名称的情况 +r(createObject('product', $create5)) && p('name,code') && e('case3,testcase3'); // 测试传入name和code +r(createObject('product', $create6)) && p('program,name,code') && e('3,case4,testcase4'); // 测试传入program、name、code +r(createObject('product', $create7)) && p('program,type,status') && e('4,branch,closed'); // 测试传入program、name、code、type、status + +system("./ztest init"); diff --git a/test/model/product/getList.php b/test/model/product/getList.php new file mode 100755 index 0000000000..1a47294f60 --- /dev/null +++ b/test/model/product/getList.php @@ -0,0 +1,91 @@ +#!/usr/bin/env php +getList(); +cid=1 +pid=1 + +*/ + +class Tester +{ + public function __construct($user) + { + global $tester; + su($user); + $this->product = $tester->loadModel('product'); + } + public function getAllProducts($programID) + { + return $this->product->getList($programID); + } + public function getAllProductsCount($programID) + { + return count($this->getAllProducts($programID)); + } + + public function getNoclosedProducts($programID) + { + return $this->product->getList($programID, 'noclosed'); + } + public function getNoclosedProductsCount($programID) + { + return count($this->getNoclosedProducts($programID)); + } + + public function getClosedProducts($programID) + { + return $this->product->getList($programID, 'closed'); + } + public function getClosedProductsCount($programID) + { + return count($this->getClosedProducts($programID)); + } + + public function getInvolvedProducts($programID) + { + return $this->product->getList($programID, 'involved'); + } + public function getInvolvedProductsCount($programID) + { + return count($this->getInvolvedProducts($programID)); + } + + public function getProductsByLine($programID, $line = 0) + { + return $this->product->getList($programID, 'all', 0, $line); + } + public function countProductsByLine($programID, $line = 0) + { + return count($this->getProductsByLine($programID, $line)); + } + + public function getProductList($programID, $status = 'all', $line = 0) + { + return $this->product->getList($programID, $status, 0, $line); + } + public function getProductCount($programID, $status = 'all', $line = 0) + { + return count($this->getProductList($programID, $status, $line)); + } +} + +$adminTester = new Tester('admin'); + +r($adminTester->getAllProductsCount(1)) && p() && e('9'); // 返回项目集1下的产品数量 +r($adminTester->getAllProductsCount(0)) && p() && e('100'); // 测试传入programID=0的情况 +r($adminTester->getAllProductsCount(11)) && p() && e('0'); // 传入不存在的项目集 + +r($adminTester->getNoclosedProductsCount(1)) && p() && e('5'); // 返回项目集1下的未关闭的产品数量 +r($adminTester->getNoclosedProductsCount(0)) && p() && e('60'); // 获取所有的未关闭的产品数量 + +r($adminTester->getClosedProductsCount(1)) && p() && e('4'); // 返回项目集1下的关闭了的产品数量 +r($adminTester->getClosedProductsCount(0)) && p() && e('40'); // 返回所有的未关闭的产品数量 + +r($adminTester->getInvolvedProductsCount(1)) && p() && e('0'); // 返回项目集1下的与当前用户有关系的产品数量 + +r($adminTester->countProductsByLine(1, 1)) && p() && e('9'); // 返回项目集1下产品线1的产品数量 +r($adminTester->countProductsByLine(1, 2)) && p() && e('0'); // 返回项目集1下产品线2的产品数量 diff --git a/test/model/product/getPairs.php b/test/model/product/getPairs.php new file mode 100755 index 0000000000..e6709e2d08 --- /dev/null +++ b/test/model/product/getPairs.php @@ -0,0 +1,86 @@ +#!/usr/bin/env php +getPairs(); +cid=1 +pid=1 + +*/ + +class Tester +{ + public function __construct($user, $orderBy = 'id_desc') + { + global $tester; + su($user); + $this->product = $tester->loadModel('product'); + $this->config = new stdclass(); + $this->config->product->orderBy = $orderBy; + } + + public function getProductPairs($programID) + { + $pairs = $this->product->getPairs('', $programID); + if($pairs == array()) return '没有数据'; + return $pairs; + } + public function getProductPairsCount($programID) + { + $pairsCount = count($this->getProductPairs($programID)); + if($pairsCount == '没有数据') return '0'; + return $pairsCount; + } + + public function getAllPairs($programID) + { + $pairs = $this->product->getPairs('all', $programID); + if($pairs == array()) return '没有数据'; + return $pairs; + } + public function getAllPairsCount($programID) + { + $pairsCount = count($this->getAllPairs($programID)); + if($pairsCount == '没有数据') return '0'; + return $pairsCount; + } + + public function getNoclosedPairs($programID) + { + $pairs = $this->product->getPairs('noclosed', $programID); + if($pairs == array()) return '没有数据'; + return $pairs; + } + public function getNoclosedPairsCount($programID) + { + $pairsCount = count($this->getNoclosedPairs($programID)); + if($pairsCount == '没有数据') return '0'; + return $pairsCount; + } + + public function getProductPairsByOrder($programID, $mode = '', $orderBy = 'id_desc') + { + $this->config->product->orderBy = $orderBy; + $pairs = $this->product->getPairs($mode, $programID); + return checkOrder($pairs, $orderBy); + } +} + +$tester = new Tester('admin'); + +r($tester->getProductPairs(10)) && p('11') && e('正常产品11'); // 测试项目集10下的11号产品 +r($tester->getProductPairs(10)) && p('55') && e('多分支产品55'); // 测试项目集10下的55号产品 +r($tester->getProductPairs(10)) && p('99') && e('多平台产品99'); // 测试项目集10下的99号产品 +r($tester->getProductPairs(11)) && p() && e('没有数据'); // 测试不存在的项目集 + +r($tester->getProductPairsCount(0)) && p() && e('100'); // 返回所有产品的数量 +r($tester->getProductPairsCount(10)) && p() && e('9'); // 返回项目集10下的所有产品 + +r($tester->getNoclosedPairs(5)) && p('6') && e('正常产品6'); // 测试项目集10下的未关闭产品5 +r($tester->getNoclosedPairsCount(10)) && p() && e('5'); // 返回项目集10下的未关闭产品的数量 + +r($tester->getProductPairsByOrder(10, '', 'program_desc')) && p() && e('1'); // 测试顺序program_desc +r($tester->getProductPairsByOrder(11, '', 'program_asc')) && p() && e('1'); // 测试顺序program_asc +r($tester->getProductPairsByOrder(11, '', 'type_desc')) && p() && e('1'); // 测试顺序type_desc diff --git a/test/model/product/update.php b/test/model/product/update.php new file mode 100755 index 0000000000..1e3d078aa3 --- /dev/null +++ b/test/model/product/update.php @@ -0,0 +1,61 @@ +#!/usr/bin/env php +update(); +cid=1 +pid=1 + +*/ + +function updateObject($module, $objectID, $param = array()) +{ + global $tester; + $objectModel = $tester->loadModel($module); + + $object = $objectModel->getById($objectID); + foreach($object as $field => $value) + { + if(in_array($field, array_keys($param))) + { + $_POST[$field] = $param[$field]; + } + else + { + $_POST[$field] = $value; + } + } + + $change = $objectModel->update($objectID); + if($change == array()) $change = '没有数据更新'; + unset($_POST); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + return $change; + } +} + +$case1 = array('name' => 'john'); +$case2 = array('code' => 'newcode1'); +$case3 = array('name' => 'jack', 'code' => 'newcode2'); +$case4 = array('name' => 'jack'); +$case5 = array('code' => 'newcode2'); +$case6 = array('name' => 'jack'); +$case7 = array('code' => 'newcode2'); + +r(updateObject('product', 2, $case1)) && p('0:field,old,new') && e('name,正常产品2,john'); // 测试更新产品名称 +r(updateObject('product', 2, $case2)) && p('0:field,old,new') && e('code,code2,newcode1'); // 测试更新产品代号 +r(updateObject('product', 2, $case3)) && p('0:field,old,new;1:field,old,new') && e('name,john,jack;code,newcode1,newcode2'); // 测试更新产品名称和代号 +r(updateObject('product', 2, $case4)) && p() && e('没有数据更新'); // 测试不更改产品名称 +r(updateObject('product', 2, $case5)) && p() && e('没有数据更新'); // 测试不更改产品代号 +r(updateObject('product', 13, $case6)) && p('name:0') && e('『产品名称』已经有『jack』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试同一项目集下产品名称不能重复 +r(updateObject('product', 13, $case7)) && p('code:0') && e('『产品代号』已经有『newcode2』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试同一项目集下产品代号不能重复 + +system("./ztest init");