109 lines
3.2 KiB
PHP
109 lines
3.2 KiB
PHP
<?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');
|
|
}
|
|
}
|