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

use Gestoreasy\Core\Tenant\TenantAdmin;
use Gestoreasy\Core\Tenant\ConnectionManager;
use Gestoreasy\Core\Fiscal\TaxConfig;

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

$tenant = 'default';
TenantAdmin::runMigrations($tenant);
$pdo = ConnectionManager::forTenant($tenant);

// 1) Leitura padrão quando não há config
$cfg0 = TaxConfig::get($pdo);
assertTrue(is_array($cfg0), 'TaxConfig::get deve retornar array');
assertTrue(is_string($cfg0['model_version'] ?? null) && ($cfg0['model_version'] !== ''), 'model_version deve ser string não vazia');

// 2) Persistir configuração e reler
$options = [ 'transition' => ['enable_dual_reporting' => true], 'jurisdiction' => ['uf' => 'RJ'] ];
$saved = TaxConfig::save($pdo, '2026', null, $options);
assertTrue(($saved['model_version'] ?? '') === '2026', 'Save deve retornar versão 2026');

$cfg = TaxConfig::get($pdo);
assertTrue(($cfg['model_version'] ?? '') === '2026', 'Get após save deve ser 2026');
assertTrue(isset($cfg['options']) && is_array($cfg['options']), 'Options deve ser array');
assertTrue(($cfg['options']['transition']['enable_dual_reporting'] ?? false) === true, 'Option transition.enable_dual_reporting==true');

echo "PASS: TaxConfigTest (defaults, save, read).\n";