From 83f59965afd26a522f9c8e862ed199d498b349a9 Mon Sep 17 00:00:00 2001 From: liugang Date: Tue, 16 Sep 2025 09:36:47 +0800 Subject: [PATCH] + [misc] Add unit tests for productZen::buildProductForActivate() 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 --- .../test/lib/product.unittest.class.php | 37 +++++++++++++++-- .../test/zen/buildproductforactivate.php | 41 +++++++++++++++++++ 2 files changed, 75 insertions(+), 3 deletions(-) create mode 100755 module/product/test/zen/buildproductforactivate.php diff --git a/module/product/test/lib/product.unittest.class.php b/module/product/test/lib/product.unittest.class.php index 0289c48dad..c22103462d 100644 --- a/module/product/test/lib/product.unittest.class.php +++ b/module/product/test/lib/product.unittest.class.php @@ -4448,16 +4448,47 @@ class productTest { try { $productZen = new productZen(); - + $method = $this->objectZen->getMethod('getActiveStoryTypeForTrack'); $method->setAccessible(true); - + $result = $method->invokeArgs($productZen, array($projectID, $productID)); if(dao::isError()) return dao::getError(); - + return $result; } catch (Exception $e) { return array('error' => $e->getMessage()); } } + + /** + * Test buildProductForActivate method. + * + * @param int $productID + * @param string $vision + * @access public + * @return mixed + */ + public function buildProductForActivateTest(int $productID = 0, string $vision = ''): mixed + { + if($productID <= 0) return array(); + + global $config; + $originalVision = $config->vision; + if($vision) $config->vision = $vision; + + $_POST['uid'] = 'test_uid'; + + $productZen = new productZen(); + $method = $this->objectZen->getMethod('buildProductForActivate'); + $method->setAccessible(true); + + $result = $method->invokeArgs($productZen, array($productID)); + + $config->vision = $originalVision; + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/product/test/zen/buildproductforactivate.php b/module/product/test/zen/buildproductforactivate.php new file mode 100755 index 0000000000..27f2b9b693 --- /dev/null +++ b/module/product/test/zen/buildproductforactivate.php @@ -0,0 +1,41 @@ +#!/usr/bin/env php +id->range('1-5'); +$table->name->range('产品1,产品2,产品3,产品4,产品5'); +$table->status->range('closed{5}'); +$table->desc->range('描述1,描述2,描述3,描述4,描述5'); +$table->gen(5); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$productTest = new productTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +r($productTest->buildProductForActivateTest(1)) && p('status') && e('normal'); // 步骤1:正常激活产品 +r($productTest->buildProductForActivateTest(2, 'or')) && p('status') && e('normal'); // 步骤2:OR视角激活产品 +r($productTest->buildProductForActivateTest(3)) && p('desc') && e('~~'); // 步骤3:激活带描述内容的产品 +r($productTest->buildProductForActivateTest(0)) && p() && e('0'); // 步骤4:激活产品ID为0 +r($productTest->buildProductForActivateTest(-1)) && p() && e('0'); // 步骤5:激活产品ID为负数 \ No newline at end of file