From 97cc56875fb2444a6d6ca45065a3ac2889fca83e Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 28 Nov 2023 10:33:25 +0800 Subject: [PATCH] * Refactor projectreleaseModel::isClickable, and add its unit test. --- module/projectrelease/model.php | 7 ++- .../projectrelease/test/model/isclickable.php | 59 +++++++++++++++++++ .../test/projectrelease.class.php | 19 ++++++ 3 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 module/projectrelease/test/model/isclickable.php diff --git a/module/projectrelease/model.php b/module/projectrelease/model.php index f40e547eb4..1d05eb63b0 100644 --- a/module/projectrelease/model.php +++ b/module/projectrelease/model.php @@ -95,15 +95,16 @@ class projectreleaseModel extends model } /** - * Judge btn is clickable or not. + * 判断按钮是否可以点击。 + * Judge button is clickable or not. * - * @param int $release + * @param object $release * @param string $action * @static * @access public * @return bool */ - public static function isClickable($release, $action) + public static function isClickable(object $release, string $action): bool { $action = strtolower($action); diff --git a/module/projectrelease/test/model/isclickable.php b/module/projectrelease/test/model/isclickable.php new file mode 100644 index 0000000000..36534ab400 --- /dev/null +++ b/module/projectrelease/test/model/isclickable.php @@ -0,0 +1,59 @@ +#!/usr/bin/env php +gen(1); + +su('admin'); + +/** + +title=测试 projectreleaseModel->getLast(); +cid=1 +pid=1 + +*/ + +$object = array(11, 12, 0, 1000); + +$release1 = new stdclass(); +$release1->bugs = null; +$release1->stories = null; +$release1->status = 'terminate'; + +$release2 = new stdclass(); +$release2->bugs = '1'; +$release2->stories = null; +$release2->status = 'normal'; + +$release3 = new stdclass(); +$release3->bugs = null; +$release3->stories = '1'; +$release3->status = 'normal'; + +$release4 = new stdclass(); +$release4->bugs = '1'; +$release4->stories = '1'; +$release4->status = 'normal'; + +$actions = array('notify', 'play', 'pause', 'edit'); + +$projectrelease = new projectreleaseTest(); + +r($projectrelease->isClickableTest($release1, $actions[0])) && p() && e('2'); // 测试获取 没有 需求 和 bug 的发布是否可以点击 notify 按钮 +r($projectrelease->isClickableTest($release2, $actions[0])) && p() && e('1'); // 测试获取 有 需求 没有 bug 的发布是否可以点击 notify 按钮 +r($projectrelease->isClickableTest($release3, $actions[0])) && p() && e('1'); // 测试获取 没有 需求 有 bug 的发布是否可以点击 notify 按钮 +r($projectrelease->isClickableTest($release4, $actions[0])) && p() && e('1'); // 测试获取 有 需求 和 bug 的发布是否可以点击 notify 按钮 + +r($projectrelease->isClickableTest($release1, $actions[1])) && p() && e('1'); // 测试获取 状态为 terminate 的发布是否可以点击 play 按钮 +r($projectrelease->isClickableTest($release2, $actions[1])) && p() && e('2'); // 测试获取 状态为 normal 的发布是否可以点击 play 按钮 + +r($projectrelease->isClickableTest($release1, $actions[2])) && p() && e('2'); // 测试获取 状态为 terminate 的发布是否可以点击 pause 按钮 +r($projectrelease->isClickableTest($release2, $actions[2])) && p() && e('1'); // 测试获取 状态为 normal 的发布是否可以点击 pause 按钮 + +r($projectrelease->isClickableTest($release1, $actions[3])) && p() && e('1'); // 测试获取 release 1 的发布是否可以点击 edit 按钮 +r($projectrelease->isClickableTest($release2, $actions[3])) && p() && e('1'); // 测试获取 release 2 的发布是否可以点击 edit 按钮 +r($projectrelease->isClickableTest($release3, $actions[3])) && p() && e('1'); // 测试获取 release 3 的发布是否可以点击 edit 按钮 +r($projectrelease->isClickableTest($release4, $actions[3])) && p() && e('1'); // 测试获取 release 4 的发布是否可以点击 edit 按钮 diff --git a/module/projectrelease/test/projectrelease.class.php b/module/projectrelease/test/projectrelease.class.php index 45887101e9..100652b9d9 100644 --- a/module/projectrelease/test/projectrelease.class.php +++ b/module/projectrelease/test/projectrelease.class.php @@ -1,4 +1,5 @@ project} branch:{$release->branch} build:{$release->build} branchName:{$release->branchName} buildInfos:" . implode(',', array_column($release->buildInfos, 'name')); return $return; } + + /** + * 测试获取项目的最新发布。 + * Test get last release. + * + * @param object $release + * @param string $action + * @access public + * @return int|array + */ + public function isClickableTest(object $release, string $action): int|array + { + $isClickable = $this->objectModel->isClickable($release, $action); + + if(dao::isError()) return dao::getError(); + + return $isClickable ? 1 : 2; + } }