Skip to content

Commit ca6c304

Browse files
FINERACT-2455: Add WC near breach evaluation
1 parent 02280a9 commit ca6c304

7 files changed

Lines changed: 349 additions & 1 deletion

File tree

fineract-e2e-tests-core/src/test/java/org/apache/fineract/test/stepdef/loan/WorkingCapitalStepDef.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.apache.fineract.client.models.PutWorkingCapitalLoanProductsProductIdResponse;
5454
import org.apache.fineract.client.models.StringEnumOptionData;
5555
import org.apache.fineract.client.models.WorkingCapitalBreachRequest;
56+
import org.apache.fineract.client.models.WorkingCapitalNearBreachRequest;
5657
import org.apache.fineract.test.data.accounttype.AccountTypeResolver;
5758
import org.apache.fineract.test.data.accounttype.DefaultAccountType;
5859
import org.apache.fineract.test.data.workingcapitalproduct.DefaultWorkingCapitalLoanProduct;
@@ -157,7 +158,7 @@ public void createWorkingCapitalLoanProductWithBreachIdAndOverrides() {
157158

158159
@When("Admin creates a Working Capital Loan Product with custom breach config and overrides enabled:")
159160
public void createWorkingCapitalLoanProductWithCustomBreachConfig(final DataTable table) {
160-
final Map<String, String> data = table.asMaps().get(0);
161+
final Map<String, String> data = table.asMaps().getFirst();
161162

162163
final String breachName = "WC Breach " + Utils.randomStringGenerator("", 10);
163164
final WorkingCapitalBreachRequest breachRequest = new WorkingCapitalBreachRequest().name(breachName)
@@ -185,6 +186,46 @@ public void createWorkingCapitalLoanProductWithCustomBreachConfig(final DataTabl
185186
checkWorkingCapitalLoanProductCreate();
186187
}
187188

189+
@When("Admin creates a Working Capital Loan Product with breach and near breach config and overrides enabled:")
190+
public void createWorkingCapitalLoanProductWithBreachAndNearBreachConfig(final DataTable table) {
191+
final Map<String, String> data = table.asMaps().getFirst();
192+
193+
final String breachName = "WC Breach " + Utils.randomStringGenerator("", 10);
194+
final WorkingCapitalBreachRequest breachRequest = new WorkingCapitalBreachRequest().name(breachName)
195+
.breachFrequency(Integer.valueOf(data.get("breachFrequency"))).breachFrequencyType(data.get("breachFrequencyType"))
196+
.breachAmountCalculationType(data.get("breachAmountCalculationType"))
197+
.breachAmount(new BigDecimal(data.get("breachAmount")));
198+
final CommandProcessingResult breachCreateResponse = ok(
199+
() -> fineractFeignClient.workingCapitalBreaches().createWorkingCapitalBreach(breachRequest));
200+
final Long breachId = breachCreateResponse.getResourceId();
201+
testContext().set(TestContextKey.WORKING_CAPITAL_BREACH_ID, breachId);
202+
203+
final WorkingCapitalNearBreachRequest nearBreachRequest = new WorkingCapitalNearBreachRequest()
204+
.nearBreachName("WC Near Breach " + Utils.randomStringGenerator("", 10))
205+
.nearBreachFrequency(Integer.valueOf(data.get("nearBreachFrequency")))
206+
.nearBreachFrequencyType(data.get("nearBreachFrequencyType"))
207+
.nearBreachThreshold(new BigDecimal(data.get("nearBreachThreshold")));
208+
final CommandProcessingResult nearBreachCreateResponse = ok(
209+
() -> fineractFeignClient.workingCapitalNearBreaches().createWorkingCapitalNearBreach(nearBreachRequest));
210+
final Long nearBreachId = nearBreachCreateResponse.getResourceId();
211+
212+
final String graceDaysStr = data.get("delinquencyGraceDays");
213+
final Integer graceDays = graceDaysStr != null && !graceDaysStr.isEmpty() ? Integer.valueOf(graceDaysStr) : null;
214+
215+
final String name = DefaultWorkingCapitalLoanProduct.WCLP.getName() + Utils.randomStringGenerator("_", 10);
216+
final PostWorkingCapitalLoanProductsRequest request = workingCapitalRequestFactory
217+
.defaultWorkingCapitalLoanProductAllowAttributesOverrideRequest() //
218+
.name(name) //
219+
.breachId(breachId) //
220+
.nearBreachId(nearBreachId) //
221+
.delinquencyGraceDays(graceDays);
222+
223+
final PostWorkingCapitalLoanProductsResponse response = createWorkingCapitalLoanProduct(request);
224+
testContext().set(TestContextKey.WORKING_CAPITAL_LOAN_PRODUCT_CREATE_RESPONSE, response);
225+
testContext().set(TestContextKey.WORKING_CAPITAL_LOAN_PRODUCT_CREATE_REQUEST, request);
226+
checkWorkingCapitalLoanProductCreate();
227+
}
228+
188229
@When("Admin creates a new Working Capital Loan Product with external-id")
189230
public void createWorkingCapitalLoanProductWithExternalId() {
190231
final String workingCapitalProductDefaultName = DefaultWorkingCapitalLoanProduct.WCLP.getName()

0 commit comments

Comments
 (0)