@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\App\Services;
|
||||
|
||||
use App\Services\SchoolYearWriteGuard;
|
||||
use App\Support\SchoolYear\SchoolYearContext;
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
use RuntimeException;
|
||||
|
||||
final class SchoolYearWriteGuardTest extends CIUnitTestCase
|
||||
{
|
||||
public function testAllowsActiveYearWrites(): void
|
||||
{
|
||||
$guard = new SchoolYearWriteGuard();
|
||||
|
||||
$guard->assertWritable(new SchoolYearContext(4, '2025-2026', 'active'));
|
||||
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
public function testAllowsDraftOnlyWhenExplicitlyAllowedForAdmin(): void
|
||||
{
|
||||
$guard = new SchoolYearWriteGuard();
|
||||
|
||||
$guard->assertWritable(
|
||||
new SchoolYearContext(5, '2026-2027', 'draft'),
|
||||
allowDraftForAdmin: true,
|
||||
isAdmin: true
|
||||
);
|
||||
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
|
||||
public function testRejectsClosedYearWrites(): void
|
||||
{
|
||||
$this->expectException(RuntimeException::class);
|
||||
|
||||
(new SchoolYearWriteGuard())->assertWritable(
|
||||
new SchoolYearContext(3, '2024-2025', 'closed')
|
||||
);
|
||||
}
|
||||
|
||||
public function testRejectsDraftYearWritesByDefault(): void
|
||||
{
|
||||
$this->expectException(RuntimeException::class);
|
||||
|
||||
(new SchoolYearWriteGuard())->assertWritable(
|
||||
new SchoolYearContext(5, '2026-2027', 'draft')
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user