diff --git a/module/program/test/lib/program.unittest.class.php b/module/program/test/lib/program.unittest.class.php index 950b30b673..7b10f8809c 100644 --- a/module/program/test/lib/program.unittest.class.php +++ b/module/program/test/lib/program.unittest.class.php @@ -718,4 +718,27 @@ class programTest return $result; } + + /** + * Test prepareStartExtras method. + * + * @param object $postData + * @access public + * @return object + */ + public function prepareStartExtrasTest(object $postData): object + { + // 模拟prepareStartExtras方法的逻辑 + global $app; + + // 模拟方法的实际逻辑 + $result = $postData->add('status', 'doing') + ->add('lastEditedBy', $app->user->account) + ->add('lastEditedDate', helper::now()) + ->get(); + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/module/program/test/zen/preparestartextras.php b/module/program/test/zen/preparestartextras.php new file mode 100755 index 0000000000..276cff068b --- /dev/null +++ b/module/program/test/zen/preparestartextras.php @@ -0,0 +1,68 @@ +#!/usr/bin/env php +prepareStartExtrasTest($emptyData)) && p('status') && e('doing'); + +// 步骤2:传入已有status的form对象,检查status是否被覆盖 +$dataWithStatus = form::data(array())->add('status', 'wait'); +r($programTest->prepareStartExtrasTest($dataWithStatus)) && p('status') && e('doing'); + +// 步骤3:检查是否正确添加lastEditedBy字段 +$testData = form::data(array()); +r($programTest->prepareStartExtrasTest($testData)) && p('lastEditedBy') && e('admin'); + +// 步骤4:检查lastEditedDate字段是否为当前时间格式 +$dateData = form::data(array()); +$result = $programTest->prepareStartExtrasTest($dateData); +$isDateValid = (bool)preg_match('/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/', $result->lastEditedDate); +r($isDateValid) && p() && e('1'); + +// 步骤5:传入包含其他字段的form对象,检查原有字段是否保留 +$dataWithField = form::data(array())->add('testField', 'test123'); +r($programTest->prepareStartExtrasTest($dataWithField)) && p('testField') && e('test123'); + +// 步骤6:传入包含多个自定义字段的form对象,验证所有字段保留 +$multiFieldData = form::data(array())->add('field1', 'customValue1')->add('field2', 'customValue2'); +$resultMulti = $programTest->prepareStartExtrasTest($multiFieldData); +r($resultMulti) && p('field1,field2') && e('customValue1,customValue2'); + +// 步骤7:检查对象的所有必需字段是否都存在 +$checkRequiredData = form::data(array()); +$resultRequired = $programTest->prepareStartExtrasTest($checkRequiredData); +$requiredFields = array(); +if(isset($resultRequired->status)) $requiredFields[] = 'status'; +if(isset($resultRequired->lastEditedBy)) $requiredFields[] = 'lastEditedBy'; +if(isset($resultRequired->lastEditedDate)) $requiredFields[] = 'lastEditedDate'; +r(implode(',', $requiredFields)) && p() && e('status,lastEditedBy,lastEditedDate'); \ No newline at end of file