Files
root 889c037660
Deploy to Shared Hosting / Shared hosting deploy (push) Failing after 48s
Tests / PHPUnit (push) Failing after 1m22s
fix is_new issue with enrollment fixes
2026-08-20 19:57:25 -04:00

79 lines
3.5 KiB
PHP

<?php
namespace Tests\App\Support\Enrollment;
use App\Support\Enrollment\EnrollmentEligibility;
use CodeIgniter\Test\CIUnitTestCase;
final class EnrollmentEligibilityTest extends CIUnitTestCase
{
public function testParentEnrollmentIsBlockedWhenStudentIsEighteenOnSeptemberFirst(): void
{
$message = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'Adult', 'lastname' => 'Student', 'dob' => '2008-09-01'],
['decision' => 'Pass', 'source' => 'manual'],
'2026-2027'
);
$this->assertTrue($message['blocking']);
$this->assertStringContainsString('18 years old or older on September 1', $message['message']);
}
public function testParentEnrollmentIsAllowedWhenStudentTurnsEighteenAfterSeptemberFirst(): void
{
$message = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'Minor', 'lastname' => 'Student', 'dob' => '2008-09-02'],
['decision' => 'Pass', 'source' => 'manual'],
'2026-2027'
);
$this->assertFalse($message['blocking']);
}
public function testBlockedDecisionMessagesUseRequiredAdministrativeText(): void
{
$expelled = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'A', 'lastname' => 'B', 'dob' => '2010-01-01'],
['decision' => 'Expel', 'source' => 'manual'],
'2026-2027'
);
$withdrawn = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'A', 'lastname' => 'B', 'dob' => '2010-01-01'],
['decision' => 'Withdrawn', 'source' => 'manual'],
'2026-2027'
);
$deferred = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'A', 'lastname' => 'B', 'dob' => '2010-01-01'],
['decision' => 'Deferred', 'source' => 'manual'],
'2026-2027'
);
$this->assertTrue($expelled['blocking']);
$this->assertTrue($withdrawn['blocking']);
$this->assertTrue($deferred['blocking']);
$this->assertStringContainsString('A B', $expelled['message']);
$this->assertStringContainsString('A B', $withdrawn['message']);
$this->assertStringContainsString('A B', $deferred['message']);
$this->assertStringContainsString(EnrollmentEligibility::EXPELLED_MESSAGE, $expelled['message']);
$this->assertStringContainsString(EnrollmentEligibility::WITHDRAWN_MESSAGE, $withdrawn['message']);
$this->assertStringContainsString(EnrollmentEligibility::DEFERRED_MESSAGE, $deferred['message']);
$this->assertStringContainsString('decision is expelled', $expelled['message']);
$this->assertStringContainsString('decision is withdrawn', $withdrawn['message']);
$this->assertStringContainsString('decision is deferred', $deferred['message']);
}
public function testPendingSourceUsesMissingDecisionMessageNotDeferredDecisionMessage(): void
{
$message = EnrollmentEligibility::parentDecisionMessage(
['firstname' => 'A', 'lastname' => 'B', 'dob' => '2010-01-01'],
['decision' => '', 'source' => 'pending'],
'2026-2027'
);
$this->assertTrue($message['blocking']);
$this->assertStringContainsString('A B', $message['message']);
$this->assertStringContainsString(EnrollmentEligibility::MISSING_DECISION_MESSAGE, $message['message']);
$this->assertStringNotContainsString(EnrollmentEligibility::DEFERRED_MESSAGE, $message['message']);
}
}