57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Unit\Services\Attendance;
|
|
|
|
use App\Services\Attendance\AttendancePolicyService;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
class AttendancePolicyServiceTest extends TestCase
|
|
{
|
|
public function test_teacher_can_edit_draft_day(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
|
|
$day = ['status' => 'draft'];
|
|
$user = [
|
|
'roles' => ['teacher'],
|
|
'permissions' => [],
|
|
];
|
|
|
|
$this->assertTrue($service->canEditDay($day, $user));
|
|
}
|
|
|
|
public function test_teacher_cannot_edit_finalized_day(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
|
|
$day = ['status' => 'finalized'];
|
|
$user = [
|
|
'roles' => ['teacher'],
|
|
'permissions' => [],
|
|
];
|
|
|
|
$this->assertFalse($service->canEditDay($day, $user));
|
|
}
|
|
|
|
public function test_admin_can_edit_finalized_day(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
|
|
$day = ['status' => 'finalized'];
|
|
$user = [
|
|
'roles' => ['admin'],
|
|
'permissions' => [],
|
|
];
|
|
|
|
$this->assertTrue($service->canEditDay($day, $user));
|
|
}
|
|
|
|
public function test_is_admin_like_excludes_teacher_roles(): void
|
|
{
|
|
$service = new AttendancePolicyService();
|
|
|
|
$this->assertFalse($service->isAdminLike(['teacher']));
|
|
$this->assertFalse($service->isAdminLike(['teacher_assistant']));
|
|
$this->assertTrue($service->isAdminLike(['principal']));
|
|
}
|
|
} |