Skip to content

Commit

Permalink
Updated quo_label() calls to as_label(), close #10.
Browse files Browse the repository at this point in the history
* Changed helper function names accordingly
* Changed expectation messages to include backticks as necessary
  • Loading branch information
gorcha committed Apr 10, 2020
1 parent 09a8cbc commit 9f3ef72
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 70 deletions.
2 changes: 1 addition & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Type: Package
Package: testdat
Title: Data Unit Testing for R
Version: 0.1.0.9000
Version: 0.1.0.9001
Authors@R:
c(person(given = "Danny",
family = "Smith",
Expand Down
2 changes: 2 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

* Added >= 0.8.0 dplyr version dependency (#2).

* All calls to `quo_label()` now use `as_label()` instead as recommended by rlang (#10). This may cause minor changes to printing of test results.

# testdat 0.1.0

Initial release.
Expand Down
16 changes: 8 additions & 8 deletions R/expect-conditional.R
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@ NULL
expect_base <- function(var, base, miss = getOption("testdat.miss"), missing_valid = FALSE, data = get_testdata()) {
act <- quasi_label(enquo(data))

act$var_desc <- quo_label(ensym(var))
act$var_desc <- as_label(ensym(var))
act$var <- as_name(ensym(var))

base <- enquo(base)
act$base_desc <- quo_label(base)
act$base_desc <- as_label(base)
act$base <- act$val %>% transmute(!!base) %>% pull(1)
act$base[is.na(act$base)] <- FALSE

Expand All @@ -36,9 +36,9 @@ expect_base <- function(var, base, miss = getOption("testdat.miss"), missing_val

expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has a base mismatch in variable {act$var_desc}.
{sum(act$miss)} cases have {act$base_desc} but {act$var_desc} is missing.
{sum(act$nmiss)} cases do not have {act$base_desc} but {act$var_desc} is non missing."),
glue("{act$lab} has a base mismatch in variable `{act$var_desc}`.
{sum(act$miss)} cases have `{act$base_desc}` but `{act$var_desc}` is missing.
{sum(act$nmiss)} cases do not have `{act$base_desc}` but `{act$var_desc}` is non missing."),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result)),
var_desc = act$var,
Expand All @@ -56,12 +56,12 @@ expect_cond <- function(cond1, cond2, data = get_testdata()) {
act <- quasi_label(enquo(data))

cond1 <- enquo(cond1)
act$cond1_desc <- quo_label(cond1)
act$cond1_desc <- as_label(cond1)
act$cond1 <- act$val %>% transmute(!!cond1) %>% pull(1)
act$cond1[is.na(act$cond1)] <- FALSE

cond2 <- enquo(cond2)
act$cond2_desc <- quo_label(cond2)
act$cond2_desc <- as_label(cond2)
act$cond2 <- act$val %>% transmute(!!cond2) %>% pull(1)
act$cond2[is.na(act$cond2)] <- FALSE

Expand All @@ -70,7 +70,7 @@ expect_cond <- function(cond1, cond2, data = get_testdata()) {
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} failed consistency check. {sum(!act$result, na.rm = TRUE)} \\
cases have {act$cond1_desc} but not {act$cond2_desc}."),
cases have `{act$cond1_desc}` but not `{act$cond2_desc}`."),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result)),
result = act$result
Expand Down
40 changes: 20 additions & 20 deletions R/expect-datacomp.R
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ NULL
expect_similar <- function(var, data2, var2, flt = TRUE, flt2 = flt,
threshold = 0.05, min = 100, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(var))
act$data2_desc <- quo_label(enquo(data2))
act$var2_desc <- quo_label_vars(enquo(var2))
act$flt_desc <- quo_label_flt(enquo(flt))
act$flt2_desc <- quo_label_flt(enquo(flt2))
act$var_desc <- as_label_vars(enquo(var))
act$data2_desc <- as_label(enquo(data2))
act$var2_desc <- as_label_vars(enquo(var2))
act$flt_desc <- as_label_flt(enquo(flt))
act$flt2_desc <- as_label_flt(enquo(flt2))

var <- enquo(var)
var2 <- enquo(var2)
data_tb <- data %>% group_by(!!var) %>% summarise(freq = n())
data2_tb <- data2 %>% group_by(!!var2) %>% summarise(freq = n())

by_var <- structure(quo_text(var), names = quo_text(var2))
by_var <- structure(as_name(var), names = as_name(var2))
act$result <-
left_join(data_tb, data2_tb, by = by_var) %>%
mutate(prop_diff = abs(.data$freq.x - .data$freq.y) / .data$freq.x,
Expand All @@ -43,7 +43,7 @@ expect_similar <- function(var, data2, var2, flt = TRUE, flt2 = flt,
all(act$result$pass, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result$pass, na.rm = TRUE)} \\
values breaking the {threshold} similarity threshold for variable \\
{act$var_desc}
`{act$var_desc}`
Values: {glue::collapse(act$result %>% filter(!pass) %>% pull(!!var), ', ')}
Filter: {act$flt_desc}"),
table = act$result
Expand All @@ -57,7 +57,7 @@ expect_similar <- function(var, data2, var2, flt = TRUE, flt2 = flt,
# #' @rdname datacomp-expectations
expect_labels_identical <- function(data2, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$data2_desc <- quo_label(enquo(data2))
act$data2_desc <- as_label(enquo(data2))

act$result <- FALSE

Expand All @@ -75,10 +75,10 @@ expect_labels_identical <- function(data2, data = get_testdata()) {
#' @rdname datacomp-expectations
expect_valmatch <- function(data2, vars, by, not = FALSE, flt = TRUE, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$data2_desc <- quo_label(enquo(data2))
act$flt_desc <- quo_label_flt(enquo(flt))
act$by_desc <- quo_label_repl(enquo(by), "(^`c\\()|(\\)`$)", "`")
act$var_desc <- as_label_vars(enquo(vars))
act$data2_desc <- as_label(enquo(data2))
act$flt_desc <- as_label_flt(enquo(flt))
act$by_desc <- as_label_repl(enquo(by), "(^c\\()|(\\)$)", "")

var_list <- vars_select(tbl_vars(data), !!!vars) %>% unname

Expand Down Expand Up @@ -106,14 +106,14 @@ expect_valmatch <- function(data2, vars, by, not = FALSE, flt = TRUE, data = get

expect_custom(
all(act$result, na.rm = TRUE),
glue("The join of {act$lab} and {act$data2_desc} by {act$by_desc} has \\
glue("The join of {act$lab} and `{act$data2_desc}` by `{act$by_desc}` has \\
{sum(!act$result, na.rm = TRUE)} records with a mismatch on \\
variables {act$var_desc}.
variables `{act$var_desc}`.
Filter: {act$flt_desc}
Comparison: {comp}"),
Comparison: `{comp}`"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result))
)
)

invisible(act$result)
}
Expand All @@ -122,9 +122,9 @@ expect_valmatch <- function(data2, vars, by, not = FALSE, flt = TRUE, data = get
#' @rdname datacomp-expectations
expect_join <- function(data2, by = NULL, not = FALSE, flt = TRUE, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$data2_desc <- quo_label(enquo(data2))
act$flt_desc <- quo_label_flt(enquo(flt))
act$var_desc <- as_label_vars(enquo(vars))
act$data2_desc <- as_label(enquo(data2))
act$flt_desc <- as_label_flt(enquo(flt))

flt <- enquo(flt)

Expand All @@ -143,7 +143,7 @@ expect_join <- function(data2, by = NULL, not = FALSE, flt = TRUE, data = get_te
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} records that\\
{ifelse(not, '', ' do not')} exist in dataset {act$data2_desc}.
{ifelse(not, '', ' do not')} exist in dataset `{act$data2_desc}`.
Filter: {act$flt_desc}"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result))
Expand Down
12 changes: 6 additions & 6 deletions R/expect-generic.R
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ expect_allany <- function(vars, func, flt = TRUE, data = get_testdata(),
allany = c(chk_filter_all, chk_filter_any),
func_desc = NULL) {
act <- quasi_label(enquo(data))
act$func_desc <- if (is.null(func_desc)) quo_label(enquo(func)) else func_desc
act$var_desc <- quo_label_vars(enquo(vars))
act$flt_desc <- quo_label_flt(enquo(flt))
act$args_desc <- quo_label_repl(args, "(^`list\\()|(\\)`$)", "`")
act$func_desc <- if (is.null(func_desc)) paste0("`", as_label(enquo(func)), "`") else func_desc
act$var_desc <- as_label_vars(enquo(vars))
act$flt_desc <- as_label_flt(enquo(flt))
act$args_desc <- as_label_repl(args, "(^list\\()|(\\)$)", "")
# act$args_desc <- lapply(args, as_label) %>% paste0(collapse = ", ")

act$result <- allany(eval_tidy(enquo(data)),
Expand All @@ -38,9 +38,9 @@ expect_allany <- function(vars, func, flt = TRUE, data = get_testdata(),
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} records failing \\
{act$func_desc} on variable {act$var_desc}.
{act$func_desc} on variable `{act$var_desc}`.
Filter: {act$flt_desc}
Arguments: {act$args_desc}"),
Arguments: `{act$args_desc}`"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result)),
var_desc = act$var_desc,
Expand Down
51 changes: 26 additions & 25 deletions R/expect-value.R
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ NULL
expect_values <- function(var, ..., miss = getOption("testdat.miss"), data = get_testdata()) {
act <- quasi_label(enquo(data))

act$var_desc <- quo_label(ensym(var))
act$var_desc <- as_label(ensym(var))
act$var <- as_name(ensym(var))
act$vals_desc <- lapply(enexprs(...), quo_text)
act$vals_desc <- paste0("`", paste0(act$vals_desc, collapse = ", "), "`")
act$vals_desc <- lapply(enexprs(...), as_label)
act$vals_desc <- paste0(act$vals_desc, collapse = ", ")
act$result <- act$val[[act$var]] %in% c(unlist(list(...)), miss)

expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has invalid values in variable {act$var_desc}. \\
{sum(!act$result, na.rm = TRUE)} cases have values other than {act$vals_desc}."),
data = list(table(act$val[[act$var]][!act$val[[act$var]] %in% unlist(list(...))])),
glue("{act$lab} has invalid values in variable `{act$var_desc}`. \\
{sum(!act$result, na.rm = TRUE)} cases have values other than `{act$vals_desc}`."),
data = list(table(act$val[[act$var]][!act$result], useNA = "ifany")),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result)),
var_desc = act$var,
Expand Down Expand Up @@ -56,18 +56,19 @@ expect_range <- expect_make(
#' @param exc_val The value to check for exclusivity (default: `1`)
expect_exclusive <- function(vars, exc_vars, exc_val = 1, flt = TRUE, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$exc_var_desc <- quo_label_vars(enquo(exc_vars))
act$exc_val_desc <- quo_label(enquo(exc_val))
act$flt_desc <- quo_label_flt(enquo(flt))
act$var_desc <- as_label_vars(enquo(vars))
act$exc_var_desc <- as_label_vars(enquo(exc_vars))
act$exc_val_desc <- as_label(enquo(exc_val))
act$flt_desc <- as_label_flt(enquo(flt))

vars_list <- vars_select(tbl_vars(data), !!!vars) %>% unname
exc_list <- vars_select(tbl_vars(data), !!!exc_vars) %>% unname

if (any(!vars_list %in% exc_list)) {
exc_vars <- c(exc_vars, vars)
warning("Some variables in vars ", act$var_desc, " do not exist in exc_vars ",
act$exc_var_desc, ". Variable lists will be combined.",
warning("Some variables in `vars(", act$var_desc, ")` do not exist in ",
"exc_vars `vars(", act$exc_var_desc, ")`. ",
"Variable lists will be combined.",
call. = FALSE)
}

Expand Down Expand Up @@ -95,12 +96,12 @@ expect_exclusive <- function(vars, exc_vars, exc_val = 1, flt = TRUE, data = get
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} records with \\
non-exclusive values in variables {act$var_desc} in variable set \\
{act$exc_var_desc}.
non-exclusive values in variables `{act$var_desc}` in variable set \\
`{act$exc_var_desc}`.
Filter: {act$flt_desc}"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result))
)
)

invisible(act$result)
}
Expand All @@ -110,8 +111,8 @@ expect_exclusive <- function(vars, exc_vars, exc_val = 1, flt = TRUE, data = get
#' @rdname value-expectations
expect_unique <- function(vars, flt = TRUE, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$flt_desc <- quo_label_flt(enquo(flt))
act$var_desc <- as_label_vars(enquo(vars))
act$flt_desc <- as_label_flt(enquo(flt))

flt <- enquo(flt)
act$result_data <- data %>%
Expand All @@ -129,7 +130,7 @@ expect_unique <- function(vars, flt = TRUE, data = get_testdata()) {
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} duplicate records \\
on variable {act$var_desc}.
on variable `{act$var_desc}`.
Filter: {act$flt_desc}"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result)),
Expand All @@ -143,8 +144,8 @@ expect_unique <- function(vars, flt = TRUE, data = get_testdata()) {
#' @rdname value-expectations
expect_unique_across <- function(vars, flt = TRUE, data = get_testdata()) {
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$flt_desc <- quo_label_flt(enquo(flt))
act$var_desc <- as_label_vars(enquo(vars))
act$flt_desc <- as_label_flt(enquo(flt))

flt <- enquo(flt)
act$result <- data %>%
Expand All @@ -155,7 +156,7 @@ expect_unique_across <- function(vars, flt = TRUE, data = get_testdata()) {
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} records with \\
duplicates across variables {act$var_desc}.
duplicates across variables `{act$var_desc}`.
Filter: {act$flt_desc}"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result))
Expand All @@ -171,8 +172,8 @@ expect_unique_across <- function(vars, flt = TRUE, data = get_testdata()) {
expect_unique_combine <- function(vars, flt = TRUE, data = get_testdata()) {
browser()
act <- quasi_label(enquo(data))
act$var_desc <- quo_label_vars(enquo(vars))
act$flt_desc <- quo_label_flt(enquo(flt))
act$var_desc <- as_label_vars(enquo(vars))
act$flt_desc <- as_label_flt(enquo(flt))

flt <- enquo(flt)
act$result <- data %>%
Expand All @@ -182,11 +183,11 @@ expect_unique_combine <- function(vars, flt = TRUE, data = get_testdata()) {
expect_custom(
all(act$result, na.rm = TRUE),
glue("{act$lab} has {sum(!act$result, na.rm = TRUE)} records with \\
duplicates across variables {act$var_desc}.
duplicates across variables `{act$var_desc}`.
Filter: {act$flt_desc}"),
failed_count = sum(!act$result, na.rm = TRUE),
total_count = sum(!is.na(act$result))
)
)

invisible(act$result)
}
20 changes: 10 additions & 10 deletions R/expectation.R
Original file line number Diff line number Diff line change
Expand Up @@ -91,19 +91,19 @@ filter_expect <- function(data, expect_function, ..., not = TRUE) {

# labelling helpers ----

#' @importFrom stringr str_replace_all
quasi_repl <- function(quo, pattern = NULL, replace = "", label = TRUE) {
desc <- quo_label(quo)
if (!is.null(pattern)) desc <- str_replace_all(desc, pattern, replace)
desc
as_label_repl <- function(quo, pattern, replace = "") {
stringr::str_replace_all(as_label(quo), pattern, replace)
}

quo_label_repl <- function(quo, pattern, replace = "") {
str_replace_all(quo_label(quo), pattern, replace)
}
as_label_vars <- function(quo) as_label_repl(quo, "(^vars\\()|(\\)$)", "")

quo_label_vars <- function(quo) quo_label_repl(quo, "(^`vars\\()|(\\)`$)", "`")
quo_label_flt <- function(quo) quo_label_repl(quo, "^TRUE$", "None")
as_label_flt <- function(quo) {
quo_lab <- as_label(quo)
if (quo_lab == "TRUE")
"None"
else
paste0("`", quo_lab, "`")
}

# expectation_type ----

Expand Down

0 comments on commit 9f3ef72

Please sign in to comment.