You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Adam Saghy (Jira)" <ji...@apache.org> on 2025/01/08 17:20:00 UTC

[jira] [Updated] (FINERACT-2165) Use `fineract-client` based API calls in integration tests

     [ https://issues.apache.org/jira/browse/FINERACT-2165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Adam Saghy updated FINERACT-2165:
---------------------------------
    Description: 
`Fineract-client` was introduced as part of https://issues.apache.org/jira/browse/FINERACT-1189 and some integration tests were using it (https://issues.apache.org/jira/browse/FINERACT-1209) but unfortunately many were not used and new integration tests got implemented but still not using the `fineract-client`!

*Why Fineract-client is better?*
 * Type safety comes out of box!
 ** Type safe requests, and responses!
 * No need to "fabricate" the endpoints!
 * We can move away from the RequestSpecification and ResponseSpecification configurations!
 * Fineract-client is automatically generated based on the swagger configuration / request / response object!

*Why would it be beneficial to rewrite our integration tests?*
 * No more struggling with Map<String, Object>-s to fabricate request objects and trying to fetch out fields from response Object / Map...
 * No more GSON conversion back and forth
 * No more "is this json string contains XYZ?"
 ** Mostly was done to test exception messages...
 * No more N+1 method with slightly different parameter list
 * *Fineract-client got tested more thoroughly!*
 * *Our swagger configurations got tested more thoroughly!*
 * *Better maintainability!*
 * *Better readability!*
 * *Less error-prone!*

I would like to give it a try as part of this story!
 # step: Marking all the methods as *deprecated* in the Helper classes which were using Rest-Assured for communicating with the backend!
 # step: Inform the Fineract-Dev mail list to not use "RestAssured based" solutions for any of the newly created integration tests!
 # step: Ask the community to start using the `fineract-client` based communication for all the newly created integration tests!
 ## Check in the helper classes whether for the required action there is a "Fineract-client based" implementation
 ## *If yes, please use that!*
 ## *If no, please implement it!*
 ### If it is broken, example: swagger request or response is not complete -> there is a missing field or the data type is incorrect -> *Please fix it!*
 # step: Ask the community and the newcomers to start removing the methods that were marked as *deprecated* and rewrite them to use `fineract-client` instead!
 ## *This means the integration tests that were using the deprecated methods must also be changed!*

  was:
`Fineract-client` was introduced as part of https://issues.apache.org/jira/browse/FINERACT-1189 and some integration test was using it (https://issues.apache.org/jira/browse/FINERACT-1209) but unfortunately many were not followed or was never rewritten...

Why Fineract-client is better?
 * Type safety comes out of box!
 ** Type safe requests, and responses!
 * No need to "fabricate" the endpoints!
 * We can move away from the RequestSpecification and ResponseSpecification configurations!
 * Fineract-client is automatically generated based on the swagger configuration / request / response object!

Why would it be beneficial to rewrite our integration tests?
 * No more struggling with Map<String, Object>-s to fabricate request objects and trying to fetch out fields from response Object / Map...
 * No more GSON conversion back and forth
 * No more "is this json string contains XYZ?"
 ** Mostly was done to test exception messages...
 * No more N+1 method with slightly different parameter list
 * *Fineract-client got tested more thoroughly!*
 * *Our swagger configurations got tested more thoroughly!*
 * *Better maintainability!*
 * {*}Better readability!{*}{*}{*}
 * *Less error-prone!*

As part of this story I would like to give an another push to this!
 # step: Marking all the methods as *deprecated* in the Helper classes which is using Rest-Assured for communicating with the backend!
 # Inform the Fineract-Dev mail list to not use RestAssured based solutions for any of the newly created integration tests!
 # Ask the community to start using the `fineract-client` based communication for all the newly created integration tests!
 ## Check in the helper classes whether for the required action there is fineract-client based implementation
 ## If yes, kindly use that!
 ## If no, kindly implement it!
 ### If it is broken, example: swagger request or response is not complete -> do not list a field or the data type is incorrect -> Fix it!
 # Ask the community and the newcomers to start removing the methods that was marked as deprecated and rewrite them to use `fineract-client` instead!
 ## *This means many of the integration tests that were using the deprecated methods must be also changed!*


> Use `fineract-client` based API calls in integration tests
> ----------------------------------------------------------
>
>                 Key: FINERACT-2165
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2165
>             Project: Apache Fineract
>          Issue Type: Improvement
>    Affects Versions: 1.11.0
>            Reporter: Adam Saghy
>            Priority: Major
>              Labels: code-debt, improvement, newjoiner-safe
>
> `Fineract-client` was introduced as part of https://issues.apache.org/jira/browse/FINERACT-1189 and some integration tests were using it (https://issues.apache.org/jira/browse/FINERACT-1209) but unfortunately many were not used and new integration tests got implemented but still not using the `fineract-client`!
> *Why Fineract-client is better?*
>  * Type safety comes out of box!
>  ** Type safe requests, and responses!
>  * No need to "fabricate" the endpoints!
>  * We can move away from the RequestSpecification and ResponseSpecification configurations!
>  * Fineract-client is automatically generated based on the swagger configuration / request / response object!
> *Why would it be beneficial to rewrite our integration tests?*
>  * No more struggling with Map<String, Object>-s to fabricate request objects and trying to fetch out fields from response Object / Map...
>  * No more GSON conversion back and forth
>  * No more "is this json string contains XYZ?"
>  ** Mostly was done to test exception messages...
>  * No more N+1 method with slightly different parameter list
>  * *Fineract-client got tested more thoroughly!*
>  * *Our swagger configurations got tested more thoroughly!*
>  * *Better maintainability!*
>  * *Better readability!*
>  * *Less error-prone!*
> I would like to give it a try as part of this story!
>  # step: Marking all the methods as *deprecated* in the Helper classes which were using Rest-Assured for communicating with the backend!
>  # step: Inform the Fineract-Dev mail list to not use "RestAssured based" solutions for any of the newly created integration tests!
>  # step: Ask the community to start using the `fineract-client` based communication for all the newly created integration tests!
>  ## Check in the helper classes whether for the required action there is a "Fineract-client based" implementation
>  ## *If yes, please use that!*
>  ## *If no, please implement it!*
>  ### If it is broken, example: swagger request or response is not complete -> there is a missing field or the data type is incorrect -> *Please fix it!*
>  # step: Ask the community and the newcomers to start removing the methods that were marked as *deprecated* and rewrite them to use `fineract-client` instead!
>  ## *This means the integration tests that were using the deprecated methods must also be changed!*



--
This message was sent by Atlassian Jira
(v8.20.10#820010)