diff --git a/module/gitlab/model.php b/module/gitlab/model.php index 6709ea5d6e..a7d906d1b8 100644 --- a/module/gitlab/model.php +++ b/module/gitlab/model.php @@ -1509,7 +1509,9 @@ class gitlabModel extends model public function webhookSyncIssue(object $issue): bool { $tableName = zget($this->config->gitlab->objectTables, $issue->objectType, ''); - if($tableName) $this->dao->update($tableName)->data($issue->object)->where('id')->eq($issue->objectID)->exec(); + if(!$tableName) return false; + + $this->dao->update($tableName)->data($issue->object)->where('id')->eq($issue->objectID)->exec(); return !dao::isError(); } diff --git a/module/gitlab/test/gitlab.class.php b/module/gitlab/test/gitlab.class.php index d917e7aab1..45d71b11df 100644 --- a/module/gitlab/test/gitlab.class.php +++ b/module/gitlab/test/gitlab.class.php @@ -429,6 +429,20 @@ class gitlabTest return $result; } + /** + * Test webhookSyncIssue method. + * + * @param object $issue + * @access public + * @return array|object|false + */ + public function webhookSyncIssueTest(object $issue): array|object|false + { + $result = $this->gitlab->webhookSyncIssue($issue); + if(dao::isError()) return dao::getError(); + return $result ? $this->gitlab->loadModel($issue->objectType)->getByID($issue->objectID) : false; + } + public function apiGetTest(int|string $host, string $api) { $result = $this->gitlab->apiGet($host, $api); diff --git a/module/gitlab/test/model/webhooksyncissue.php b/module/gitlab/test/model/webhooksyncissue.php new file mode 100755 index 0000000000..bc122d823f --- /dev/null +++ b/module/gitlab/test/model/webhooksyncissue.php @@ -0,0 +1,46 @@ +#!/usr/bin/env php +gen(5); + +$gitlab = new gitlabTest(); + +$issue = new stdclass(); +$issue->object = new stdclass(); +$issue->objectID = 0; +$issue->objectType = ''; + +r($gitlab->webhookSyncIssueTest($issue)) && p() && e('0'); // 对象类型为空 + +$issue->objectType = 'project'; +r($gitlab->webhookSyncIssueTest($issue)) && p() && e('0'); // 对象类型错误 + +$issue->objectType = 'task'; +r($gitlab->webhookSyncIssueTest($issue)) && p() && e('0'); // 对象ID为空 + +$issue->objectID = 10; +r($gitlab->webhookSyncIssueTest($issue)) && p() && e('0'); // 对象ID错误 + +$issue->objectID = 1; +r($gitlab->webhookSyncIssueTest($issue)) && p('name') && e('开发任务11'); // 对象ID正确 + +$issue->object->name = '任务1'; +r($gitlab->webhookSyncIssueTest($issue)) && p('name') && e('任务1'); // 对象ID正确,更新名称 \ No newline at end of file