Skip to content

Commit 9276e89

Browse files
committed
FINERACT-2649: Migrate core LoanAccount tests to Feign
Signed-off-by: DeathGun44 <krishnamewara841@gmail.com>
1 parent 9c4109f commit 9276e89

30 files changed

Lines changed: 411 additions & 393 deletions

fineract-provider/src/test/java/org/apache/fineract/batch/command/CommandStrategyUtilsTest.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,8 @@ public void testBuildRequestFromQueryParametersTypeConversion(String fieldName,
127127
// then
128128
assertThat(result).isNotNull();
129129
Object actualValue = getFieldValue(result, fieldName);
130-
if (expectedValue instanceof BigDecimal) {
131-
assertThat((BigDecimal) actualValue).isEqualByComparingTo((BigDecimal) expectedValue);
130+
if (expectedValue instanceof BigDecimal bigDecimal) {
131+
assertThat((BigDecimal) actualValue).isEqualByComparingTo(bigDecimal);
132132
} else {
133133
assertThat(actualValue).isEqualTo(expectedValue);
134134
}
@@ -240,22 +240,15 @@ public void testBuildRequestFromQueryParametersWithClassWithoutBuilder() {
240240
}
241241

242242
private Object getFieldValue(TestRequest request, String fieldName) {
243-
switch (fieldName) {
244-
case "stringField":
245-
return request.getStringField();
246-
case "integerField":
247-
return request.getIntegerField();
248-
case "longField":
249-
return request.getLongField();
250-
case "bigDecimalField":
251-
return request.getBigDecimalField();
252-
case "doubleField":
253-
return request.getDoubleField();
254-
case "booleanField":
255-
return request.getBooleanField();
256-
default:
257-
return null;
258-
}
243+
return switch (fieldName) {
244+
case "stringField" -> request.getStringField();
245+
case "integerField" -> request.getIntegerField();
246+
case "longField" -> request.getLongField();
247+
case "bigDecimalField" -> request.getBigDecimalField();
248+
case "doubleField" -> request.getDoubleField();
249+
case "booleanField" -> request.getBooleanField();
250+
default -> null;
251+
};
259252
}
260253

261254
@Data

fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,8 @@ public void testGetLastUserTransaction() {
191191
when(loanTransaction4.isNotReversed()).thenReturn(Boolean.TRUE);
192192
when(loanTransaction4.isAccrual()).thenReturn(Boolean.FALSE);
193193
when(loanTransaction4.isAccrualAdjustment()).thenReturn(Boolean.TRUE);
194-
ReflectionTestUtils.setField(loan, "loanTransactions", List.of(loanTransaction, loanTransaction2, loanTransaction3));
194+
ReflectionTestUtils.setField(loan, "loanTransactions",
195+
List.of(loanTransaction, loanTransaction2, loanTransaction3, loanTransaction4));
195196
final LoanTransaction userTransaction = loan.getLastUserTransaction();
196197
assertNotNull(userTransaction);
197198
assertEquals(loanTransaction2, userTransaction);

integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanChargeExternalIntegrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void checkNewClientLoanChargeSavesExternalId() {
5353
approveLoan(loanId, approveLoanRequest(12000.0, "20 September 2011"));
5454
disburseLoanWithNetDisbursalAmount(loanId, "20 September 2011", "12,000.00");
5555

56-
final Long chargeDefId = chargesHelper.createLoanSpecifiedDueDatePercentageAmountAndInterestFee(1.0);
56+
final Long chargeDefId = chargesHelper.createLoanSpecifiedDueDatePercentageAmountAndInterestFee(1.0).getResourceId();
5757

5858
final String externalId = "extId" + loanId.toString();
5959
PostLoansLoanIdChargesResponse chargeResponse = addLoanCharge(loanId, new PostLoansLoanIdChargesRequest().chargeId(chargeDefId)
@@ -75,7 +75,7 @@ public void checkNewClientLoanChargeFindsDuplicateExternalId() {
7575
approveLoan(loanId, approveLoanRequest(12000.0, "20 September 2011"));
7676
disburseLoanWithNetDisbursalAmount(loanId, "20 September 2011", "12,000.00");
7777

78-
final Long chargeDefId = chargesHelper.createLoanSpecifiedDueDatePercentageAmountAndInterestFee(1.0);
78+
final Long chargeDefId = chargesHelper.createLoanSpecifiedDueDatePercentageAmountAndInterestFee(1.0).getResourceId();
7979

8080
final String externalId = "extId" + loanId.toString();
8181
PostLoansLoanIdChargesResponse chargeResponse = addLoanCharge(loanId, new PostLoansLoanIdChargesRequest().chargeId(chargeDefId)

integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanMultipleDisbursementsIntegrationTest.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ private Long createLoanProduct(final boolean multiDisburseLoan) {
7373
return createLoanProductFromJson(loanProductJSON);
7474
}
7575

76-
private Long applyForLoanApplicationWithTranches(final Long clientID, final Long loanProductID, String principal,
76+
private Long applyForLoanApplicationWithTranches(final Long clientId, final Long loanProductID, String principal,
7777
List<HashMap> tranches, String submitDate) {
7878
LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
7979
final String loanApplicationJSON = new LoanApplicationTestBuilder() //
@@ -90,7 +90,7 @@ private Long applyForLoanApplicationWithTranches(final Long clientID, final Long
9090
.withExpectedDisbursementDate(submitDate) //
9191
.withTranches(tranches) //
9292
.withSubmittedOnDate(submitDate) //
93-
.build(clientID.toString(), loanProductID.toString(), null);
93+
.build(clientId.toString(), loanProductID.toString(), null);
9494
return applyForLoanFromJson(loanApplicationJSON);
9595
}
9696

@@ -183,7 +183,8 @@ public void checkThatAllMultiDisbursalsAppearOnLoanScheduleAndOutStandingBalance
183183
assertTrue(expectedPrincipalDue.compareTo(principalDue) == 0, "Checking Principal Due is 255");
184184

185185
final BigDecimal principalLoanBalanceOutstanding = lastPeriod.getPrincipalLoanBalanceOutstanding();
186-
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0, "Checking Principal Loan Balance Outstanding is zero");
186+
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0,
187+
"Checking Principal Loan Balance Outstanding is zero");
187188
}
188189

189190
@Test
@@ -259,7 +260,8 @@ public void checkThatAllMultiDisbursalsAppearOnLoanScheduleAndOutStandingBalance
259260
assertTrue(expectedPrincipalOutstanding.compareTo(principalOutstanding) == 0, "Checking Principal Due is 2");
260261

261262
final BigDecimal principalLoanBalanceOutstanding = lastPeriod.getPrincipalLoanBalanceOutstanding();
262-
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0, "Checking Principal Loan Balance Outstanding is zero");
263+
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0,
264+
"Checking Principal Loan Balance Outstanding is zero");
263265
}
264266

265267
@Test
@@ -335,6 +337,7 @@ public void checkThatAllMultiDisbursalsAppearOnLoanScheduleAndOutStandingBalance
335337
assertTrue(expectedPrincipalOutstanding.compareTo(principalOutstanding) == 0, "Checking Principal Due is 2");
336338

337339
final BigDecimal principalLoanBalanceOutstanding = lastPeriod.getPrincipalLoanBalanceOutstanding();
338-
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0, "Checking Principal Loan Balance Outstanding is zero");
340+
assertTrue(expectedPrincipalLoanBalanceOutstanding.compareTo(principalLoanBalanceOutstanding) == 0,
341+
"Checking Principal Loan Balance Outstanding is zero");
339342
}
340343
}

