From df7ccaded9156b79e0ff0f79bc7cbc9db3133739 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Thu, 21 Sep 2023 15:40:30 +0800 Subject: [PATCH] * Refactor testcaseModel::isClickable, and its unit test. --- module/testcase/model.php | 7 +- module/testcase/test/model/isclickable.php | 94 ++++++++++++++++++++++ module/testcase/test/testcase.class.php | 27 +++++++ 3 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 module/testcase/test/model/isclickable.php diff --git a/module/testcase/model.php b/module/testcase/model.php index c649565482..0fe841315a 100644 --- a/module/testcase/model.php +++ b/module/testcase/model.php @@ -1113,6 +1113,7 @@ class testcaseModel extends model } /** + * 判断当前动作是否可以点击。 * Adjust the action is clickable. * * @param object $case @@ -1129,9 +1130,9 @@ class testcaseModel extends model $action = strtolower($action); - if($action == 'confirmchange') return $case->caseStatus != 'wait' && $case->version < $case->caseVersion; - if($action == 'confirmstorychange') return $case->needconfirm || (isset($case->browseType) && $case->browseType == 'needconfirm'); - if($action == 'createbug') return !empty($case->caseFails) && $case->caseFails > 0; + if($action == 'confirmchange') return isset($case->caseStatus) && isset($case->caseVersion) && $case->caseStatus != 'wait' && $case->version < $case->caseVersion; + if($action == 'confirmstorychange') return !empty($case->needconfirm) || (isset($case->browseType) && $case->browseType == 'needconfirm'); + if($action == 'createbug') return isset($case->caseFails) && $case->caseFails > 0; if($action == 'review') return ($config->testcase->needReview || !empty($config->testcase->forceReview)) && (isset($case->caseStatus) ? $case->caseStatus == 'wait' : $case->status == 'wait'); if($action == 'showscript') return $case->auto == 'auto'; diff --git a/module/testcase/test/model/isclickable.php b/module/testcase/test/model/isclickable.php new file mode 100644 index 0000000000..904bfb2316 --- /dev/null +++ b/module/testcase/test/model/isclickable.php @@ -0,0 +1,94 @@ +#!/usr/bin/env php +gen('1'); +zdTable('case')->gen('5'); +zdTable('product')->gen('42'); + +su('admin'); + +/** + +title=测试 testcaseModel->isClickable(); +cid=1 +pid=1 + +*/ + +$waitCaseStatus = array('caseStatus' => 'wait'); +$normalCaseStatus = array('caseStatus' => 'normal'); +$zeroCaseVersion = array('caseVersion' => 0); +$tenCaseVersion = array('caseVersion' => 10); +$needConfirm = array('needconfirm' => true); +$notNeedConfirm = array('needconfirm' => false); +$confirmType = array('browseType' => 'needconfirm'); +$normalType = array('browseType' => 'normal'); +$zeroCaseFails = array('caseFails' => 0); +$tenCaseFails = array('caseFails' => 10); +$waitStatus = array('status' => 'wait'); +$normalStatus = array('status' => 'normal'); +$autoAuto = array('auto' => 'auto'); +$noAuto = array('auto' => 'no'); + +$actionList = array('confirmchange', 'confirmstorychange', 'createbug', 'review', 'showscript', 'edit'); + +$needReview = array('needReview' => 1); +$forceReview = array('forceReview' => 1); + +$testcase = new testcaseTest(); + +r($testcase->isClickableTest($actionList[0])) && p() && e('0'); // 测试用例1,是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[1])) && p() && e('0'); // 测试用例1,是否可以进行 confirmstorychange 操作 +r($testcase->isClickableTest($actionList[2])) && p() && e('0'); // 测试用例1,是否可以进行 createbug 操作 +r($testcase->isClickableTest($actionList[3])) && p() && e('0'); // 测试用例1,是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[4])) && p() && e('0'); // 测试用例1,是否可以进行 showscript 操作 +r($testcase->isClickableTest($actionList[5])) && p() && e('1'); // 测试用例1,是否可以进行 edit 操作 + +r($testcase->isClickableTest($actionList[0], $waitCaseStatus)) && p() && e('0'); // 测试 caseStatus wait 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], $normalCaseStatus)) && p() && e('0'); // 测试 caseStatus normal 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], $zeroCaseVersion)) && p() && e('0'); // 测试 caseVersion 0 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], $tenCaseVersion)) && p() && e('0'); // 测试 caseVersion 10 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], array_merge($waitCaseStatus, $zeroCaseVersion))) && p() && e('0'); // 测试 caseStatus wait caseVersion 0 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], array_merge($waitCaseStatus, $tenCaseVersion))) && p() && e('0'); // 测试 caseStatus wait caseVersion 10 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], array_merge($normalCaseStatus, $zeroCaseVersion))) && p() && e('0'); // 测试 caseStatus normal caseVersion 0 是否可以进行 confirmchange 操作 +r($testcase->isClickableTest($actionList[0], array_merge($normalCaseStatus, $tenCaseVersion))) && p() && e('1'); // 测试 caseStatus normal caseVersion 10 是否可以进行 confirmchange 操作 + +r($testcase->isClickableTest($actionList[1], $needConfirm)) && p() && e('1'); // 测试 needConfirm true browseType 空 是否可以进行 confirmstorychange 操作 +r($testcase->isClickableTest($actionList[1], $confirmType)) && p() && e('1'); // 测试 browseType needConfirm 是否可以进行 confirmstorychange 操作 +r($testcase->isClickableTest($actionList[1], $normalType)) && p() && e('0'); // 测试 browseType normal 是否可以进行 confirmstorychange 操作 +r($testcase->isClickableTest($actionList[1], array_merge($needConfirm, $confirmType))) && p() && e('1'); // 测试 needConfirm true browseType needConfirm 是否可以进行 confirmstorychange 操作 +r($testcase->isClickableTest($actionList[1], array_merge($needConfirm, $normalType))) && p() && e('1'); // 测试 needConfirm true browseType normal 是否可以进行 confirmstorychange 操作 + +r($testcase->isClickableTest($actionList[2], $zeroCaseFails)) && p() && e('0'); // 测试 caseFails 0 是否可以进行 createbug 操作 +r($testcase->isClickableTest($actionList[2], $tenCaseFails)) && p() && e('1'); // 测试 caseFails 10 是否可以进行 createbug 操作 + +r($testcase->isClickableTest($actionList[3], $waitStatus)) && p() && e('0'); // 测试 status wait 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $normalStatus)) && p() && e('0'); // 测试 status normal 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $waitCaseStatus)) && p() && e('0'); // 测试 caseStatus wait 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $normalCaseStatus)) && p() && e('0'); // 测试 caseStatus normal 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array(), $needReview)) && p() && e('1'); // 测试 needReview 1 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array(), $forceReview)) && p() && e('1'); // 测试 forceReview 1 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array(), array_merge($needReview, $forceReview))) && p() && e('1'); // 测试 needReview 1 forceReview 1 是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $waitStatus, $needReview)) && p() && e('1'); // 测试 status wait needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $waitStatus, $forceReview)) && p() && e('1'); // 测试 status wait forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $waitStatus, array_merge($needReview, $forceReview))) && p() && e('1'); // 测试 status wait needReview 1 forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $normalStatus, $needReview)) && p() && e('0'); // 测试 status normal needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $normalStatus, $forceReview)) && p() && e('0'); // 测试 status normal forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], $normalStatus, array_merge($needReview, $forceReview))) && p() && e('0'); // 测试 status normal needReview 1 forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $waitCaseStatus), $needReview)) && p() && e('1'); // 测试 status wait caseStatus wait needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $waitCaseStatus), $forceReview)) && p() && e('1'); // 测试 status wait caseStatus wait forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $waitCaseStatus), array_merge($needReview, $forceReview))) && p() && e('1'); // 测试 status wait caseStatus wait needReview 1 forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $normalCaseStatus), $needReview)) && p() && e('0'); // 测试 status wait caseStatus normal needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $normalCaseStatus), $forceReview)) && p() && e('0'); // 测试 status wait caseStatus normal forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($waitStatus, $normalCaseStatus), array_merge($needReview, $forceReview))) && p() && e('0'); // 测试 status wait caseStatus normal needReview 1 forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $waitCaseStatus), $needReview)) && p() && e('1'); // 测试 status normal caseStatus wait needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $waitCaseStatus), $forceReview)) && p() && e('1'); // 测试 status normal caseStatus wait forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $waitCaseStatus), array_merge($needReview, $forceReview))) && p() && e('1'); // 测试 status normal caseStatus wait needReview 1 forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $normalCaseStatus), $needReview)) && p() && e('0'); // 测试 status normal caseStatus normal needReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $normalCaseStatus), $forceReview)) && p() && e('0'); // 测试 status normal caseStatus normal forceReview 1是否可以进行 review 操作 +r($testcase->isClickableTest($actionList[3], array_merge($normalStatus, $normalCaseStatus), array_merge($needReview, $forceReview))) && p() && e('0'); // 测试 status normal caseStatus normal needReview 1 forceReview 1是否可以进行 review 操作 + +r($testcase->isClickableTest($actionList[4], $autoAuto)) && p() && e('1'); // 测试 auto auto 是否可以进行 showscript 操作 +r($testcase->isClickableTest($actionList[4], $noAuto)) && p() && e('0'); // 测试 auto no 是否可以进行 showscript 操作 diff --git a/module/testcase/test/testcase.class.php b/module/testcase/test/testcase.class.php index 092e018d68..f7d388ce42 100755 --- a/module/testcase/test/testcase.class.php +++ b/module/testcase/test/testcase.class.php @@ -1720,4 +1720,31 @@ class testcaseTest if(dao::isError()) return dao::getError(); return implode(',', array_keys($modules)); } + + /** + * 测试判断动作是否可点击。 + * Test adjust the action is clickable. + * + * @param string $action + * @param array $params + * @param array $configs + * @access public + * @return array|int + */ + public function isClickableTest(string $action, array $params = array(), array $configs = array()): array|int + { + global $tester; + $tester->config->testcase->needReview = false; + $tester->config->testcase->forceReview = false; + foreach($configs as $key => $value) $tester->config->testcase->{$key} = $value; + + $case = $this->objectModel->getByID(1); + foreach($params as $key => $value) $case->{$key} = $value; + + $isClickable = $this->objectModel->isClickable($case, $action); + + if(dao::isError()) return dao::getError(); + + return $isClickable ? 1 : 0; + } }