79 lines
3.5 KiB
PHP
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' => 'Widthrwan', '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']);
|
|
}
|
|
}
|