40 lines
1.3 KiB
PHP
40 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace Tests\App\Support\SchoolYear;
|
|
|
|
use App\Support\SchoolYear\SchoolYearContext;
|
|
use CodeIgniter\Test\CIUnitTestCase;
|
|
|
|
final class SchoolYearContextTest extends CIUnitTestCase
|
|
{
|
|
public function testActiveContextIsWritableAndNotReadonly(): void
|
|
{
|
|
$context = new SchoolYearContext(4, '2025-2026', 'active', true);
|
|
|
|
$this->assertTrue($context->isActive());
|
|
$this->assertFalse($context->isReadonly());
|
|
$this->assertTrue($context->isExplicitSelection());
|
|
$this->assertSame('2025-2026', $context->yearName());
|
|
}
|
|
|
|
public function testClosedAndArchivedContextsAreReadonly(): void
|
|
{
|
|
$this->assertTrue((new SchoolYearContext(2, '2023-2024', 'closed'))->isReadonly());
|
|
$this->assertTrue((new SchoolYearContext(1, '2022-2023', 'archived'))->isReadonly());
|
|
$this->assertFalse((new SchoolYearContext(5, '2026-2027', 'draft'))->isReadonly());
|
|
}
|
|
|
|
public function testArrayRepresentationIncludesReadonlyState(): void
|
|
{
|
|
$context = new SchoolYearContext(3, '2024-2025', 'closed');
|
|
|
|
$this->assertSame([
|
|
'id' => 3,
|
|
'name' => '2024-2025',
|
|
'status' => 'closed',
|
|
'readonly' => true,
|
|
'explicitSelection' => false,
|
|
], $context->toArray());
|
|
}
|
|
}
|