diff --git a/module/product/test/lib/zen.class.php b/module/product/test/lib/zen.class.php index 14d40cef37..2bbe111fa1 100644 --- a/module/product/test/lib/zen.class.php +++ b/module/product/test/lib/zen.class.php @@ -2035,4 +2035,21 @@ class productZenTest extends baseTest if(dao::isError()) return dao::getError(); return $result; } + + /** + * Test getProductPlans method. + * + * @param array $projectProducts + * @param int $projectID + * @param string $storyType + * @param bool $isProjectStory + * @access public + * @return array + */ + public function getProductPlansTest(array $projectProducts = array(), int $projectID = 0, string $storyType = 'story', bool $isProjectStory = false) + { + $result = $this->invokeArgs('getProductPlans', array($projectProducts, $projectID, $storyType, $isProjectStory)); + if(dao::isError()) return dao::getError(); + return $result; + } } diff --git a/module/product/test/zen/getproductplans.php b/module/product/test/zen/getproductplans.php new file mode 100755 index 0000000000..9f22fe1daf --- /dev/null +++ b/module/product/test/zen/getproductplans.php @@ -0,0 +1,79 @@ +#!/usr/bin/env php +id->range('1-10'); +$product->name->range('产品1,产品2,产品3,产品4,产品5,产品6,产品7,产品8,产品9,产品10'); +$product->type->range('normal{10}'); +$product->status->range('normal{10}'); +$product->gen(10); + +$plan = zenData('productplan'); +$plan->id->range('1-20'); +$plan->product->range('1,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10'); +$plan->branch->range('0'); +$plan->title->range('计划1,计划2,计划3,计划4,计划5,计划6,计划7,计划8,计划9,计划10,计划11,计划12,计划13,计划14,计划15,计划16,计划17,计划18,计划19,计划20'); +$plan->status->range('wait{5},doing{13},closed{2}'); +$plan->end->range('`2025-12-31`{18},`2023-12-31`{2}'); +$plan->deleted->range('0'); +$plan->gen(20); + +$project = zenData('project'); +$project->id->range('1-10'); +$project->name->range('项目1,项目2,项目3,项目4,项目5,项目6,项目7,项目8,项目9,项目10'); +$project->type->range('project{10}'); +$project->hasProduct->range('1{10}'); +$project->status->range('doing{10}'); +$project->deleted->range('0'); +$project->gen(10); + +$projectproduct = zenData('projectproduct'); +$projectproduct->project->range('1,1,1,2,2,3,3,4,5,6'); +$projectproduct->product->range('1,2,3,4,5,6,7,8,9,10'); +$projectproduct->gen(10); + +su('admin'); + +$productTest = new productZenTest(); + +$product1 = new stdclass(); +$product1->id = 1; +$product1->name = 'Product 1'; +$product1->type = 'normal'; +$product1->branches = array(); + +$product2 = new stdclass(); +$product2->id = 2; +$product2->name = 'Product 2'; +$product2->type = 'normal'; +$product2->branches = array(); + +$projectProducts1 = array(1 => $product1, 2 => $product2); +$projectProducts2 = array(); + +r($productTest->getProductPlansTest($projectProducts1, 1, 'story', true)) && p('1:3;2:5') && e('计划3 [2025-01-25 ~ 2025-12-31];计划5 [2025-02-08 ~ 2025-12-31]'); // 步骤1:正常情况,isProjectStory为true且storyType为story +r($productTest->getProductPlansTest($projectProducts1, 1, 'story', false)) && p() && e('0'); // 步骤2:isProjectStory为false +r($productTest->getProductPlansTest($projectProducts1, 1, 'requirement', true)) && p() && e('0'); // 步骤3:storyType为requirement时 +r($productTest->getProductPlansTest($projectProducts2, 1, 'story', true)) && p() && e('0'); // 步骤4:projectProducts为空数组 +r($productTest->getProductPlansTest($projectProducts1, 0, 'story', true)) && p('1:3;2:5') && e('计划3 [2025-01-25 ~ 2025-12-31];计划5 [2025-02-08 ~ 2025-12-31]'); // 步骤5:projectID为0时仍返回计划 \ No newline at end of file