/dev/null', escapeshellarg(json_encode($get)), escapeshellarg($clave ?? ''), escapeshellarg($code)); return json_decode(shell_exec($cmd) ?: 'null', true); } require_once __DIR__ . '/../config/config.php'; $clave = LAB_SYNC_KEY; // ── 1. Sin clave: afuera ──────────────────────────────────────────────── $r = llamar(['desde' => '2026-08-27'], null); ok('sin la clave responde no-autorizado', is_array($r) && ($r['ok'] ?? true) === false); // ── 2. Con clave, el día del E018 conocido ────────────────────────────── $r = llamar(['desde' => '2026-08-27'], $clave); ok('con la clave responde ok', is_array($r) && ($r['ok'] ?? false) === true); ok('trae turnos de ese día', ($r['total'] ?? 0) > 0); $e018 = null; foreach ($r['turnos'] ?? [] as $t) if ($t['turno'] === 'E018') { $e018 = $t; break; } ok('el E018 está en la respuesta', $e018 !== null); if ($e018) { ok('con sus 10 muestras', count($e018['muestras']) === 10); ok('y sus exámenes en código legacy (49)', count($e018['examenes']) === 49); $mf = null; foreach ($e018['muestras'] as $m) if ($m['tipo'] === 'MF') { $mf = $m; break; } ok('el coprológico aparece RECHAZADO con su motivo', $mf && $mf['estado'] === 'rechazada' && $mf['motivo_rechazo'] === 'la trae mañana'); $ss = null; foreach ($e018['muestras'] as $m) if ($m['tipo'] === 'SS') { $ss = $m; break; } ok('el suero aparece recibido, con quién y cuándo', $ss && $ss['estado'] === 'recibida' && !empty($ss['recibida_por']) && !empty($ss['recibida_at'])); } // ── 3. Filtro por documento ───────────────────────────────────────────── if ($e018) { $r = llamar(['desde' => '2026-08-27', 'documento' => $e018['numero_documento']], $clave); $codigos = array_column($r['turnos'] ?? [], 'turno'); ok('filtrando por documento solo vienen los turnos de ese paciente', in_array('E018', $codigos, true) && count($codigos) === count(array_filter($r['turnos'], fn($t) => $t['numero_documento'] === $e018['numero_documento']))); } // ── 4. Cordura de parámetros ──────────────────────────────────────────── $r = llamar(['desde' => '2026-01-01', 'hasta' => '2026-12-31'], $clave); ok('un rango de un año se rechaza (tope 31 días)', ($r['ok'] ?? true) === false); $r = llamar(['desde' => 'basura'], $clave); ok('una fecha inválida cae al día de hoy sin romperse', ($r['ok'] ?? false) === true); echo "\n" . ($fallos === 0 ? "Todo correcto.\n" : "$fallos pruebas fallaron.\n"); exit($fallos === 0 ? 0 : 1);