Krishna Mewara created FINERACT-2609:
----------------------------------------
Summary: Migrate integration test helpers from RestAssured to
Feign client
Key: FINERACT-2609
URL: https://issues.apache.org/jira/browse/FINERACT-2609
Project: Apache Fineract
Issue Type: Improvement
Reporter: Krishna Mewara
h2. Overview
Migrate Fineract's integration test infrastructure from raw RestAssured HTTP
calls to the type-safe Feign client ({{{}fineract-client-feign{}}}). This is an
incremental migration following the [Strangler Fig
pattern|https://martinfowler.com/bliki/StranglerFigApplication.html] — new
Feign helpers coexist alongside legacy RestAssured helpers, with tests migrated
one-by-one.
To close: FINERACT-2454
h2. Current State
||Metric||Count||
|Total helper files in {{common/}}|123|
|Helpers with RestAssured only (unmigrated)|53|
|Helpers with both RestAssured + Retrofit (mixed)|18|
|Helpers already using Retrofit ({{{}Calls.ok{}}})|35|
|Helpers with NO RestAssured (pure utility)|51|
|Total test files (excluding {{common/}} and Feign)|312|
|Test files directly importing RestAssured|197 of 312 (63%)|
|Existing Feign test files|10|
|Existing Feign helpers|17|
|Existing Feign modules|7|
|Existing wrapper interfaces|4|
h2. Migration Tiers
h3. Tier 1 — High-Impact
||Helper||Importers||RestAssured %||
|{{Utils.java}}|309|100%|
|{{ClientHelper.java}}|216|~80%|
|{{BaseLoanIntegrationTest.java}}|121|~95%|
|{{LoanTransactionHelper.java}}|118|~55%|
|{{SavingsAccountHelper.java}}|37|~97%|
h3. Tier 2 — Medium-Impact
||Helper||Importers||
|{{BusinessDateHelper}}|61|
|{{AccountHelper}}|60|
|{{ChargesHelper}}|55|
|{{DelinquencyBucketsHelper}}|36|
|{{SchedulerJobHelper}}|35|
|{{GlobalConfigurationHelper}}|26|
|{{JournalEntryHelper}}|24|
|{{OfficeHelper}}|19|
|{{GroupHelper}}|17|
h3. Tier 3 — Low-Impact / Niche
{{BatchHelper}} (7 importers), {{{}WorkingCapitalLoanHelper{}}},
{{{}FixedDepositAccountHelper{}}}, {{{}RecurringDepositAccountHelper{}}}, plus
domain-specific helpers with <10 importers each.
h3. Foundation Layer
{{Utils.java}} (309 importers) — the RestAssured gateway that nearly all
helpers delegate to. This is the *last* thing to deprecate, only after all
helpers above are migrated.
h2. Architecture Pattern
New {{FeignXxxHelper}} classes live under {{{}client/feign/helpers/{}}}. They:
* Take {{FineractFeignClient}} via constructor injection
* Use {{ok(() -> ...)}} for API calls (via {{FeignCalls}} utility)
* Tests extend {{FeignIntegrationTest}} base class
* Share the same model classes ({{{}org.apache.fineract.client.models.*{}}})
as Retrofit
Legacy and Feign helpers coexist — no Big Bang. Both {{fineract-client}}
(Retrofit) and {{fineract-client-feign}} are on the classpath simultaneously.
The {{exclude}} in {{dependencies.gradle}} prevents duplicate model classes.
h2. PR Roadmap
h3. Core PRs
||PR||Scope||Child Ticket||Status||
|PR 1|{{FeignSavingsHelper}} + first savings test| |{color:#FF0000}Not
Started{color}|
h3. Stretch PRs (if time permits)
||PR||Scope||Stretch Outcome||
| | | |
h2. Progress Log
_Updated after each PR merge._
||Date||PR||Ticket||Notes||
| | | | |
--
This message was sent by Atlassian Jira
(v8.20.10#820010)