<?php
require_once __DIR__ . '/../bootstrap.php';

use Gestoreasy\Core\Kernel;
use Gestoreasy\Core\Http\Request;
use Gestoreasy\Core\Auth\Jwt;

function assertTrue($cond, $msg) { if (!$cond) { echo "FAIL: $msg\n"; exit(1); } }

$kernel = new Kernel();
$tenant = 'default';

echo "=== Teste Automatizado: Apuração View (HTML) ===\n";
// Criar token válido para navegação HTML
$payload = [ 'sub' => 1, 'email' => 'admin@local', 'name' => 'Admin', 'tenant' => $tenant, 'roles' => ['admin'] ];
$token = Jwt::sign($payload);
$headersHtml = [ 'x-tenant-id' => $tenant, 'authorization' => 'Bearer ' . $token ];
$reqView = new Request($headersHtml, [], [], [], 'GET', '/fiscal/apuracao');
$resView = $kernel->handle($reqView);
assertTrue($resView->status === 200, 'GET /fiscal/apuracao autenticado deve retornar 200');
$html = (string)$resView->body;
assertTrue(strpos($html, 'Apuração de Impostos') !== false, 'Página contém título');
assertTrue(strpos($html, 'id="periodInput"') !== false, 'Contém campo período');
assertTrue(strpos($html, 'id="regimeSelect"') !== false, 'Contém seletor de regime');
assertTrue(strpos($html, 'id="btnCalcular"') !== false, 'Contém botão Calcular');
assertTrue(strpos($html, 'id="btnExportCsv"') !== false, 'Contém botão Exportar');
assertTrue(strpos($html, '>ICMS<') !== false, 'Bloco ICMS presente');
assertTrue(strpos($html, 'PIS / COFINS / IPI') !== false, 'Bloco PIS/COFINS/IPI presente');
echo "OK: View validada.\n";

echo "\n=== Teste Automatizado: Apuração API ===\n";
// Usar X-API-Key (bypass RBAC via impersonated=true)
putenv('SPED_API_KEY=TEST-SPED-KEY');
$_ENV['SPED_API_KEY'] = 'TEST-SPED-KEY';
$headersApi = [ 'x-tenant-id' => $tenant, 'x-api-key' => 'TEST-SPED-KEY' ];
$year = (int)date('Y');
$month = (int)date('n');
$body = [ 'year' => $year, 'month' => $month, 'regime' => 'simples', 'perfil' => 'A', 'ind_ativ' => 1, 'cod_fin' => 0 ];
$reqApi = new Request($headersApi, [], $body, [], 'POST', '/api/fiscal/apuracao');
$resApi = $kernel->handle($reqApi);
assertTrue($resApi->status === 200, 'POST /api/fiscal/apuracao com X-API-Key deve retornar 200');
assertTrue(is_array($resApi->body), 'Resposta JSON válida');
assertTrue(!empty($resApi->body['ok']), 'Campo ok=true');
assertTrue(isset($resApi->body['period']['year']) && isset($resApi->body['period']['month']), 'Contém período');
assertTrue(isset($resApi->body['totals']['icms']), 'Contém totais ICMS');
assertTrue(array_key_exists('pis', $resApi->body['totals']) && array_key_exists('cofins', $resApi->body['totals']) && array_key_exists('ipi', $resApi->body['totals']), 'Contém PIS/COFINS/IPI');
echo "OK: API validada.\n";

echo "\n=== Teste Finalizado com sucesso ===\n";
exit(0);