This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\App\Support\Enrollment;
|
||||
|
||||
use App\Support\Enrollment\DeliberationDecision;
|
||||
use CodeIgniter\Test\CIUnitTestCase;
|
||||
|
||||
final class DeliberationDecisionTest extends CIUnitTestCase
|
||||
{
|
||||
public function testHistoricalDecisionValuesMapToCanonicalValues(): void
|
||||
{
|
||||
$cases = [
|
||||
'Pass' => DeliberationDecision::PASSED,
|
||||
'Passed' => DeliberationDecision::PASSED,
|
||||
'Repeat Class' => DeliberationDecision::REPEAT_CLASS,
|
||||
'Make-up exam in fall' => DeliberationDecision::MAKE_UP_EXAM,
|
||||
'Expel' => DeliberationDecision::EXPELLED,
|
||||
'Expelled' => DeliberationDecision::EXPELLED,
|
||||
'Withdrawn' => DeliberationDecision::WITHDRAWN,
|
||||
'Withdraw' => DeliberationDecision::WITHDRAWN,
|
||||
'Widthrwan' => DeliberationDecision::WITHDRAWN,
|
||||
'Deferred' => DeliberationDecision::DEFERRED_DECISION,
|
||||
'Deferred decision' => DeliberationDecision::DEFERRED_DECISION,
|
||||
];
|
||||
|
||||
foreach ($cases as $input => $expected) {
|
||||
$this->assertSame($expected, DeliberationDecision::normalize($input), $input);
|
||||
}
|
||||
}
|
||||
|
||||
public function testBlankAndUnknownDecisionsRemainUnmapped(): void
|
||||
{
|
||||
$this->assertNull(DeliberationDecision::normalize(''));
|
||||
$this->assertNull(DeliberationDecision::normalize('Teacher review needed'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?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']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user