51 lines
1.3 KiB
PHP
51 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Services\Attendance;
|
|
|
|
use App\Services\Attendance\AttendancePolicyService;
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Tests\TestCase;
|
|
|
|
class AttendancePolicyServiceTest extends TestCase
|
|
{
|
|
use RefreshDatabase;
|
|
|
|
public function test_teacher_can_edit_draft(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
$allowed = $service->canEditDay(
|
|
['status' => 'draft'],
|
|
['roles' => ['Teacher'], 'permissions' => []]
|
|
);
|
|
|
|
$this->assertTrue($allowed);
|
|
}
|
|
|
|
public function test_teacher_cannot_edit_finalized(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
$allowed = $service->canEditDay(
|
|
['status' => 'finalized'],
|
|
['roles' => ['Teacher'], 'permissions' => []]
|
|
);
|
|
|
|
$this->assertFalse($allowed);
|
|
}
|
|
|
|
public function test_admin_like_by_permission(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
$isAdmin = $service->isAdminLike([], ['attendance.manage.daily']);
|
|
|
|
$this->assertTrue($isAdmin);
|
|
}
|
|
|
|
public function test_can_manage_early_dismissals_for_teacher(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
$allowed = $service->canManageEarlyDismissals(['Teacher']);
|
|
|
|
$this->assertTrue($allowed);
|
|
}
|
|
}
|