FINERACT-1856: Fix to update datatable entry is failing after column added lately
This commit is contained in:
committed by
Adam Saghy
parent
894ff15aec
commit
09a91bba01
+7
-1
@@ -2059,7 +2059,13 @@ public class ReadWriteNonCoreDataServiceImpl implements ReadWriteNonCoreDataServ
|
||||
sql += sqlGenerator.escape(key) + " = " + pValueWrite;
|
||||
} else {
|
||||
if (key.equalsIgnoreCase(DataTableApiConstant.UPDATEDAT_FIELD_NAME)) {
|
||||
sql += ", " + sqlGenerator.escape(key) + " = " + sqlGenerator.currentTenantDateTime();
|
||||
if (firstColumn) {
|
||||
sql += " set ";
|
||||
firstColumn = false;
|
||||
} else {
|
||||
sql += ", ";
|
||||
}
|
||||
sql += sqlGenerator.escape(key) + " = " + sqlGenerator.currentTenantDateTime();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+93
@@ -41,7 +41,10 @@ import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.apache.fineract.client.models.PostDataTablesAppTableIdResponse;
|
||||
import org.apache.fineract.client.models.PostDataTablesResponse;
|
||||
import org.apache.fineract.client.models.PutDataTablesAppTableIdDatatableIdResponse;
|
||||
import org.apache.fineract.client.models.PutDataTablesResponse;
|
||||
import org.apache.fineract.client.util.Calls;
|
||||
import org.apache.fineract.integrationtests.client.IntegrationTest;
|
||||
import org.apache.fineract.integrationtests.common.ClientHelper;
|
||||
@@ -61,6 +64,7 @@ public class DatatableIntegrationTest extends IntegrationTest {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(DatatableIntegrationTest.class);
|
||||
|
||||
private static final String CLIENT_APP_TABLE_NAME = "m_client";
|
||||
private static final String CLIENT_PERSON_SUBTYPE_NAME = "Person";
|
||||
private static final String LOAN_APP_TABLE_NAME = "m_loan";
|
||||
|
||||
private static final Float LP_PRINCIPAL = 10000.0f;
|
||||
@@ -426,6 +430,95 @@ public class DatatableIntegrationTest extends IntegrationTest {
|
||||
assertEquals(0, updatedDatatableEntryResponse.getChanges().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateCreateAndEditDatatable() {
|
||||
// Creating client
|
||||
final Integer clientId = ClientHelper.createClientAsPerson(requestSpec, responseSpec);
|
||||
final Integer randomNumber = Utils.randomNumberGenerator(3);
|
||||
|
||||
// Creating datatable for Client Person
|
||||
final String datatableName = Utils.randomNameGenerator(CLIENT_APP_TABLE_NAME + "_", 5);
|
||||
final boolean genericResultSet = true;
|
||||
|
||||
HashMap<String, Object> columnMap = new HashMap<>();
|
||||
List<HashMap<String, Object>> datatableColumnsList = new ArrayList<>();
|
||||
columnMap.put("datatableName", datatableName);
|
||||
columnMap.put("apptableName", CLIENT_APP_TABLE_NAME);
|
||||
columnMap.put("entitySubType", CLIENT_PERSON_SUBTYPE_NAME);
|
||||
columnMap.put("multiRow", false);
|
||||
DatatableHelper.addDatatableColumns(datatableColumnsList, "itsANumber", "Number", false, null, null);
|
||||
DatatableHelper.addDatatableColumns(datatableColumnsList, "itsAString", "String", false, 10, null);
|
||||
columnMap.put("columns", datatableColumnsList);
|
||||
String datatabelRequestJsonString = new Gson().toJson(columnMap);
|
||||
LOG.info("map : {}", datatabelRequestJsonString);
|
||||
|
||||
PostDataTablesResponse datatableCreateResponse = this.datatableHelper.createDatatable(datatabelRequestJsonString);
|
||||
assertEquals(datatableName, datatableCreateResponse.getResourceIdentifier());
|
||||
DatatableHelper.verifyDatatableCreatedOnServer(this.requestSpec, this.responseSpec, datatableName);
|
||||
|
||||
// Insert first values
|
||||
final String value = Utils.randomStringGenerator("Q", 8);
|
||||
HashMap<String, Object> datatableEntryMap = new HashMap<>();
|
||||
datatableEntryMap.put("itsANumber", randomNumber);
|
||||
datatableEntryMap.put("itsAString", value);
|
||||
|
||||
datatableEntryMap.put("locale", "en");
|
||||
datatableEntryMap.put("dateFormat", "yyyy-MM-dd");
|
||||
|
||||
String datatableEntryRequestJsonString = new GsonBuilder().serializeNulls().create().toJson(datatableEntryMap);
|
||||
PostDataTablesAppTableIdResponse datatableEntryResponse = this.datatableHelper.addDatatableEntry(datatableName, clientId,
|
||||
genericResultSet, datatableEntryRequestJsonString);
|
||||
assertNotNull(datatableEntryResponse.getResourceId(), "ERROR IN CREATING THE ENTITY DATATABLE RECORD");
|
||||
|
||||
// Read the Datatable entry generated with genericResultSet in true (default)
|
||||
HashMap<String, Object> items = this.datatableHelper.readDatatableEntry(datatableName, clientId, genericResultSet, null, "");
|
||||
assertNotNull(items);
|
||||
assertEquals(1, ((List) items.get("data")).size());
|
||||
LOG.info("Record created at {}", ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(3));
|
||||
LOG.info("Record updated at {}", ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(4));
|
||||
|
||||
assertEquals(clientId, ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(0));
|
||||
assertEquals(value, ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(2));
|
||||
|
||||
// Update DataTable
|
||||
columnMap = new HashMap<>();
|
||||
columnMap.put("apptableName", CLIENT_APP_TABLE_NAME);
|
||||
columnMap.put("entitySubType", CLIENT_PERSON_SUBTYPE_NAME);
|
||||
datatableColumnsList = new ArrayList<>();
|
||||
DatatableHelper.addDatatableColumns(datatableColumnsList, "itsAText", "Text", false, null, null);
|
||||
columnMap.put("addColumns", datatableColumnsList);
|
||||
datatabelRequestJsonString = new Gson().toJson(columnMap);
|
||||
LOG.info("map to update : {}", datatabelRequestJsonString);
|
||||
PutDataTablesResponse datatableUpdateResponse = this.datatableHelper.updateDatatable(datatableName, datatabelRequestJsonString);
|
||||
assertNotNull(datatableUpdateResponse);
|
||||
assertEquals(datatableName, datatableUpdateResponse.getResourceIdentifier());
|
||||
|
||||
// Update DataTable Entry after Update DataTable schema
|
||||
datatableEntryMap = new HashMap<>();
|
||||
final String textValue = Utils.randomStringGenerator(value, 120);
|
||||
datatableEntryMap.put("itsAText", textValue);
|
||||
datatableEntryMap.put("locale", "en");
|
||||
datatableEntryMap.put("dateFormat", "yyyy-MM-dd");
|
||||
|
||||
datatableEntryRequestJsonString = new GsonBuilder().serializeNulls().create().toJson(datatableEntryMap);
|
||||
LOG.info("map to update : {}", datatableEntryRequestJsonString);
|
||||
PutDataTablesAppTableIdDatatableIdResponse updatedDatatableEntryResponse = this.datatableHelper.updateDatatableEntry(datatableName,
|
||||
clientId, datatableEntryRequestJsonString);
|
||||
assertNotNull(updatedDatatableEntryResponse);
|
||||
assertEquals(1, updatedDatatableEntryResponse.getChanges().size());
|
||||
|
||||
// Read the Datatable entry generated with genericResultSet in true (default)
|
||||
items = this.datatableHelper.readDatatableEntry(datatableName, clientId, genericResultSet, null, "");
|
||||
assertNotNull(items);
|
||||
assertEquals(1, ((List) items.get("data")).size());
|
||||
LOG.info("Record created at {}", ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(3));
|
||||
LOG.info("Record updated at {}", ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(4));
|
||||
|
||||
assertEquals(clientId, ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(0));
|
||||
assertEquals(value, ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(2));
|
||||
assertEquals(textValue, ((List) ((Map) ((List) items.get("data")).get(0)).get("row")).get(5));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateReadDatatableMultirow() {
|
||||
// Fetch / Create TST code
|
||||
|
||||
+27
@@ -31,6 +31,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import org.apache.fineract.client.models.GetDataTablesResponse;
|
||||
import org.apache.fineract.client.models.PostDataTablesAppTableIdResponse;
|
||||
import org.apache.fineract.client.models.PostDataTablesRequest;
|
||||
import org.apache.fineract.client.models.PostDataTablesResponse;
|
||||
import org.apache.fineract.client.models.PutDataTablesAppTableIdDatatableIdResponse;
|
||||
@@ -73,6 +74,13 @@ public class DatatableHelper extends IntegrationTest {
|
||||
+ "?genericResultSet=" + genericResultSet + "&" + Utils.TENANT_IDENTIFIER, json, "");
|
||||
}
|
||||
|
||||
public PostDataTablesAppTableIdResponse addDatatableEntry(final String datatableName, final Integer apptableId,
|
||||
final boolean genericResultSet, final String json) {
|
||||
final String response = Utils.performServerPost(this.requestSpec, this.responseSpec, DATATABLE_URL + "/" + datatableName + "/"
|
||||
+ apptableId + "?genericResultSet=" + genericResultSet + "&" + Utils.TENANT_IDENTIFIER, json);
|
||||
return GSON.fromJson(response, PostDataTablesAppTableIdResponse.class);
|
||||
}
|
||||
|
||||
public <T> T updateDatatableEntry(final String datatableName, final Integer apptableId, final boolean genericResultSet,
|
||||
final String json) {
|
||||
return Utils.performServerPut(this.requestSpec, this.responseSpec, DATATABLE_URL + "/" + datatableName + "/" + apptableId
|
||||
@@ -92,6 +100,13 @@ public class DatatableHelper extends IntegrationTest {
|
||||
return GSON.fromJson(response, PutDataTablesAppTableIdDatatableIdResponse.class);
|
||||
}
|
||||
|
||||
public PutDataTablesAppTableIdDatatableIdResponse updateDatatableEntry(final String datatableName, final Integer apptableId,
|
||||
final String json) {
|
||||
final String response = Utils.performServerPut(this.requestSpec, this.responseSpec,
|
||||
DATATABLE_URL + "/" + datatableName + "/" + apptableId + "?genericResultSet=false&" + Utils.TENANT_IDENTIFIER, json, null);
|
||||
return GSON.fromJson(response, PutDataTablesAppTableIdDatatableIdResponse.class);
|
||||
}
|
||||
|
||||
public Integer createDatatableEntry(final String apptableName, final String datatableName, final Integer apptableId,
|
||||
final boolean genericResultSet, final String dateFormat, final String jsonAttributeToGetBack) {
|
||||
return Utils.performServerPost(
|
||||
@@ -253,4 +268,16 @@ public class DatatableHelper extends IntegrationTest {
|
||||
return ok(fineract().dataTables.updateDatatable(dataTableName, request));
|
||||
}
|
||||
|
||||
public PostDataTablesResponse createDatatable(final String json) {
|
||||
final String response = Utils.performServerPost(this.requestSpec, this.responseSpec, DATATABLE_URL + "?" + Utils.TENANT_IDENTIFIER,
|
||||
json);
|
||||
return GSON.fromJson(response, PostDataTablesResponse.class);
|
||||
}
|
||||
|
||||
public PutDataTablesResponse updateDatatable(String dataTableName, final String json) {
|
||||
final String response = Utils.performServerPut(this.requestSpec, this.responseSpec,
|
||||
DATATABLE_URL + "/" + dataTableName + "?" + Utils.TENANT_IDENTIFIER, json);
|
||||
return GSON.fromJson(response, PutDataTablesResponse.class);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user