KRYSTALM7 opened a new pull request, #35:
URL: https://github.com/apache/fineract-loan-origination/pull/35
## Description
Adds comprehensive unit test coverage for the credit scoring factors and
weights configuration introduced in #29.
### Tests Added
- **ScoringWeightsPropertiesTest** — startup validation logic, default
weight values, custom weight combinations summing to 100, default threshold
values.
- **IncomeLoanRatioFactorTest** — ratio tiers, zero/negative/null
denominator guards (no ArithmeticException), custom threshold overrides, very
small non-zero income fractions, points never exceed maxPoints.
- **DebtBurdenFactorTest** — ratio tiers, zero/negative/null income guards,
null obligations treated as best case, rounding precision with small configured
maxPoints, custom threshold overrides.
- **EmploymentStabilityFactorTest** — status/duration tier combinations,
null/blank status and duration handling, case-insensitive status matching.
- **RepaymentHistoryFactorTest** — first-time borrower midpoint scoring,
ratio tiers, negative count handling, rounding precision with small maxPoints.
- **LoanPurposeRiskFactorTest** — all purpose risk categories,
null/blank/unrecognised purpose handling, case-insensitive matching.
### Coverage Focus
Tests specifically target the edge cases raised in review on #29 —
division-by-zero guards, BigDecimal rounding precision, and configurable
threshold behavior — to verify those fixes hold under a range of inputs, not
just the happy path.
All tests are pure unit tests with no Spring context and no database; each
factor is instantiated directly with a `ScoringWeightsProperties` instance, so
the full suite runs in milliseconds.
---
Please make sure these boxes are checked before submitting your pull request
- thanks!
- [x] Write the commit message as per [our
guidelines](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests)
- [x] Acknowledge that we will not review PRs that are not passing the build
("green") - it is your responsibility to get a proposed PR to pass the build,
not primarily the project's maintainers.
- [x] Create/update [unit or integration
tests](https://fineract.apache.org/docs/current/#_testing) for verifying the
changes made.
- [x] Follow our [coding
conventions](https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions).
- [ ] Add required Swagger annotation and update API documentation at
fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with
details of any API changes (Not Applicable)
- [x] [This PR must not be a "code
dump"](https://cwiki.apache.org/confluence/display/FINERACT/Pull+Request+Size+Limit).
Large changes can be made in a branch, with assistance.
Ask for help on the [developer mailing
list](https://fineract.apache.org/#contribute).
Your assigned reviewer(s) will follow our [guidelines for code
reviews](https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide).
### Related
- JIRA: https://issues.apache.org/jira/browse/FINERACT-2442
- Tests cover factors merged in #29
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]