Skip to content

Commit 39dbb3b

Browse files
FINERACT-2421: Refactor WC loan integration tests to use typed Feign responses
1 parent fc6f3cc commit 39dbb3b

12 files changed

Lines changed: 666 additions & 884 deletions

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

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
import static org.junit.jupiter.api.Assertions.assertNotNull;
2424
import static org.junit.jupiter.api.Assertions.assertTrue;
2525

26-
import com.google.gson.JsonArray;
27-
import com.google.gson.JsonObject;
28-
import com.google.gson.JsonParser;
2926
import java.math.BigDecimal;
27+
import java.util.List;
28+
import java.util.Objects;
29+
import org.apache.fineract.client.models.WorkingCapitalBreachData;
30+
import org.apache.fineract.client.models.WorkingCapitalBreachRequest;
31+
import org.apache.fineract.client.models.WorkingCapitalBreachTemplateResponse;
3032
import org.apache.fineract.integrationtests.common.workingcapitalloanbreach.WorkingCapitalBreachHelper;
3133
import org.junit.jupiter.api.Test;
3234

@@ -36,48 +38,53 @@ public class WorkingCapitalBreachCRUDTest {
3638

3739
@Test
3840
public void testTemplateEndpoint() {
39-
final String json = breachHelper.retrieveTemplateRaw();
40-
final JsonObject template = JsonParser.parseString(json).getAsJsonObject();
41-
assertTrue(template.has("breachFrequencyTypeOptions"));
42-
assertTrue(template.has("breachAmountCalculationTypeOptions"));
43-
assertFalse(template.getAsJsonArray("breachFrequencyTypeOptions").isEmpty());
44-
assertFalse(template.getAsJsonArray("breachAmountCalculationTypeOptions").isEmpty());
41+
final WorkingCapitalBreachTemplateResponse template = breachHelper.retrieveTemplateRaw();
42+
assertNotNull(template.getBreachFrequencyTypeOptions());
43+
assertNotNull(template.getBreachAmountCalculationTypeOptions());
44+
assertFalse(template.getBreachFrequencyTypeOptions().isEmpty());
45+
assertFalse(template.getBreachAmountCalculationTypeOptions().isEmpty());
4546
}
4647

4748
@Test
4849
public void testCreateRetrieveUpdateDeleteAndListEndpoints() {
49-
final JsonObject createBody = breachHelper.breachJson("Default WCL Breach", 15, "DAYS", "PERCENTAGE", BigDecimal.valueOf(7.5));
50+
final WorkingCapitalBreachRequest createBody = breachHelper.createBreachRequest("Default WCL Breach", 15, "DAYS", "PERCENTAGE",
51+
BigDecimal.valueOf(7.5));
5052
final Long breachId = breachHelper.create(createBody);
5153
assertNotNull(breachId);
5254

53-
final JsonObject created = JsonParser.parseString(breachHelper.retrieveOneRaw(breachId)).getAsJsonObject();
54-
assertEquals("Default WCL Breach", created.get("name").getAsString());
55-
assertEquals(15, created.get("breachFrequency").getAsInt());
56-
assertEquals("DAYS", created.getAsJsonObject("breachFrequencyType").get("id").getAsString());
57-
assertEquals("PERCENTAGE", created.getAsJsonObject("breachAmountCalculationType").get("id").getAsString());
58-
assertEquals(0, BigDecimal.valueOf(7.5).compareTo(created.get("breachAmount").getAsBigDecimal()));
55+
final WorkingCapitalBreachData created = breachHelper.retrieveOneRaw(breachId);
56+
assertEquals("Default WCL Breach", created.getName());
57+
assertEquals(15, created.getBreachFrequency());
58+
assert created.getBreachFrequencyType() != null;
59+
assertEquals("DAYS", created.getBreachFrequencyType().getId());
60+
assert created.getBreachAmountCalculationType() != null;
61+
assertEquals("PERCENTAGE", created.getBreachAmountCalculationType().getId());
62+
assertEquals(0, BigDecimal.valueOf(7.5).compareTo(created.getBreachAmount()));
5963

60-
final JsonArray all = JsonParser.parseString(breachHelper.retrieveAllRaw()).getAsJsonArray();
64+
final List<WorkingCapitalBreachData> all = breachHelper.retrieveAllRaw();
6165
boolean found = false;
62-
for (int i = 0; i < all.size(); i++) {
63-
if (all.get(i).getAsJsonObject().get("id").getAsLong() == breachId) {
64-
assertEquals("Default WCL Breach", all.get(i).getAsJsonObject().get("name").getAsString());
66+
for (WorkingCapitalBreachData workingCapitalBreachData : all) {
67+
if (Objects.equals(workingCapitalBreachData.getId(), breachId)) {
68+
assertEquals("Default WCL Breach", workingCapitalBreachData.getName());
6569
found = true;
6670
break;
6771
}
6872
}
6973
assertTrue(found);
7074

71-
final JsonObject updateBody = breachHelper.breachJson("Updated WCL Breach", 20, "MONTHS", "FLAT", BigDecimal.valueOf(111));
75+
final WorkingCapitalBreachRequest updateBody = breachHelper.createBreachRequest("Updated WCL Breach", 20, "MONTHS", "FLAT",
76+
BigDecimal.valueOf(111));
7277
final Long updatedId = breachHelper.update(breachId, updateBody);
7378
assertEquals(breachId, updatedId);
7479

75-
final JsonObject updated = JsonParser.parseString(breachHelper.retrieveOneRaw(breachId)).getAsJsonObject();
76-
assertEquals("Updated WCL Breach", updated.get("name").getAsString());
77-
assertEquals(20, updated.get("breachFrequency").getAsInt());
78-
assertEquals("MONTHS", updated.getAsJsonObject("breachFrequencyType").get("id").getAsString());
79-
assertEquals("FLAT", updated.getAsJsonObject("breachAmountCalculationType").get("id").getAsString());
80-
assertEquals(0, BigDecimal.valueOf(111).compareTo(updated.get("breachAmount").getAsBigDecimal()));
80+
final WorkingCapitalBreachData updated = breachHelper.retrieveOneRaw(breachId);
81+
assertEquals("Updated WCL Breach", updated.getName());
82+
assertEquals(20, updated.getBreachFrequency());
83+
assert updated.getBreachFrequencyType() != null;
84+
assertEquals("MONTHS", updated.getBreachFrequencyType().getId());
85+
assert updated.getBreachAmountCalculationType() != null;
86+
assertEquals("FLAT", updated.getBreachAmountCalculationType().getId());
87+
assertEquals(0, BigDecimal.valueOf(111).compareTo(updated.getBreachAmount()));
8188

8289
final Long deletedId = breachHelper.delete(breachId);
8390
assertEquals(breachId, deletedId);

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.google.gson.JsonObject;
2626
import java.math.BigDecimal;
2727
import org.apache.fineract.client.feign.util.CallFailedRuntimeException;
28+
import org.apache.fineract.client.models.WorkingCapitalBreachRequest;
29+
import org.apache.fineract.integrationtests.common.Utils;
2830
import org.apache.fineract.integrationtests.common.workingcapitalloanbreach.WorkingCapitalBreachHelper;
2931
import org.junit.jupiter.api.Test;
3032

@@ -155,7 +157,9 @@ public void testCreateFailsWhenBreachAmountIsNegative() {
155157

156158
@Test
157159
public void testUpdateFailsWhenBreachFrequencyTypeIsInvalid() {
158-
final Long breachId = breachHelper.create(validBreachJson());
160+
final WorkingCapitalBreachRequest createBody = breachHelper.createBreachRequest(Utils.randomStringGenerator("Breach", 20), 20,
161+
"DAYS", "PERCENTAGE", BigDecimal.valueOf(7.5));
162+
final Long breachId = breachHelper.create(createBody);
159163
final JsonObject invalidUpdate = validBreachJson();
160164
invalidUpdate.addProperty("breachFrequencyType", "INVALID");
161165

0 commit comments

Comments
 (0)