From 1d4d787cf7fa956315eeeaddd52a942528cdf55f Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 8 Nov 2025 01:07:49 +0800 Subject: [PATCH] + [misc] Add unit tests for buildZen::buildBuildForCreate() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- module/build/test/lib/zen.class.php | 13 ++ module/build/test/zen/buildbuildforcreate.php | 134 ++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100755 module/build/test/zen/buildbuildforcreate.php diff --git a/module/build/test/lib/zen.class.php b/module/build/test/lib/zen.class.php index 73c249a9cf..12a1182779 100644 --- a/module/build/test/lib/zen.class.php +++ b/module/build/test/lib/zen.class.php @@ -172,4 +172,17 @@ class buildZenTest extends baseTest 'storyCount' => count($this->instance->view->stories ?? array()) ); } + + /** + * Test buildBuildForCreate method. + * + * @access public + * @return object|array + */ + public function buildBuildForCreateTest() + { + $result = $this->invokeArgs('buildBuildForCreate', []); + if(dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/build/test/zen/buildbuildforcreate.php b/module/build/test/zen/buildbuildforcreate.php new file mode 100755 index 0000000000..d73e3cbefa --- /dev/null +++ b/module/build/test/zen/buildbuildforcreate.php @@ -0,0 +1,134 @@ +#!/usr/bin/env php +gen(5); +zenData('project')->gen(5); +zenData('build')->gen(0); +zenData('system')->gen(5); +zenData('user')->gen(5); + +global $tester; +$tester->app->user = new stdclass(); +$tester->app->user->account = 'admin'; +$tester->app->tab = 'project'; + +su('admin'); + +$buildTest = new buildZenTest(); + +// 测试步骤1: 正常创建版本,使用已有系统 +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 1.0', + 'builder' => 'admin', + 'date' => '2024-01-01', + 'system' => '1', + 'isIntegrated' => 'no', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('name,builder') && e('Build 1.0,admin'); + +// 测试步骤2: isIntegrated为yes时,execution字段非必填 +$_POST = array( + 'product' => '1', + 'execution' => '', + 'name' => 'Build 2.0', + 'builder' => 'admin', + 'date' => '2024-01-02', + 'system' => '1', + 'isIntegrated' => 'yes', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('name,execution') && e('Build 2.0,0'); + +// 测试步骤3: newSystem时,创建新系统并返回systemID +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 3.0', + 'builder' => 'admin', + 'date' => '2024-01-03', + 'system' => '', + 'systemName' => '新建系统', + 'isIntegrated' => 'no', + 'newSystem' => '1' +); +r($buildTest->buildBuildForCreateTest()) && p('name') && e('Build 3.0'); + +// 测试步骤4: 测试createdBy默认值设置 +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 4.0', + 'builder' => 'admin', + 'date' => '2024-01-04', + 'system' => '1', + 'isIntegrated' => 'no', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('createdBy') && e('admin'); + +// 测试步骤5: 测试branch字段为数组时的join过滤 +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 5.0', + 'builder' => 'admin', + 'date' => '2024-01-05', + 'system' => '1', + 'branch' => array('1', '2'), + 'isIntegrated' => 'no', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('branch', '|') && e('1,2'); + +// 测试步骤6: 测试builds字段为数组时的join过滤 +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 6.0', + 'builder' => 'admin', + 'date' => '2024-01-06', + 'system' => '1', + 'builds' => array('1', '2', '3'), + 'isIntegrated' => 'no', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('builds', '|') && e('1,2,3'); + +// 测试步骤7: 测试product字段正确设置 +$_POST = array( + 'product' => '1', + 'execution' => '1', + 'name' => 'Build 7.0', + 'builder' => 'admin', + 'date' => '2024-01-07', + 'system' => '1', + 'isIntegrated' => 'no', + 'newSystem' => '' +); +r($buildTest->buildBuildForCreateTest()) && p('product') && e('1'); \ No newline at end of file