Krishna Mewara created FINERACT-2779:
----------------------------------------
Summary: Remove REST-assured and hand-built JSON from
FeignLoanHelper
Key: FINERACT-2779
URL: https://issues.apache.org/jira/browse/FINERACT-2779
Project: Apache Fineract
Issue Type: Improvement
Components: Test
Affects Versions: 1.15.0
Reporter: Krishna Mewara
Assignee: Krishna Mewara
This refactor addresses issues in {{{}FeignLoanHelper{}}}, which previously
relied on REST-assured for some operations and hand-built JSON strings for
others. This defeated the purpose of the Feign migration, as JSON was parsed
straight back into a request model before being sent-costing unnecessary round
trips and losing compile-time safety.
h3. Key Test Modifications
* *REST-assured completely removed:* The loan apply, approve, disburse,
disburse-to-savings, and reschedule paths no longer build their own request
specs or use hard-coded URLs. They now use the generated Feign client with
typed request models. There are zero REST-assured references left anywhere
under the Feign test folder.
* *JSON loan product paths removed:* Methods that relied on deserializing JSON
strings (e.g., {{{}createLoanProductFromJson{}}}, {{{}getLoanProductError{}}},
and {{{}getLoanProductId{}}}) have been eliminated.
* *Typed request builders introduced:* {{LoanProductTestBuilder}} now offers
{{{}buildRequest(){}}}, a typed counterpart to {{{}build(){}}}, allowing
callers to pass the request model directly. The legacy {{build()}} method
remains strictly for the older REST-assured-era tests.
* *Dead builder keys dropped:* Six keys emitted by the builder have been
removed because they have no corresponding field on {{PostLoanProductsRequest}}
({{{}syncExpectedWithDisbursementDate{}}}, {{{}mandatoryGuarantee{}}},
{{{}minimumGuaranteeFromGuarantor{}}}, {{{}minimumGuaranteeFromOwnFunds{}}},
{{{}minimumGap{}}}, {{{}maximumGap{}}}). The old JSON path dropped them as
unknown properties anyway, so leaving them unset sends the exact same body
without requiring a schema change.
h3. Production Code & Swagger DTO Changes
Because the typed client cannot send a field the spec does not declare, two
Swagger DTOs have been updated. Every field listed below is actively used by a
test in this change.
*{{LoansApiResourceSwagger.PostLoansRequest}}* Gains the following fields:
* {{isFloatingInterestRate}}
* {{interestRateDifferential}}
* {{calendarId}}
* {{syncDisbursementWithMeeting}}
* {{interestChargedFromDate}}
* {{createStandingInstructionAtDisbursement}}
*{{RescheduleLoansApiResourceSwagger}}*
* *Added field:* {{recalculateInterest}}
* *Data type corrections:* Corrected {{repaymentsStartingFromDate}} and
{{expectedDisbursementDate}} from {{LocalDate}} to {{{}String{}}}.
{quote}*Note on backward compatibility:* The server reads both fields using
{{{}fromApiJsonHelper.extractLocalDateNamed{}}}, which parses using the
{{dateFormat}} sent in the request. {{LocalDate}} was previously incorrect, as
a generated client would serialize ISO into a body that declared "dd MMMM
yyyy". While the API backward-compatibility check will report a type change,
the wire format remains exactly the same; the spec is simply being corrected to
match what the server actually parses.
{quote}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)