* Refactor projectreleaseModel::isClickable, and add its unit test.

This commit is contained in:
liumengyi
2023-11-28 10:33:25 +08:00
parent 73bb91e4f2
commit 97cc56875f
3 changed files with 82 additions and 3 deletions
+4 -3
View File
@@ -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);
@@ -0,0 +1,59 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/projectrelease.class.php';
zdTable('user')->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 按钮
@@ -1,4 +1,5 @@
<?php
declare(strict_types=1);
class projectreleaseTest
{
public function __construct()
@@ -80,4 +81,22 @@ class projectreleaseTest
$return = "project:{$release->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;
}
}