* Refactor testcaseModel::isClickable, and its unit test.
This commit is contained in:
@@ -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';
|
||||
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/testcase.class.php';
|
||||
|
||||
zdTable('user')->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 操作
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user