Excellent Arnold! Getting rid of a lot of boilerplate code and improving the Swagger manifest... way to go!
On Tue, Apr 26, 2022 at 6:57 PM Awasum Yannick <[email protected]> wrote: > Wonderful Idea. Good Work Arnold. > > On Tue, Apr 26, 2022 at 4:05 PM Arnold Galovics <[email protected]> wrote: > >> Hi all, >> >> I wanted to bring awareness to a potential improvement in the integration >> tests within Fineract. >> >> I bet all of us have seen the difficulty with them. When dealing with API >> calls, there are raw Map types everywhere. We don't know if there's gonna >> be an integer there, a String, a long or what; we don't know what >> properties will be there in a certain response; and the worst thing is, we >> don't know if it's in line with the actual implementation. >> Just to give you an idea: >> >> HashMap accountDetails = >> FixedDepositAccountHelper.getFixedDepositAccountById(...); >> Float maturityAmount = >> Float.valueOf(accountDetails.get("maturityAmount").toString()); >> >> Very difficult to maintain. While I was fixing a bug around Client >> Address creation, I thought I could do it better and in a typesafe manner. >> So, I had this idea to utilize the fineract-client module that has >> generated request/response models based on the APIs we have in Fineract. >> >> And while fixing the bug, I used the generated code to write 2 >> integration tests to cover the bugfixes. It's way more easier than dealing >> with Maps; and there's one additional benefit to this approach. >> >> Even though fineract-client is another module people can use when >> integrating with Fineract, we are not testing it and it's definitely a gap. >> >> If I ask whether the fineract-client module is usable and working as >> expected, I don't think most of us will have a reliable answer because >> there's literally no automation in place to test those models. And that's >> the great thing about using the client module in integration tests as well >> because on one hand we're testing the Fineract functionality we want to and >> through those tests, we are testing the fineract-client module as well. >> >> Here's the 2 tests: >> - >> https://github.com/apache/fineract/blob/develop/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java#L219 >> - >> https://github.com/apache/fineract/blob/develop/integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientTest.java#L250 >> >> Long story short, I think it would be really nice if everybody would use >> the client module for future integration tests because there's no downside >> to it but will ensure easier maintainability while making sure the client >> module is compatible with the REST API. >> >> Hope that makes sense. >> Let me know your thoughts. >> >> Best, >> Arnold >> >
