You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Krishna Mewara (Jira)" <ji...@apache.org> on 2026/09/26 14:46:00 UTC
[jira] [Updated] (FINERACT-2779) Remove REST-assured and hand-built JSON from FeignLoanHelper
[ https://issues.apache.org/jira/browse/FINERACT-2779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Krishna Mewara updated FINERACT-2779:
-------------------------------------
Fix Version/s: 1.16.0
> 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
> Priority: Trivial
> Labels: feign-migration
> Fix For: 1.16.0
>
>
> 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)