integration-tests/src/test/java/org/apache/fineract/integrationtests/ClientLoanNonTrancheMultipleDisbursementsIntegrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ private Long createLoanProduct(final boolean isInterestRecalculationEnabled) {
9090
return createLoanProductFromJson(loanProductJSON);
9191
}
9292

93-
private Long applyForLoanApplication(final Long clientID, final Long loanProductID, String principal, String submitDate,
93+
private Long applyForLoanApplication(final Long clientId, final Long loanProductID, String principal, String submitDate,
9494
String repaymentsNo) {
9595
LOG.info("--------------------------------APPLYING FOR LOAN APPLICATION--------------------------------");
9696
final String loanApplicationJSON = new LoanApplicationTestBuilder() //
@@ -107,7 +107,7 @@ private Long applyForLoanApplication(final Long clientID, final Long loanProduct
107107
.withExpectedDisbursementDate(submitDate) //
108108
.withTranches(null) //
109109
.withSubmittedOnDate(submitDate) //
110-
.build(clientID.toString(), loanProductID.toString(), null);
110+
.build(clientId.toString(), loanProductID.toString(), null);
111111
return applyForLoanFromJson(loanApplicationJSON);
112112
}
113113

integration-tests/src/test/java/org/apache/fineract/integrationtests/FloatingRateInterestRecalculationTest.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
*/
1919
package org.apache.fineract.integrationtests;
2020

21-
import static org.apache.fineract.client.feign.util.FeignCalls.ok;
2221
import static org.junit.jupiter.api.Assertions.assertNotNull;
2322
import static org.junit.jupiter.api.Assertions.assertTrue;
2423

24+
import com.google.gson.JsonObject;
25+
import com.google.gson.JsonParser;
2526
import java.math.BigDecimal;
2627
import java.util.HashMap;
2728
import java.util.List;
@@ -31,6 +32,7 @@
3132
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
3233
import org.apache.fineract.client.models.PostFloatingRatesResponse;
3334
import org.apache.fineract.integrationtests.client.feign.FeignLoanTestBase;
35+
import org.apache.fineract.integrationtests.client.feign.helpers.FeignRawHttpHelper;
3436
import org.apache.fineract.integrationtests.common.Utils;
3537
import org.apache.fineract.integrationtests.common.accounting.Account;
3638
import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
@@ -154,7 +156,11 @@ private Integer createCumulativeFloatingRateLoanProduct(Long floatingRateId, Acc
154156
loanProductMap.put("defaultDifferentialLendingRate", "0");
155157
loanProductMap.put("maxDifferentialLendingRate", "50");
156158

157-
return getLoanProductId(Utils.convertToJson(loanProductMap));
159+
// Use FeignRawHttpHelper because PostLoanProductsRequest doesn't include floating rate fields
160+
// (floatingRatesId, interestRateDifferential, etc.), so deserialization via getLoanProductId silently drops
161+
// them
162+
String responseJson = FeignRawHttpHelper.post("/loanproducts", Utils.convertToJson(loanProductMap));
163+
return JsonParser.parseString(responseJson).getAsJsonObject().get("resourceId").getAsInt();
158164
}
159165

160166
private Long createAndDisburseLoan(Long clientId, Integer loanProductId, String disburseDateStr) {
@@ -165,7 +171,7 @@ private Long createAndDisburseLoan(Long clientId, Integer loanProductId, String
165171
.withExpectedDisbursementDate(disburseDateStr).withSubmittedOnDate(disburseDateStr).withLoanType("individual")
166172
.build(clientId.toString(), loanProductId.toString(), null);
167173

168-
com.google.gson.JsonObject jsonObject = com.google.gson.JsonParser.parseString(loanApplicationJSON).getAsJsonObject();
174+
JsonObject jsonObject = JsonParser.parseString(loanApplicationJSON).getAsJsonObject();
169175
jsonObject.remove("interestRatePerPeriod");
170176
jsonObject.addProperty("interestRateDifferential", "0");
171177
jsonObject.addProperty("isFloatingInterestRate", true);

integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountBackdatedDisbursementTest.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,33 +38,43 @@
3838
import org.apache.fineract.client.models.PutGlobalConfigurationsRequest;
3939
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
4040
import org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationConstants;
41+
import org.apache.fineract.integrationtests.client.feign.FeignLoanTestBase;
4142
import org.apache.fineract.integrationtests.common.BusinessDateHelper;
4243
import org.apache.fineract.integrationtests.common.ClientHelper;
4344
import org.apache.fineract.integrationtests.common.CommonConstants;
4445
import org.apache.fineract.integrationtests.common.Utils;
46+
import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
47+
import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
4548
import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
4649
import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
4750
import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
4851
import org.junit.jupiter.api.BeforeEach;
4952
import org.junit.jupiter.api.Test;
5053

51-
public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTest {
54+
public class LoanAccountBackdatedDisbursementTest extends FeignLoanTestBase {
5255

53-
private ResponseSpecification responseSpec;
54-
private RequestSpecification requestSpec;
55-
private LoanTransactionHelper loanTransactionHelper;
56-
private ClientHelper clientHelper;
56+
protected RequestSpecification requestSpec;
57+
protected ResponseSpecification responseSpec;
58+
protected LoanTransactionHelper loanTransactionHelper;
59+
protected AccountHelper accountHelper;
60+
protected JournalEntryHelper journalEntryHelper;
5761

5862
@BeforeEach
59-
public void setup() {
63+
@SuppressWarnings("removal")
64+
public void setupREST() {
6065
Utils.initializeRESTAssured();
66+
6167
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
6268
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
6369
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
70+
6471
this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
65-
this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
72+
this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
73+
this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
6674
}
6775

76+
private ClientHelper clientHelper;
77+
6878
@Test
6979
public void loanAccountBackDatedDisbursementForLoanProductWithEnableDownPaymentAndScheduleStartDateTypeAsDisbursementDateTest() {
7080
try {

integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountOverpaidDateStatusTest.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,33 +40,43 @@
4040
import org.apache.fineract.client.models.PutGlobalConfigurationsRequest;
4141
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
4242
import org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationConstants;
43+
import org.apache.fineract.integrationtests.client.feign.FeignLoanTestBase;
4344
import org.apache.fineract.integrationtests.common.BusinessDateHelper;
4445
import org.apache.fineract.integrationtests.common.ClientHelper;
4546
import org.apache.fineract.integrationtests.common.Utils;
47+
import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
48+
import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
4649
import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
4750
import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
4851
import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
4952
import org.apache.fineract.integrationtests.common.products.DelinquencyBucketsHelper;
5053
import org.junit.jupiter.api.BeforeEach;
5154
import org.junit.jupiter.api.Test;
5255

53-
public class LoanAccountOverpaidDateStatusTest extends BaseLoanIntegrationTest {
56+
public class LoanAccountOverpaidDateStatusTest extends FeignLoanTestBase {
5457

55-
private ResponseSpecification responseSpec;
56-
private RequestSpecification requestSpec;
57-
private ClientHelper clientHelper;
58-
private LoanTransactionHelper loanTransactionHelper;
58+
protected RequestSpecification requestSpec;
59+
protected ResponseSpecification responseSpec;
60+
protected LoanTransactionHelper loanTransactionHelper;
61+
protected AccountHelper accountHelper;
62+
protected JournalEntryHelper journalEntryHelper;
5963

6064
@BeforeEach
61-
public void setup() {
65+
@SuppressWarnings("removal")
66+
public void setupREST() {
6267
Utils.initializeRESTAssured();
68+
6369
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
6470
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
6571
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
72+
6673
this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
67-
this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
74+
this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
75+
this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
6876
}
6977

78+
private ClientHelper clientHelper;
79+
7080
@Test
7181
public void loanOverpaidDateStatusTest() {
7282
// Set business date
@@ -135,7 +145,7 @@ public void loanOverpaidDateStatusTest() {
135145
assertEquals(loanDetailsOverpaid_1.getOverpaidOnDate(), LocalDate.of(2022, 9, 11));
136146

137147
// Credit balance refund to reset overpaid status
138-
loanTransactionHelper.creditBalanceRefund("12 September 2022", Float.valueOf(100), null, loanId, "");
148+
loanTransactionHelper.creditBalanceRefund("12 September 2022", Float.valueOf("100"), null, loanId, "");
139149
GetLoansLoanIdResponse loanDetailsNotOverpaidAfterCBR = loanTransactionHelper.getLoanDetails((long) loanId);
140150
assertFalse(loanDetailsNotOverpaidAfterCBR.getStatus().getOverpaid());
141151
assertNull(loanDetailsNotOverpaidAfterCBR.getOverpaidOnDate());

integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanAccountRepaymentCalculationTest.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,32 +35,42 @@
3535
import org.apache.fineract.client.models.PutGlobalConfigurationsRequest;
3636
import org.apache.fineract.infrastructure.businessdate.domain.BusinessDateType;
3737
import org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationConstants;
38+
import org.apache.fineract.integrationtests.client.feign.FeignLoanTestBase;
3839
import org.apache.fineract.integrationtests.common.BusinessDateHelper;
3940
import org.apache.fineract.integrationtests.common.ClientHelper;
4041
import org.apache.fineract.integrationtests.common.Utils;
42+
import org.apache.fineract.integrationtests.common.accounting.AccountHelper;
43+
import org.apache.fineract.integrationtests.common.accounting.JournalEntryHelper;
4144
import org.apache.fineract.integrationtests.common.loans.LoanApplicationTestBuilder;
4245
import org.apache.fineract.integrationtests.common.loans.LoanProductTestBuilder;
4346
import org.apache.fineract.integrationtests.common.loans.LoanTransactionHelper;
4447
import org.junit.jupiter.api.BeforeEach;
4548
import org.junit.jupiter.api.Test;
4649

47-
public class LoanAccountRepaymentCalculationTest extends BaseLoanIntegrationTest {
50+
public class LoanAccountRepaymentCalculationTest extends FeignLoanTestBase {
4851

49-
private ResponseSpecification responseSpec;
50-
private RequestSpecification requestSpec;
51-
private LoanTransactionHelper loanTransactionHelper;
52-
private ClientHelper clientHelper;
52+
protected RequestSpecification requestSpec;
53+
protected ResponseSpecification responseSpec;
54+
protected LoanTransactionHelper loanTransactionHelper;
55+
protected AccountHelper accountHelper;
56+
protected JournalEntryHelper journalEntryHelper;
5357

5458
@BeforeEach
55-
public void setup() {
59+
@SuppressWarnings("removal")
60+
public void setupREST() {
5661
Utils.initializeRESTAssured();
62+
5763
this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
5864
this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
5965
this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
66+
6067
this.loanTransactionHelper = new LoanTransactionHelper(this.requestSpec, this.responseSpec);
61-
this.clientHelper = new ClientHelper(this.requestSpec, this.responseSpec);
68+
this.accountHelper = new AccountHelper(this.requestSpec, this.responseSpec);
69+
this.journalEntryHelper = new JournalEntryHelper(this.requestSpec, this.responseSpec);
6270
}
6371

72+
private ClientHelper clientHelper;
73+
6474
@Test
6575
public void loanAccountWithEnableDownPaymentWithInstallmentsInMultipleOfNullRepaymentScheduleCalculationTest() {
6676
try {

0 commit comments

Comments
 (0)