Add null check for the nested data structure (#6479)
* Add null check for the nested data structure * Add unit test for the null nested data
This commit is contained in:
parent
f4d4199183
commit
e2284e4199
|
|
@ -87,8 +87,12 @@ public class WidgetSuggestionHelper {
|
|||
widgetTypeList.add(getWidget(WidgetType.TEXT_WIDGET));
|
||||
} else {
|
||||
String nestedFieldName = objectFields.get(0);
|
||||
collectFieldsFromData(node.get(nestedFieldName).get(0).fields());
|
||||
widgetTypeList = getWidgetsForTypeNestedObject(nestedFieldName);
|
||||
if(node.get(nestedFieldName).size() == 0) {
|
||||
widgetTypeList.add(getWidget(WidgetType.TEXT_WIDGET));
|
||||
} else {
|
||||
collectFieldsFromData(node.get(nestedFieldName).get(0).fields());
|
||||
widgetTypeList = getWidgetsForTypeNestedObject(nestedFieldName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2061,4 +2061,47 @@ public class ActionServiceTest {
|
|||
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithUserDetails(value = "api_user")
|
||||
public void testWidgetSuggestionNestedData() throws JsonProcessingException {
|
||||
|
||||
Mockito.when(pluginExecutorHelper.getPluginExecutor(Mockito.any())).thenReturn(Mono.just(pluginExecutor));
|
||||
ActionExecutionResult mockResult = new ActionExecutionResult();
|
||||
final String data = "{\"data\": {\n" +
|
||||
" \"next\": \"https://mock-api.appsmith.com/users?page=2&pageSize=10\",\n" +
|
||||
" \"previous\": null,\n" +
|
||||
" \"users\": []\n" +
|
||||
"}}";
|
||||
final JsonNode arrNode = new ObjectMapper().readTree(data).get("data");;
|
||||
|
||||
mockResult.setIsExecutionSuccess(true);
|
||||
mockResult.setBody(arrNode);
|
||||
mockResult.setStatusCode("200");
|
||||
mockResult.setHeaders(objectMapper.valueToTree(Map.of("response-header-key", "response-header-value")));
|
||||
mockResult.setDataTypes(List.of(new ParsedDataType(DisplayDataType.RAW)));
|
||||
|
||||
List<WidgetSuggestionDTO> widgetTypeList = new ArrayList<>();
|
||||
widgetTypeList.add(WidgetSuggestionHelper.getWidgetNestedData(WidgetType.TEXT_WIDGET,"users"));
|
||||
mockResult.setSuggestedWidgets(widgetTypeList);
|
||||
|
||||
ActionDTO action = new ActionDTO();
|
||||
ActionConfiguration actionConfiguration = new ActionConfiguration();
|
||||
actionConfiguration.setHttpMethod(HttpMethod.POST);
|
||||
actionConfiguration.setBody("random-request-body");
|
||||
actionConfiguration.setHeaders(List.of(new Property("random-header-key", "random-header-value")));
|
||||
action.setActionConfiguration(actionConfiguration);
|
||||
action.setPageId(testPage.getId());
|
||||
action.setName("testActionExecute");
|
||||
action.setDatasource(datasource);
|
||||
ActionDTO createdAction = layoutActionService.createAction(action).block();
|
||||
|
||||
ExecuteActionDTO executeActionDTO = new ExecuteActionDTO();
|
||||
executeActionDTO.setActionId(createdAction.getId());
|
||||
executeActionDTO.setViewMode(false);
|
||||
|
||||
executeAndAssertAction(executeActionDTO, actionConfiguration, mockResult,
|
||||
List.of(new ParsedDataType(DisplayDataType.RAW)));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user