Files
alrahma_sunday_school_api/tests/Feature/Api/V1/BadgeScan/BadgeScanControllerTest.php
T
2026-06-08 22:06:30 -04:00

54 lines
1.5 KiB
PHP

<?php
namespace Tests\Feature\Api\V1\BadgeScan;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\Concerns\CreatesApiTestUsers;
use Tests\TestCase;
class BadgeScanControllerTest extends TestCase
{
use CreatesApiTestUsers;
use RefreshDatabase;
public function test_scan_is_public_but_validates_badge_value(): void
{
$this->postJson('/api/v1/badge_scan/scan', [])
->assertStatus(422)
->assertJsonPath('status', false);
}
public function test_scan_returns_404_for_unrecognized_badge(): void
{
$this->postJson('/api/v1/badge_scan/scan', ['badge_scan' => 'UNKNOWN-BADGE-123'])
->assertNotFound()
->assertJsonPath('status', false);
}
public function test_logs_require_authentication(): void
{
$this->getJson('/api/v1/badge_scan/logs')
->assertStatus(401);
}
public function test_logs_are_forbidden_for_non_staff_roles(): void
{
$parent = $this->createApiUserWithRole('parent');
$this->actingAs($parent, 'api')
->getJson('/api/v1/badge_scan/logs')
->assertStatus(403);
}
public function test_logs_return_data_for_staff(): void
{
$admin = $this->createApiUserWithRole('administrator');
$this->actingAs($admin, 'api')
->getJson('/api/v1/badge_scan/logs')
->assertOk()
->assertJsonPath('status', true)
->assertJsonStructure(['status', 'data' => ['logs', 'meta']]);
}
}