68 lines
2.1 KiB
PHP
68 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require dirname(__DIR__) . '/vendor/autoload.php';
|
|
|
|
use app\adminapi\validate\tcm\DiagnosisValidate;
|
|
|
|
function diagnosisSceneExpect(bool $condition, string $message): void
|
|
{
|
|
if (!$condition) {
|
|
fwrite(STDERR, "FAIL: {$message}\n");
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
function sceneOnlyFields(DiagnosisValidate $validator): array
|
|
{
|
|
$property = (new ReflectionClass($validator))->getProperty('only');
|
|
$property->setAccessible(true);
|
|
$fields = $property->getValue($validator);
|
|
return is_array($fields) ? $fields : [];
|
|
}
|
|
|
|
$addPayload = [
|
|
'patient_name' => '张三',
|
|
'phone' => '13812345678',
|
|
'gender' => 1,
|
|
'age' => 42,
|
|
'diagnosis_type' => '复诊',
|
|
'local_hospital_name' => '某医院',
|
|
'status' => 1,
|
|
'create_source' => 'admin',
|
|
];
|
|
|
|
$addOnly = sceneOnlyFields((new DiagnosisValidate())->sceneAdd());
|
|
foreach (['task', 'prompt', 'model', 'report_id', 'content', 'diagnosis_id', 'tracking_content', 'id'] as $leaked) {
|
|
diagnosisSceneExpect(
|
|
!in_array($leaked, $addOnly, true),
|
|
"新增诊单场景不得校验 {$leaked}"
|
|
);
|
|
}
|
|
foreach (['patient_name', 'phone', 'gender', 'age', 'diagnosis_type', 'local_hospital_name'] as $required) {
|
|
diagnosisSceneExpect(
|
|
in_array($required, $addOnly, true),
|
|
"新增诊单场景仍应校验 {$required}"
|
|
);
|
|
}
|
|
|
|
$addScene = (new DiagnosisValidate())->scene('add');
|
|
$addOk = $addScene->check($addPayload) === true;
|
|
$addError = $addOk ? '' : json_encode($addScene->getError(), JSON_UNESCAPED_UNICODE);
|
|
diagnosisSceneExpect($addOk, '新增诊单不带 task 应通过校验' . ($addError !== '' ? ": {$addError}" : ''));
|
|
|
|
$editScene = (new DiagnosisValidate())->sceneEdit();
|
|
diagnosisSceneExpect(
|
|
!in_array('task', sceneOnlyFields($editScene), true),
|
|
'编辑诊单场景不得校验 AI 助手任务'
|
|
);
|
|
|
|
$assistantScene = (new DiagnosisValidate())->sceneAiAssistant();
|
|
diagnosisSceneExpect(
|
|
in_array('task', sceneOnlyFields($assistantScene), true),
|
|
'AI 助手场景仍应校验 task'
|
|
);
|
|
|
|
echo "DiagnosisValidateSceneTest passed\n";
|