-
Notifications
You must be signed in to change notification settings - Fork 2.3k
FINERACT-2048: Make amount/recurrence fields optional for DUES standing instruction type #5362
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
FINERACT-2048: Make amount/recurrence fields optional for DUES standing instruction type #5362
Conversation
64c6783 to
e79298c
Compare
…ng instruction type
e79298c to
45c1a11
Compare
| .notNull(); | ||
| baseDataValidator.reset().parameter(StandingInstructionApiConstants.recurrenceFrequencyParamName).value(recurrenceFrequency) | ||
| .notNull(); | ||
| if (standingInstructionType == null || !StandingInstructionType.fromInt(standingInstructionType).isDuesAmoutTransfer()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
standingInstructionType == null || !StandingInstructionType.fromInt(standingInstructionType).isDuesAmoutTransfer()
You are using this logic in repeatedly throughout the code change i think you can extract this into a helper function
| baseDataValidator.reset().parameter(StandingInstructionApiConstants.recurrenceFrequencyParamName).value(recurrenceFrequency) | ||
| .notNull(); | ||
| if (standingInstructionType == null || !StandingInstructionType.fromInt(standingInstructionType).isDuesAmoutTransfer()) { | ||
| baseDataValidator.reset().parameter(StandingInstructionApiConstants.recurrenceIntervalParamName).value(recurrenceInterval) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems a little bit complicated. and if conditions can be merged, also of there is any business rule that is implemented make sure to document that helper function
Business rules should be explicit and self-documenting
while the Github Action is not run here is a pro tip you can run the check on your forked repo and add testcase for more coverage
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Aman-Mittal Thank you so much for your guidance and suggestions. I will improve the PR and update shortly.
|
Hi @Aman-Mittal,
|
4a6b71c to
0238e93
Compare
…ng instruction type - Add isAmountRequired() and isRecurrenceRequired() helper methods - Replace repetitive conditional patterns - Add comprehensive JavaDoc - Add unit tests for validation logic - Apply Spotless code formatting
0238e93 to
979f939
Compare
adamsaghy
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
StandingInstructionDataValidatorTest is not testing the validator at all.
I looks like auto generated by AI... poorly.. :(
|
@Monica-CodingWorld - Take a look at the ticket and understand usecase first When standing instruction type selected is "dues", the following fields should be optional since they will be picked from the loan repayment schedule: amount, Before the requirement im assuming that e2e tests have covered the if all fields have the value (this may be the use case where we are trying to update the loan repayment schedule itself // need to check the code) Now you can add cases for following scenarios Open end questions and things need to be checked (what is the existing implementation can you make sense to a non tech person) test case 1 -> amount, (inputted) test case 2 -> amount, (inputted) and so on @adamsaghy Please correct me if i missed something, im just assuming things as example based on what ticket is saying |
Acknowledged - these tests aren't actually exercising validation logic. I'm rewriting them to test constraint violations properly (null checks, boundary values, error messages) rather than just method calls. Will push the updated version shortly. |
Thanks @Aman-Mittal for the detailed scenarios. This is my first unit test, so I want to make sure I understand the requirement correctly before rewriting.
Error handling: If the loan repayment schedule doesn't have these values available, should the validator:
|
|
Yes I think it should be like this. Well these things should be updated and
clarified in the ticket itself.
In case of usecase there can be partial input also. I think based on
requirement if user didn't pass these values then fetched from loan
repayment schedule. If there is no such field available then we may force
user to input.
You should also clarify this on ticket too. The orignal reporter and
someone who is knowledgeable in functional side can answer you more
clearly.
…On Tue, 27 Jan, 2026, 7:30 pm Monica, ***@***.***> wrote:
*Monica-CodingWorld* left a comment (apache/fineract#5362)
<#5362 (comment)>
@Monica-CodingWorld <https://github.com/Monica-CodingWorld> - Take a look
at the ticket and understand usecase first
When standing instruction type selected is "dues", the following fields
should be optional since they will be picked from the loan repayment
schedule:
amount, interval, recurrence frequency, on month day
Before the requirement im assuming that e2e tests have covered the if all
fields have the value (this may be the use case where we are trying to
update the loan repayment schedule itself // need to check the code)
Now you can add cases for following scenarios eg. lets assume user does
not pass any of the values then what should happen? Ans. missing value
should be fetched from the loan repayment schedule
Open end questions and things need to be checked (what is the existing
implementation can you make sense to a non tech person)
test case 1 -> amount, (inputted) interval,(blank from user) recurrence
frequency, (blank from user) on month day , blank from user
test case 2 -> amount, (inputted) interval,(inputted) recurrence
frequency, (blank from user) on month day , blank from user
and so on
@adamsaghy <https://github.com/adamsaghy> Please correct me if i missed
something, im just assuming things as example based on what ticket is saying
Thanks @Aman-Mittal <https://github.com/Aman-Mittal> for the detailed
scenarios. This is my first unit test, so I want to make sure I understand
the requirement correctly before rewriting.
Confirming the logic: When type="dues", if the user provides some of the
four fields (amount, interval, recurrence frequency, onMonthDay) but leaves
others blank, the system should:
Use the user-provided values as-is, and
Fetch only the missing values from the loan repayment schedule?
Or should it be strictly all-or-nothing (either user provides all four, or
system fetches all four from schedule)?
Error handling: If the loan repayment schedule doesn't have these values
available, should the validator:
Fail fast with a validation error here, or
Pass through and let downstream service handle the missing data exception?
I'll check the existing implementation to see if this fallback logic is
already in place or needs to be built. Let me know if there's existing test
coverage I should reference for the "fetch from schedule" behavior.
—
Reply to this email directly, view it on GitHub
<#5362 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AHV6TA67T256D32AMHMMI7L4I5VORAVCNFSM6AAAAACSN7B7YOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTQMBVGM3TANRQHA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
@Aman-Mittal Got it, thanks for the clarification. i'll clarify on ticket as well. |
Description
Modified StandingInstructionDataValidator.java to make amount, interval, recurrence frequency, and on month day fields optional when standing instruction type is "DUES". These fields are automatically picked from the loan repayment schedule for DUES type instructions, so they should not be required during validation.
Changes:
JIRA ticket : https://issues.apache.org/jira/browse/FINERACT-2048
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!
Your assigned reviewer(s) will follow our guidelines for code reviews.