Files
saqel/backend/scripts/test_video_review_report_validator.php
T

33 lines
1.5 KiB
PHP

<?php
declare(strict_types=1);
// Pure local validation only; no database, network, writes, or AI calls.
require_once dirname(__DIR__) . '/app/Services/VideoReviewReportValidator.php';
use App\Services\VideoReviewReportValidator;
$good = [
'missing_inputs' => [], 'issues' => [],
'coverage' => [
'truncated' => false, 'unprocessed_intervals' => [],
'section_results' => [['status'=>'covered','evidence_refs'=>['segment-1']]],
'objective_results' => [['status'=>'covered','evidence_refs'=>['segment-1']]],
],
];
$cases = [
[$good, true],
[array_replace($good, ['missing_inputs'=>['transcript']]), false],
[array_replace_recursive($good, ['coverage'=>['truncated'=>true]]), false],
[array_replace_recursive($good, ['coverage'=>['unprocessed_intervals'=>[[0,5]]]]), false],
[array_replace_recursive($good, ['coverage'=>['section_results'=>[['status'=>'missing']]]]), false],
[array_replace($good, ['issues'=>[['severity'=>'major','resolution_status'=>'open']]]), false],
[array_replace($good, ['issues'=>[['severity'=>'critical','resolution_status'=>'resolved']]]), false],
[array_replace($good, ['issues'=>[['severity'=>'critical','resolution_status'=>'resolved','resolution_evidence'=>'reviewer-note-1']]]), true],
];
foreach ($cases as $index => [$report, $expected]) {
if (VideoReviewReportValidator::approvable($report) !== $expected) {
throw new RuntimeException("Report case {$index} failed");
}
}
echo 'PASS ' . count($cases) . " video review report cases\n";