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
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
<?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
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user