[FINERACT-1760] Client transaction by transaction external ID

This commit is contained in:
taskain7
2023-07-24 08:27:07 +02:00
committed by Arnold Gálovics
parent a439952476
commit 8fa1c4571a
12 changed files with 229 additions and 24 deletions
@@ -26,6 +26,7 @@ import io.restassured.builder.ResponseSpecBuilder;
import io.restassured.http.ContentType;
import io.restassured.specification.RequestSpecification;
import io.restassured.specification.ResponseSpecification;
import java.math.BigDecimal;
import java.util.UUID;
import org.apache.fineract.client.models.GetClientsClientIdTransactionsResponse;
import org.apache.fineract.client.models.GetClientsClientIdTransactionsTransactionIdResponse;
@@ -68,6 +69,7 @@ public class ClientTransactionTest {
final Integer clientChargeId1 = ClientHelper.addChargesForClient(requestSpec, responseSpec, clientId.intValue(),
ClientHelper.getSpecifiedDueDateChargesClientAsJSON(chargeId.toString(), "29 October 2011"));
Assertions.assertNotNull(clientChargeId1);
String transactionExternalId = UUID.randomUUID().toString();
final String clientChargePaidTransactionId1 = ClientHelper.payChargesForClients(requestSpec, responseSpec, clientId.intValue(),
clientChargeId1, ClientHelper.getPayChargeJSON("25 AUGUST 2015", "10"));
assertNotNull(clientChargePaidTransactionId1);
@@ -75,9 +77,10 @@ public class ClientTransactionTest {
final Integer clientChargeId2 = ClientHelper.addChargesForClient(requestSpec, responseSpec, clientId.intValue(),
ClientHelper.getSpecifiedDueDateChargesClientAsJSON(chargeId.toString(), "29 October 2011"));
Assertions.assertNotNull(clientChargeId2);
final String clientChargePaidTransactionId2 = ClientHelper.payChargesForClients(requestSpec, responseSpec, clientId.intValue(),
clientChargeId2, ClientHelper.getPayChargeJSON("25 AUGUST 2015", "10"));
assertNotNull(clientChargePaidTransactionId2);
final String clientChargePaidTransactionExternalId = ClientHelper.payChargesForClientsTransactionExternalId(requestSpec,
responseSpec, clientId.intValue(), clientChargeId2,
ClientHelper.getPayChargeJSONWithExternalId("25 AUGUST 2015", "12", transactionExternalId));
assertNotNull(clientChargePaidTransactionExternalId);
GetClientsClientIdTransactionsResponse allClientTransactionsByExternalId = clientHelper
.getAllClientTransactionsByExternalId(clientExternalId);
@@ -87,8 +90,17 @@ public class ClientTransactionTest {
.getClientTransactionByExternalId(clientExternalId, clientChargePaidTransactionId1);
assertEquals(Integer.parseInt(clientChargePaidTransactionId1), clientTransactionByExternalId.getId());
GetClientsClientIdTransactionsTransactionIdResponse clientTransactionByTransactionExternalId = clientHelper
.getClientTransactionByTransactionExternalId(clientId, clientChargePaidTransactionExternalId);
assertNotNull(clientTransactionByTransactionExternalId);
assertEquals(BigDecimal.valueOf(12), clientTransactionByTransactionExternalId.getAmount().stripTrailingZeros());
PostClientsClientIdTransactionsTransactionIdResponse undoTransactionResponse = clientHelper
.undoClientTransactionByExternalId(clientExternalId, clientChargePaidTransactionId2);
.undoClientTransactionByExternalId(clientExternalId, clientChargePaidTransactionId1);
assertNotNull(undoTransactionResponse.getResourceId());
PostClientsClientIdTransactionsTransactionIdResponse undoTransactionResponse2 = clientHelper
.undoClientTransactionByTransactionExternalId(clientId, clientChargePaidTransactionExternalId);
assertNotNull(undoTransactionResponse2.getResourceId());
}
}
@@ -638,6 +638,18 @@ public class ClientHelper extends IntegrationTest {
return json;
}
public static String getPayChargeJSONWithExternalId(final String date, String amount, String externalId) {
final HashMap<String, String> map = new HashMap<>();
map.put("locale", "en_GB");
map.put("dateFormat", Utils.DATE_FORMAT);
map.put("transactionDate", date);
map.put("amount", amount);
map.put("externalId", externalId);
String json = GSON.toJson(map);
log.info("{}", json);
return json;
}
public static String getWaiveChargeJSON(final String amount, String clientChargeId) {
final HashMap<String, String> map = new HashMap<>();
map.put("locale", "en_GB");
@@ -752,6 +764,15 @@ public class ClientHelper extends IntegrationTest {
return response.get("transactionId") != null ? response.get("transactionId").toString() : null;
}
public static String payChargesForClientsTransactionExternalId(final RequestSpecification requestSpec,
final ResponseSpecification responseSpec, final Integer clientId, final Integer clientChargeId, final String json) {
log.info("--------------------------------- PAY CHARGES FOR CLIENT --------------------------------");
final String CHARGES_URL = "/fineract-provider/api/v1/clients/" + clientId + "/charges/" + clientChargeId + "?command=paycharge&"
+ Utils.TENANT_IDENTIFIER;
final HashMap<?, ?> response = Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, "");
return response.get("subResourceExternalId") != null ? response.get("subResourceExternalId").toString() : null;
}
public static String waiveChargesForClients(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
final Integer clientId, final Integer clientChargeId, final String json) {
log.info("--------------------------------- WAIVE CHARGES FOR CLIENT --------------------------------");
@@ -795,12 +816,22 @@ public class ClientHelper extends IntegrationTest {
public GetClientsClientIdTransactionsTransactionIdResponse getClientTransactionByExternalId(final String externalId,
final String transactionId) {
return ok(fineract().clientTransactions.retrieveClientTransaction1(externalId, Long.parseLong(transactionId)));
return ok(fineract().clientTransactions.retrieveClientTransaction2(externalId, Long.parseLong(transactionId)));
}
public GetClientsClientIdTransactionsTransactionIdResponse getClientTransactionByTransactionExternalId(final Long clientId,
final String transactionExternalId) {
return ok(fineract().clientTransactions.retrieveClientTransaction1(clientId, transactionExternalId));
}
public PostClientsClientIdTransactionsTransactionIdResponse undoClientTransactionByExternalId(final String externalId,
final String transactionId) {
return ok(fineract().clientTransactions.undoClientTransaction1(externalId, Long.parseLong(transactionId), "undo"));
return ok(fineract().clientTransactions.undoClientTransaction2(externalId, Long.parseLong(transactionId), "undo"));
}
public PostClientsClientIdTransactionsTransactionIdResponse undoClientTransactionByTransactionExternalId(final Long clientId,
final String transactionExternalId) {
return ok(fineract().clientTransactions.undoClientTransaction1(clientId, transactionExternalId, "undo"));
}
public Workbook getClientEntityWorkbook(GlobalEntityType clientsEntity, String dateFormat) throws IOException {