test_that("px_save basic functionality", { x <- px(get_data_path("BEXSTA")) # Runs without errors px_save(x, temp_xlsx_file()) px_save(x, temp_px_file()) px_save(x, temp_r_file()) px(population_gl) |> px_save(path = temp_r_file(), data_path = temp_rds_file()) px(population_gl) |> px_save(path = temp_r_file(), data_path = temp_parquet_file()) expect_error(px_save(x), regexp = 'argument "path" is missing') expect_error(px_save(x, temp_rds_file()), regexp = "Argument 'path'") }) test_that("px_save save_data and data_path arguments works", { df <- readRDS(get_data_path("BEXLTALL")) set.seed(1) df_large <- purrr::map(1:20, ~df) |> dplyr::bind_rows() |> dplyr::ungroup() |> dplyr::mutate( row_number = dplyr::row_number() ) |> # add to avoid duplicated data dplyr::relocate(row_number) x <- px(df) x$data <- df_large expect_error(px_save(x, temp_xlsx_file()), regexp = "too many rows") temp_xlsx <- temp_xlsx_file() px_save(x = x, path = temp_xlsx, save_data = FALSE) expect_true(!excel_sheet_exists("Data", temp_xlsx)) expect_error(px_save(x = x, path = temp_px_file(), save_data = FALSE), regexp = "'save_data' can only be" ) expect_error( px_save( x = x, path = temp_xlsx_file(), save_data = FALSE, data_path = temp_rds_file() ), regexp = "'data_path' can only be used if 'save_data' is TRUE" ) expect_error( px_save(x = x, path = temp_px_file(), data_path = temp_rds_file()), regexp = "'data_path' can only be used if 'path' is an .xlsx or .R file" ) expect_error( px_save(x = x, path = temp_xlsx_file(), data_path = temp_px_file()), regexp = "'data_path' must be a path to an .rds or .parquet file" ) expect_error(px_save(x = x, path = temp_xlsx_file(), save_data = "maybe"), regexp = "'save_data' must be TRUE or FALSE" ) temp_rds <- temp_rds_file() px_save(x = x, path = temp_xlsx_file(), data_path = temp_rds) expect_true(!excel_sheet_exists("Data", temp_xlsx)) expect_identical(x$data, readRDS(temp_rds)) })