<?php

namespace Tests\Feature;

use Illuminate\Foundation\Testing\DatabaseTransactions;
use Tests\TestCase;
use App\Models\Club;
use App\Models\AdminUser;
use App\Models\Evento;
use App\Models\Equipo;
use App\Models\Jugador;
use App\Models\QrCode;

class TFICorrectionsTest extends TestCase
{
    use DatabaseTransactions;

    /**
     * Test que verifica el ordenamiento descendente en el panel de clubes.
     */
    public function test_clubes_are_ordered_descending_by_id()
    {
        $admin = AdminUser::create([
            'username' => 'superadmin_test',
            'password' => bcrypt('password'),
            'role' => 1 // SuperAdmin
        ]);

        $club1 = Club::create(['nombre' => 'Club Viejo']);
        $club2 = Club::create(['nombre' => 'Club Nuevo']);

        $this->withSession(['admin_logged_in' => true, 'admin_role' => 1]);

        $response = $this->get(route('admin.clubes.index'));

        $response->assertStatus(200);
        
        // El club con mayor ID (el último creado) debería aparecer primero en el HTML
        $response->assertSeeInOrder(['Club Nuevo', 'Club Viejo']);
    }

    /**
     * Test que verifica el bloqueo de botón y validación JS (indirectamente via form attributes).
     */
    public function test_admin_layout_contains_form_validation_script()
    {
        $this->withSession(['admin_logged_in' => true, 'admin_role' => 1]);
        $response = $this->get(route('admin.dashboard'));
        
        $response->assertStatus(200);
        // Verificar que el script de validación inyectado esté presente
        $response->assertSee('handleFormValidation');
    }

    /**
     * Test que verifica la ruta de descarga de QR en PDF.
     */
    public function test_qr_pdf_download_route_is_accessible()
    {
        $club = Club::create(['nombre' => 'Club Test']);
        $jugador = Jugador::create([
            'id_jugador' => 'JUG_TEST_PDF',
            'nombre' => 'Test',
            'apellido' => 'User',
            'documento' => '99999999',
            'email' => 'test@pdf.com',
            'id_club_actual' => $club->id_club
        ]);

        $evento = Evento::create([
            'id_evento' => 'EVE_TEST_PDF',
            'nombre_evento' => 'Evento PDF',
            'fecha_evento' => now()->toDateString(),
            'hora_inicio' => '10:00',
            'hora_fin' => '12:00'
        ]);

        $qr = QrCode::create([
            'id_qr' => 'qr_pdf_test',
            'id_evento' => $evento->id_evento,
            'id_jugador' => $jugador->id_jugador,
            'tipo_qr' => 'invitado',
            'creado' => now()
        ]);

        $this->withSession([
            'user_logged_in' => true,
            'user_tipo' => 'jugador',
            'user_id' => $jugador->id_jugador
        ]);

        $response = $this->get(route('panel.qr.descargar', $qr->id_qr));

        $response->assertStatus(200);
        $response->assertHeader('Content-Type', 'application/pdf');
    }

    /**
     * Test que verifica la visibilidad del manual de usuario.
     */
    public function test_documentation_is_accessible()
    {
        $response = $this->get(route('documentacion.index'));
        
        $response->assertStatus(200);
        $response->assertSee('Manual de Usuario');
    }
}
