From b3b14ba92944f8d8301d76014685cf791d48fa88 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Mon, 15 Jul 2024 21:34:35 -0600 Subject: [PATCH] FINERACT-2081: Update Loan data avro schemas with new delinquent fields --- .../main/avro/loan/v1/CollectionDataV1.avsc | 32 +++++++++++++++++++ .../main/avro/loan/v1/LoanSummaryDataV1.avsc | 16 ++++++++++ .../CustomSnapshotEventIntegrationTest.java | 14 ++++++++ 3 files changed, 62 insertions(+) diff --git a/fineract-avro-schemas/src/main/avro/loan/v1/CollectionDataV1.avsc b/fineract-avro-schemas/src/main/avro/loan/v1/CollectionDataV1.avsc index 3fdc726b7..97387b864 100644 --- a/fineract-avro-schemas/src/main/avro/loan/v1/CollectionDataV1.avsc +++ b/fineract-avro-schemas/src/main/avro/loan/v1/CollectionDataV1.avsc @@ -104,6 +104,38 @@ "items": "org.apache.fineract.avro.loan.v1.LoanInstallmentDelinquencyBucketDataV1" } ] + }, + { + "default": null, + "name": "delinquentPrincipal", + "type": [ + "null", + "bigdecimal" + ] + }, + { + "default": null, + "name": "delinquentInterest", + "type": [ + "null", + "bigdecimal" + ] + }, + { + "default": null, + "name": "delinquentFee", + "type": [ + "null", + "bigdecimal" + ] + }, + { + "default": null, + "name": "delinquentPenalty", + "type": [ + "null", + "bigdecimal" + ] } ] } diff --git a/fineract-avro-schemas/src/main/avro/loan/v1/LoanSummaryDataV1.avsc b/fineract-avro-schemas/src/main/avro/loan/v1/LoanSummaryDataV1.avsc index 6e62713f4..9dae4c2f5 100644 --- a/fineract-avro-schemas/src/main/avro/loan/v1/LoanSummaryDataV1.avsc +++ b/fineract-avro-schemas/src/main/avro/loan/v1/LoanSummaryDataV1.avsc @@ -426,6 +426,22 @@ "null", "string" ] + }, + { + "default": null, + "name": "totalUnpaidAccruedDueInterest", + "type": [ + "null", + "bigdecimal" + ] + }, + { + "default": null, + "name": "totalUnpaidAccruedNotDueInterest", + "type": [ + "null", + "bigdecimal" + ] } ] } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/CustomSnapshotEventIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/CustomSnapshotEventIntegrationTest.java index bfbb3242d..f6dd36c2c 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/CustomSnapshotEventIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/CustomSnapshotEventIntegrationTest.java @@ -47,6 +47,7 @@ import org.junit.jupiter.api.extension.ExtendWith; public class CustomSnapshotEventIntegrationTest extends BaseLoanIntegrationTest { private SchedulerJobHelper schedulerJobHelper = new SchedulerJobHelper(this.requestSpec); + private Gson gson = new Gson(); @Test public void testSnapshotEventGenerationWhenLoanInstallmentIsNotPayed() { @@ -92,6 +93,19 @@ public class CustomSnapshotEventIntegrationTest extends BaseLoanIntegrationTest Assertions.assertEquals(1, allExternalEvents.size()); Assertions.assertEquals("LoanAccountCustomSnapshotBusinessEvent", allExternalEvents.get(0).getType()); Assertions.assertEquals(loanId, allExternalEvents.get(0).getAggregateRootId()); + + // Loan Delinquency data validation + final Map payLoad = (Map) allExternalEvents.get(0).getPayLoad().get("delinquent"); + log.info("Payload: {}", payLoad.toString()); + + Assertions.assertNotNull(payLoad.get("delinquentPrincipal")); + Assertions.assertEquals(312.0, payLoad.get("delinquentPrincipal")); + Assertions.assertNotNull(payLoad.get("delinquentInterest")); + Assertions.assertEquals(0.0, payLoad.get("delinquentInterest")); + Assertions.assertNotNull(payLoad.get("delinquentFee")); + Assertions.assertEquals(0.0, payLoad.get("delinquentFee")); + Assertions.assertNotNull(payLoad.get("delinquentPenalty")); + Assertions.assertEquals(0.0, payLoad.get("delinquentPenalty")); }); }