test: add comprehensive unit tests for FeeCalculationService (Closes #45) #90

Merged
shahondin1624 merged 1 commits from feature/issue-45-unit-tests-for-feecalculationservice into main 2026-04-07 13:38:02 +02:00
Owner

Summary

  • Adds FeeCalculationServiceTest.php with 22 PHPUnit test methods covering all 13 test cases from issue #45
  • Tests cover: single member base rate, family discount tiers (1/2/3+ children), frozen rates, Erziehungsberechtigter exclusion, manual override skipping, mixed active/inactive families, cross-year rule changes, error handling, and rule snapshots
  • Adds phpunit.xml configuration for running the test suite

Test Coverage

Test Case Method Status
Single member, no family testSingleMemberNoFamilyGetsBaseRate Covered
Single child in family testSingleChildInFamilyGetsFirstChildRate Covered
Two children in family testTwoChildrenInFamilyGetCorrectRates Covered
Three+ children testThreeOrMoreChildrenGetCatchAllRate Covered
Inactive + frozen rate testInactiveMemberWithFrozenRateUsesFrozenRate Covered
Erziehungsberechtigter testErziehungsberechtigterPaysFee Covered
Manual override skip testBatchCalculateSkipsManualOverrides Covered
Mixed family testMixedFamilyOnlyActiveChildrenCountForDiscount Covered
Mid-year inactive testMemberBecomesInactiveMidYearUsesFrozenRate Covered
No rule for year testNoFeeRuleForYearThrowsException Covered
Cross-year rules testRuleChangeBetweenYearsAppliesCorrectRule Covered
Empty family testEmptyFamilyNoChildrenReturnsBaseRate Covered
Override banking testMemberWithoutFamilyWithOverrideBankingGetsBaseRate Covered

Closes #45

## Summary - Adds `FeeCalculationServiceTest.php` with 22 PHPUnit test methods covering all 13 test cases from issue #45 - Tests cover: single member base rate, family discount tiers (1/2/3+ children), frozen rates, Erziehungsberechtigter exclusion, manual override skipping, mixed active/inactive families, cross-year rule changes, error handling, and rule snapshots - Adds `phpunit.xml` configuration for running the test suite ## Test Coverage | Test Case | Method | Status | |-----------|--------|--------| | Single member, no family | `testSingleMemberNoFamilyGetsBaseRate` | Covered | | Single child in family | `testSingleChildInFamilyGetsFirstChildRate` | Covered | | Two children in family | `testTwoChildrenInFamilyGetCorrectRates` | Covered | | Three+ children | `testThreeOrMoreChildrenGetCatchAllRate` | Covered | | Inactive + frozen rate | `testInactiveMemberWithFrozenRateUsesFrozenRate` | Covered | | Erziehungsberechtigter | `testErziehungsberechtigterPaysFee` | Covered | | Manual override skip | `testBatchCalculateSkipsManualOverrides` | Covered | | Mixed family | `testMixedFamilyOnlyActiveChildrenCountForDiscount` | Covered | | Mid-year inactive | `testMemberBecomesInactiveMidYearUsesFrozenRate` | Covered | | No rule for year | `testNoFeeRuleForYearThrowsException` | Covered | | Cross-year rules | `testRuleChangeBetweenYearsAppliesCorrectRule` | Covered | | Empty family | `testEmptyFamilyNoChildrenReturnsBaseRate` | Covered | | Override banking | `testMemberWithoutFamilyWithOverrideBankingGetsBaseRate` | Covered | Closes #45
shahondin1624 added 1 commit 2026-04-07 13:37:57 +02:00
22 PHPUnit test methods covering all 13 specified test cases:
- Single member/family discount tiers (1/2/3+ children)
- Frozen rates for inactive members
- Erziehungsberechtigter exclusion
- Manual override skipping in batch
- Mixed active/inactive families
- Cross-year rule changes and error handling
- Rule snapshot storage and edge cases

Also adds phpunit.xml configuration for test suite.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
shahondin1624 merged commit 187a2d667e into main 2026-04-07 13:38:02 +02:00
shahondin1624 deleted branch feature/issue-45-unit-tests-for-feecalculationservice 2026-04-07 13:38:02 +02:00
Sign in to join this conversation.