From 10b5d9c89ca846ce69941fd005eb9be887e827ea Mon Sep 17 00:00:00 2001 From: Hines Date: Fri, 22 Feb 2019 13:59:55 -0600 Subject: [PATCH 1/2] handle check for data.frame differently so as not to falsely flag them as not valid --- R/utils-validation.R | 66 +++++++++++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/R/utils-validation.R b/R/utils-validation.R index 1a07d4e6..d7151377 100644 --- a/R/utils-validation.R +++ b/R/utils-validation.R @@ -186,31 +186,59 @@ validateFetchedData <- function(data, name, requiredFields, stopNull=TRUE, stopM stop(paste("Data for: '", name, "' was not found in report JSON.")) } } - - #Check for required fields - if(!isEmptyOrBlank(data) && !isEmptyOrBlank(requiredFields)){ - missingFields <- checkRequiredFields(data, requiredFields) - - if(!isEmptyOrBlank(missingFields)){ - if(!stopMissing){ - warning(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + + if(class(data) == "data.frame") { + #Check for required fields + if(length(data)>0 && !isEmptyOrBlank(requiredFields)){ + missingFields <- checkRequiredFields(data, requiredFields) + + if(!isEmptyOrBlank(missingFields)){ + if(!stopMissing){ + warning(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + return(FALSE) + } else { + stop(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + } + } + } + + #Check for valid but empty data + if((class(data) != "list" && length(data)==0) || (class(data) == "list" && length(data) == 0)){ + if(!stopEmpty){ + warning(paste("Data was retrieved for: '", name, "' but it is empty.")) return(FALSE) } else { - stop(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + stop(paste("Data was retrieved for: '", name, "' but it is empty.")) } } - } - - #Check for valid but empty data - if((class(data) != "list" && isEmptyOrBlank(data)) || (class(data) == "list" && length(data) == 0)){ - if(!stopEmpty){ - warning(paste("Data was retrieved for: '", name, "' but it is empty.")) - return(FALSE) - } else { - stop(paste("Data was retrieved for: '", name, "' but it is empty.")) + + } else { + + #Check for required fields + if(!isEmptyOrBlank(data) && !isEmptyOrBlank(requiredFields)){ + missingFields <- checkRequiredFields(data, requiredFields) + + if(!isEmptyOrBlank(missingFields)){ + if(!stopMissing){ + warning(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + return(FALSE) + } else { + stop(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) + } + } + } + + #Check for valid but empty data + if((class(data) != "list" && isEmptyOrBlank(data)) || (class(data) == "list" && length(data) == 0)){ + if(!stopEmpty){ + warning(paste("Data was retrieved for: '", name, "' but it is empty.")) + return(FALSE) + } else { + stop(paste("Data was retrieved for: '", name, "' but it is empty.")) + } } } - + return(TRUE) } From d76470eea863b0b98fb639355afdc41bbeaf6352 Mon Sep 17 00:00:00 2001 From: Hines Date: Mon, 25 Feb 2019 10:16:49 -0600 Subject: [PATCH 2/2] Modify logic to be less redundant --- R/utils-validation.R | 33 +++------------------------------ 1 file changed, 3 insertions(+), 30 deletions(-) diff --git a/R/utils-validation.R b/R/utils-validation.R index d7151377..f51d00a9 100644 --- a/R/utils-validation.R +++ b/R/utils-validation.R @@ -177,6 +177,7 @@ checkRequiredFields <- function(data, requiredFields){ #' @param stopEmpty (optional - default = TRUE) whether or not the function should #' throw an error if the data is present but empty. validateFetchedData <- function(data, name, requiredFields, stopNull=TRUE, stopMissing=TRUE, stopEmpty=TRUE){ + #If data not found, error if(is.null(data)){ if(!stopNull){ @@ -187,35 +188,8 @@ validateFetchedData <- function(data, name, requiredFields, stopNull=TRUE, stopM } } - if(class(data) == "data.frame") { - #Check for required fields - if(length(data)>0 && !isEmptyOrBlank(requiredFields)){ - missingFields <- checkRequiredFields(data, requiredFields) - - if(!isEmptyOrBlank(missingFields)){ - if(!stopMissing){ - warning(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) - return(FALSE) - } else { - stop(paste("Data retrieved for: '", name, "' is missing required fields: {", paste(missingFields, collapse=', '), "}.")) - } - } - } - - #Check for valid but empty data - if((class(data) != "list" && length(data)==0) || (class(data) == "list" && length(data) == 0)){ - if(!stopEmpty){ - warning(paste("Data was retrieved for: '", name, "' but it is empty.")) - return(FALSE) - } else { - stop(paste("Data was retrieved for: '", name, "' but it is empty.")) - } - } - - } else { - #Check for required fields - if(!isEmptyOrBlank(data) && !isEmptyOrBlank(requiredFields)){ + if((length(data)>0 || !isEmptyOrBlank(data)) && !isEmptyOrBlank(requiredFields)){ missingFields <- checkRequiredFields(data, requiredFields) if(!isEmptyOrBlank(missingFields)){ @@ -229,7 +203,7 @@ validateFetchedData <- function(data, name, requiredFields, stopNull=TRUE, stopM } #Check for valid but empty data - if((class(data) != "list" && isEmptyOrBlank(data)) || (class(data) == "list" && length(data) == 0)){ + if((class(data) != "list" && length(data)==0 && isEmptyOrBlank(data)) || (class(data) == "list" && length(data) == 0)){ if(!stopEmpty){ warning(paste("Data was retrieved for: '", name, "' but it is empty.")) return(FALSE) @@ -237,7 +211,6 @@ validateFetchedData <- function(data, name, requiredFields, stopNull=TRUE, stopM stop(paste("Data was retrieved for: '", name, "' but it is empty.")) } } - } return(TRUE) }