Files
alrahma_sunday_school/tests/app/Services/FeeCalculationServiceTest.php
T
root 0ac3a8375e
Deploy to Shared Hosting / Shared hosting deploy (push) Failing after 31s
Tests / PHPUnit (push) Failing after 55s
Fix semester context, attendance rosters, and billing workflows
- load global semester helpers consistently and use date-based semester defaults
- fix grading and daily attendance duplicate student/section rows
- keep attendance violations scoped to the current semester by default
- update invoice, refund, discount, payment, and financial aid flows
- add configuration cleanup migrations for duplicate calendar/semester keys
- refresh parent registration/report-card and print request handling
- update related models, services, views, cron notes, and test coverage
2026-08-16 17:41:11 -04:00

52 lines
1.3 KiB
PHP

<?php
namespace Tests\App\Services;
use App\Services\FeeCalculationService;
use CodeIgniter\Test\CIUnitTestCase;
class FeeCalculationServiceTest extends CIUnitTestCase
{
public function testRefundReversesLatestTuitionTierFirst(): void
{
$fees = $this->refundFeeStack(3, 2, 380.0, 280.0);
$this->assertSame([280.0], $fees);
}
public function testRefundKeepsReversingAdditionalFeesBeforeFirstStudentFee(): void
{
$fees = $this->refundFeeStack(3, 0, 380.0, 280.0);
$this->assertSame([280.0, 280.0, 380.0], $fees);
}
public function testSingleStudentWithdrawalRefundsFirstStudentFee(): void
{
$fees = $this->refundFeeStack(1, 0, 380.0, 280.0);
$this->assertSame([380.0], $fees);
}
/**
* @return array<int,float>
*/
private function refundFeeStack(
int $originalStudentCount,
int $remainingStudentCount,
float $firstStudentFee,
float $additionalStudentFee
): array {
$method = new \ReflectionMethod(FeeCalculationService::class, 'reverseTuitionRefundFeeStack');
$method->setAccessible(true);
return $method->invoke(
new FeeCalculationService(),
$originalStudentCount,
$remainingStudentCount,
$firstStudentFee,
$additionalStudentFee
);
}
}